Damus
Jared Logan profile picture
Jared Logan
@jaredlogan
Building out a nostr-native AI expanding on Dork from @Team Soapbox

https://10vy5d0umw8izp3bcmh0btzl6k2szvsu8zestncxpsstb6l8e6opendork.nsite.lol/

---

FEATURES

Identity & auth
- NIP-07 browser extension
- nsec (with paste guard outside the login field)
- NIP-46 bunker URI
- nostrconnect (QR / remote signer)
- NIP-98 signed requests to Shakespeare AI

AI
- Streaming chat with stop generation
- Model picker with search, grouped by provider
- Shakespeare AI built-in (credits via Nostr; balance chip when selected)
- Custom providers — OpenAI-compatible /v1 APIs + optional CORS proxy
- Provider presets — OpenAI, OpenRouter, Groq, Together, Ollama, OpenCode Go
- Retry / regenerate last assistant turn
- Attachments — paste or drop images (vision) and text/code files
- Nostr context — composer packs: my profile, my recent notes, people, paste note/nevent/naddr/thread
- @mentions — Ditto-style typeahead from follows + NIP-05; auto-fetches profile + recent notes
- Edit message — rewrite a user turn and regenerate from that point
- Fork chat — branch a conversation from any message
- Continue / rewrite presets on assistant turns
- Code blocks — syntax highlight + per-block copy
- Context meter — estimated tokens vs model window under the composer
- Nostr fetch — auto-resolve note / nevent / npub / nprofile / naddr refs into the prompt
- Chat search — ⌘/Ctrl+K full-text search across titles and messages

Workspace
- Recents — freestanding chats outside any project (Claude-style default)
- OpenDork session — app-owned system block (product rules + optional logged-in identity; never nsec)
- Global instructions — Settings → Instructions; injected into every chat
- Projects — optional hub with project instructions, memory, context pack, and chats
- Project hub — Claude-style project page: composer + chat list + right rail (Instructions · Memory · Context)
- Memory — short durable facts injected into every chat in the project (private, sealed with vault)
- Chats — freestanding or under a project; auto-title from first message; move between buckets
- Prompt assembly — session → global → project instructions → memory → budgeted context → thread → Nostr packs/mentions → messages
(freestanding chats use session + global; empty global falls back to a built-in default persona)

History modes
- Local only (default) — IndexedDB on this browser
- Ephemeral — no new writes to disk
- Sync (encrypted) — opt-in publish/pull of a NIP-44 sealed snapshot

Privacy & portability
- Vault encryption — AES-GCM at rest for project names, chat titles, messages, global/project instructions, memory, and context
- Unlock via NIP-44 encrypt-to-self (preferred) or passphrase
- encryptLocal policy honored on every seal write
- Sealed API keys — not stored in plain app-config JSON when vault is active; UI warns if vault is off
- Export / import — plain JSON (with confirm) or passphrase-encrypted bundles (API keys never included)
- Relay sync — addressable kind 39987 (d = opendork-workspace-v1, client/app = opendork), NIP-44 content; requires unlocked vault

---

Repo:

https://nostrhub.io/naddr1qvzqqqrhnypzq2guwhvn0fzlv6sjp8uw5es3ma6y33vmx5n9yrrxegkde5mlr0a7qyd8wumn8ghj7emfwsh8x6rpddjhxur9v9ex2tnyd9uj7qqfdacx2m3dv3hhy6cgr5uum

naddr1qvzq...
2❤️1
Team Soapbox · 3w
Nice!
Fiat Autopsy · 3w
Decentralized identity solutions like NIP-07 undermine fiat's control, mirroring the 1990s' emergence of e-gold, which preceded its 2008 peak and subsequent regulatory crackdown.