sovseal binary ships inside @sovseal/mcp-server — there is no separate CLI package to install or keep in sync. The CLI, the MCP server, the native messaging host, and the SDK are one build reading and writing the same on-device vault at ~/.sovseal, so the CLI can never end up reading a schema a different version wrote.
No account or API key is required. Storing and recalling work entirely offline. Linking an account only adds multi-device sync, team seats, and the audit ledger.
Quick start
Commands
Run
sovseal help <command> for the full flag list of any one of them.
store
Embeds text on-device and writes it to the encrypted LanceDB store. High-risk PII is redacted before the text is embedded or stored, and near-duplicate content reinforces the existing memory instead of creating a second row — so piping the same log twice is safe.
string
Content to remember. Omit it to read from stdin or
--file.path
Read the content from a file instead of an argument.
string
default:"explicit"
How the memory was obtained:
explicit, observed, or synthesized. Recall trusts explicit most.recall
Embeds the query on-device and ranks memories by a composite of cosine similarity, recency decay, and how often the fact has been restated. 0 RTT — the same path the recall_memory MCP tool takes.
integer
default:"5"
Number of results to return (1–20).
number
default:"0"
Drop results below this raw cosine similarity.
boolean
Print each memory in full instead of truncating to one line.
doctor
Runs nine probes in one pass and streams each finding with a concrete fix:
- Node.js runtime version
- Config directory existence and permissions
- Encryption key custody (OS keychain reachable, subkeys derive)
- Project identity
- Local vector store (row count, schema version, replication backlog)
- On-device embedding model
- Chrome native-messaging bridge
- MCP client registration
- Sync endpoint reachability (skip with
--offline)
doctor exits 5 only when a check fails. Warnings — an unregistered browser bridge, an unreachable sync endpoint — leave it at 0, because memory still works local-first. That makes it safe as a CI or post-install gate.open
Jumps straight to a dashboard page instead of making you find the URL:
home, plan, proof, devices, settings, auth, docs.
Use from an AI agent
--json (alias --agent) switches every command to a structured envelope on stdout, with no colour, spinners, or prompts:
--json is accepted before or after the command name, so sovseal --json recall "x" and sovseal recall "x" --json are equivalent.
Exit codes
Exit codes are part of the public surface — scripts branch on them.sovseal login — linking a device
127.0.0.1 and sends you to /connect/cli on the dashboard. The dashboard derives your account master in the browser, derives the deterministic project token (sov_proj_…) from it, and redirects that token back to the local listener.
Your passphrase, account master, and encryption keys never leave the browser — the master is zeroed as soon as the token is derived. Only the project token moves, and it moves over loopback.
sovseal logout clears the token and account fields. Your memories and encryption keys are untouched — recall keeps working offline, replication just stops.
Configuration
sovseal config operates on ~/.sovseal/config.json (mode 0600). Secrets are redacted on read, and only a whitelist of keys is writable — the rest are runtime-owned, and hand-editing them would break your vault.
Guarantees
- No telemetry. The CLI reports nothing, anywhere, and has no flag to disable because there is nothing to disable.
- Secrets are never printed in full — project tokens are redacted in every output mode, including
--json. - Destructive commands refuse to run unattended.
delete --allrequires--force, and a non-interactive shell can never be prompted into a yes. - Fast by default. Commands that do not touch the vector engine (
help,open,config,whoami,version) skip loading it entirely.