
Incognito mode creates ephemeral chat sessions that leave no trace on your device. When active, Memo operates as a stateless chat interface — no writes, no storage, no memory.
When incognito mode is toggled on, the backend enforces three rules for the session:
| Rule | Mechanism |
|---|---|
| No message persistence | Messages are held in-memory only. The session store write path is bypassed entirely. |
| No memory storage | Embedding generation is skipped. No vectors are written to the SQLite vec0 table. |
| No disk writes | All WriteFile calls are routed to /dev/null equivalent. Logs are ephemeral. |
func (a *App) HandleChat(ctx context.Context, msg ChatMessage) error {
if a.incognitoMode {
// Stream response, hold in memory, never persist
return a.streamOnly(ctx, msg)
}
// Normal path: stream + embed + persist
return a.streamAndStore(ctx, msg)
}
Toggle incognito mode from three entry points:
/incognito in the chat inputWhen active, the chat header displays a visual indicator and the input area changes styling to signal the ephemeral state.
| Scenario | Why Incognito |
|---|---|
| Sensitive discussions | Medical, legal, or financial topics you don't want persisted |
| Testing prompts | Experiment with system prompts without cluttering memory |
| Guest use | Let someone use your Memo without accessing your history |
| One-off queries | Quick question that doesn't need to be remembered |
| Model comparison | Compare model outputs on the same prompt without cross-contamination |
| API key testing | Test a new external provider without logging the conversation |
When incognito mode is deactivated:
| Guarantee | Level |
|---|---|
| No message log on disk | Enforced at write-path level |
| No vector embeddings created | Skipped in ingestion pipeline |
| No session metadata stored | Not written to sessions JSON |
| No memory in swap | OS-managed; consider enabling encrypted swap |
| Memory dump (crash) | Message content may appear in core dumps |
Incognito mode prevents intentional persistence but cannot prevent data from appearing in OS swap, core dumps, or RAM snapshots. For highest security, pair incognito mode with full-disk encryption and encrypted swap.
| Aspect | Incognito Mode | Delete Conversation |
|---|---|---|
| Data written to disk | Never | Written, then deleted |
| Vector embeddings | Never created | Created, then removed |
| Recoverable | No | Possibly (until overwritten) |
| Performance | No write overhead | Write + delete overhead |
| Granularity | Per-session | Per-conversation or bulk |