Security & privacy
DeepState is built so that the people running it - us - cannot read your investigations. This page states precisely what leaves your computer, where it goes, and how it is protected, so you can decide what the tool is appropriate for.
The short version
- Your boards live in a local database. There is no DeepState account holding your data.
- Collaboration is end-to-end encrypted with a key only your team has. Our relay stores ciphertext it cannot open.
- AI requests go to the provider you chose. With DeepState AI, they pass through our router, which forwards them and counts tokens but does not store prompts or responses.
- The license server knows your key, a machine identifier and your tier. It never sees board content.
- Research tools contact the sources they research - Wikipedia, X, SEC EDGAR - from your machine directly.
What leaves your machine, and to whom
| Data | Goes to | When | Why |
|---|---|---|---|
| License key, anonymous machine ID, app version | api.getdeepstate.app | Activation; then once a day | Validate the license, provision DeepState AI |
Event name (app_opened, board_created), hash of the license key, platform, version, tier | api.getdeepstate.app | On those events, if analytics is on | Count active installs. No content, titles or names. Off switch in Settings → License |
| Prompts, context nodes, tool results, attached images | Your AI provider (Anthropic, OpenAI, OpenRouter, OpenCode, or your Ollama server) | Every AI turn, summary, feed relevance check | That is what an AI request is |
The same, via router.getdeepstate.app | DeepState AI only | Every AI turn | Forwarded to the model provider; the router records tenant hash, model and token counts for budgeting and does not store the request or response bodies |
| Search queries, URLs, names being looked up | The source: DuckDuckGo/Exa, Wikipedia, X, Reddit, Bluesky, YouTube, OpenStreetMap, SEC, CourtListener, GitHub, archive.org, Library of Congress, ZabaSearch, etc. | When a tool or enrichment runs | Research |
| Encrypted change frames and blobs | The relay you chose, or the shared folder, or a peer on your LAN | While a board is shared | Collaboration |
| Update check: license key, machine ID, current version | api.getdeepstate.app | On launch and every 4 hours | Serve the right update |
Nothing else. In particular DeepState does not send crash reports, telemetry about features used, or any board content to us.
What this means for sensitive work: the AI provider sees whatever you put in front of the assistant. If that is a problem, use Ollama - then nothing about the board leaves the machine except the research tools' outbound queries, which you control by not running them.
Encryption of collaboration
- Each shared board has its own 256-bit key, generated on the device that first shares it and
distributed only inside the invite code (
DS1.…). It is stored in the OS-encrypted secure config. - Every change bundle and media file that leaves a device is encrypted with AES-256-GCM (authenticated encryption: tampered data is rejected, not silently applied). Additional authenticated data binds each ciphertext to its board and, for the relay, to its room, so a frame cannot be replayed into a different board or room.
- Relay: the room ID is
SHA-256("deepstate-relay-room" ‖ key)- derived from the key, so the relay cannot map a room to a board, license or person. Blob names are hashes; file names are inside the ciphertext. - Same network: peers prove possession of the key to each other before any data is exchanged (each encrypts the other's random nonce). Discovery broadcasts only a key fingerprint.
- Shared folder: the header names the board ID and key fingerprint in plain text; everything else is ciphertext.
- Changes files are the exception: plain JSON, for manual handoff. Protect them yourself.
Invite codes are the trust boundary. Anyone with the code has the key; there are no per-person permissions. To revoke someone, stop sharing, which discards the key, and share again with a new code to the people who should remain.
Secrets at rest
API keys, OAuth tokens, social sessions, integration tokens and board keys are encrypted with the operating system credential store (Keychain, DPAPI, libsecret) before being written to disk. They are never included in board exports or changes files, never synced, and not included in backups. See Where data is stored.
What the DeepState servers hold
| Service | Holds |
|---|---|
| License API | License keys, tier, expiry, activation machine IDs and names, the purchaser email from Stripe, download tokens, analytics counts keyed by license hash |
| Router | Per-license router credentials and monthly token usage totals; no request contents |
| Relay | Ciphertext frames for 90 days and encrypted blobs, keyed by room ID; connecting IP addresses in ordinary access logs |
| Website / docs | Ordinary web-server logs |
Payment is handled by Stripe; we never see card numbers.
Third parties the app talks to on your behalf
Research tools and enrichment are requests from your IP to the public sources listed in Research integrations and Social media. Those services see the queries and your IP address, as they would if you visited them in a browser. If that matters, run the app through the VPN or proxy you would use for browsing.
The presentation viewer and exports are self-contained (reveal.js is bundled); the app loads nothing from CDNs and does not use Google Fonts.
Recommendations
- Sensitive investigation, several people: shared board over the relay or LAN, invite code sent over Signal, AI on a paid API key from a provider whose data-retention terms you have read - or Ollama.
- Anything you would not email: don't use changes files or unencrypted exports to move it.
- Rotate invite codes when someone leaves a team.
- Keep backups; the only copy of a solo board is the one on your disk.
- Report a security issue to [email protected].