Reference

CLI reference

Every vault command — synopsis, options, examples.

The vault command is the local control surface for Personify. npm run setup installs it into the repo's .venv; if you are running commands directly, activate that virtualenv first or call the executable inside .venv/Scripts on Windows. Run vault --help for live help.

The global --vault NAME option selects which named vault to operate on. If omitted, the default vault (personal, database personify) is used.

bash
vault --vault code-corpus stats

vault init

Create the on-disk vault directories and apply the database schema. Idempotent. npm run setup runs this for the default personal vault. The UI's New vault... flow runs the same initialization for named vaults.

Synopsis

bash
vault [--vault NAME] init

Options

FlagDescription
--vault NAMEOperate on a named vault. Default: personal.

Example

bash
vault init
vault --vault code-corpus init

vault sources

List the parser sources the binary knows how to ingest.

Synopsis

bash
vault sources

Example

bash
vault sources
vault
$ vault sources
chatgpt ChatGPT (OpenAI) export
claude Claude (Anthropic) export
discord Discord data package
files Generic file folder / archive
github Git repository or archive
gmail Gmail MBOX (Google Takeout)
notion Notion Markdown + CSV export
twitter X (Twitter) data archive

vault add-export

Register a raw export file with the vault. The file is copied into vault/raw/, never moved. The SHA-256 is computed and stored — re-registering the same bytes is rejected.

Synopsis

bash
vault add-export --source SOURCE --path PATH --account ACCOUNT

Options

FlagRequiredDescription
--sourceyesSource slug (see vault sources).
--pathyesPath to the export file or folder.
--accountyesAccount handle this export belongs to (free-form string — your email, handle, etc.).

Example

bash
vault add-export --source chatgpt \
  --path ~/Downloads/chatgpt-export.zip \
  --account myname@example.com

vault scan-repos

Walk an intake folder, find every git repository, and report which would be new vs. already-registered. Read-only — does not write to the vault.

Synopsis

bash
vault scan-repos --path INTAKE

Options

FlagRequiredDescription
--pathyesFolder to walk. Each immediate subfolder containing a .git/ is treated as a candidate repo.

Example

bash
vault scan-repos --path ~/code

vault add-repos

Bulk-register every new git repo in an intake folder. Optionally kick off ingestion immediately.

Synopsis

bash
vault add-repos --path INTAKE --account ACCOUNT [--ingest]

Options

FlagRequiredDescription
--pathyesIntake folder containing git repos as immediate children.
--accountyesAccount / org handle to attribute these repos to.
--ingestnoRun vault ingest on each newly registered repo right away.

Example

bash
vault add-repos --path ~/code --account my-org --ingest

vault ingest

Run a parser over one or more registered raw exports. Idempotent — items deduped by their source-specific keys.

Synopsis

bash
vault ingest [--export-id ID] [--source SOURCE] [--all-pending] [--replace]

Options

FlagDescription
--export-id IDIngest a single raw export by its database id.
--source SOURCEIngest every pending export for a given source slug.
--all-pendingIngest every export with status pending.
--replaceDrop existing items for an export and re-ingest from scratch. Use after a parser change.

Exactly one of --export-id, --source, or --all-pending should be specified.

Example

bash
vault ingest --all-pending
vault ingest --export-id 7 --replace

vault embed

Compute embeddings for chunks that don't yet have them. Pulls the model on first run.

Synopsis

bash
vault embed [--limit N]

Options

FlagDescription
--limit NProcess at most N chunks this run. Default is unbounded.

Example

bash
vault embed --limit 1000

Full-text search across item_text.body. For semantic search use the /semantic-search HTTP endpoint or the semantic_search MCP tool.

Synopsis

bash
vault search "QUERY" [--limit N] [--source SOURCE]

Options

FlagDescription
--limit NMaximum hits to return. Default 25.
--source SOURCERestrict results to a single source slug.

Example

bash
vault search "rust borrow checker"
vault search "thanksgiving" --source gmail --limit 10

vault stats

Print a summary of vault contents — totals plus per-source and per-account breakdowns.

Synopsis

bash
vault stats

Example

bash
vault stats
vault
$ vault stats
Vault: personal
items: 128,402
exports: 12
runs: 14 (last: 2026-05-03 09:11)
By source:
gmail 82,140
chatgpt 4,210
github 38,902
...

vault dev

Start the full development stack — Docker Postgres, the FastAPI HTTP API, and the Vite frontend. Convenient one-shot for hacking on Personify itself.

Synopsis

bash
vault dev

Behavior

  • Brings up the personify-db container if it's not running.
  • Launches FastAPI on port 18765.
  • Launches the Vite frontend on port 18766.
  • Probes a UI-required backend route so an old stale FastAPI process is not mistaken for a healthy server.

Press Ctrl-C to stop both processes. The Postgres container keeps running.

Most users can run npm start, which calls this command through the local virtualenv after ensuring .env exists.

Example

bash
vault dev

vault mcp

Run the Personify MCP server over stdio. Wire this into Claude Desktop or any other MCP client. See the MCP overview.

Synopsis

bash
vault [--vault NAME] mcp

Example

bash
vault mcp
vault --vault code-corpus mcp

vault --vault

Global flag, applied before the subcommand, to select a named vault. The vault name is sanitized for the database name and directory: --vault Code Corpus becomes database personify_code_corpus and directory ./vaults/code-corpus/.

Synopsis

bash
vault --vault NAME <subcommand> [...]

Example

bash
vault --vault code-corpus init
vault --vault code-corpus add-repos --path ~/code --account my-org --ingest
vault --vault code-corpus stats