Getting started
Quickstart
Five minutes, one terminal. At the end, a fact you type once will be answered correctly by an agent you never told.
-
Install
Section titled “Install”Terminal window curl -fsSL https://raw.githubusercontent.com/Anmol-Srv/sigil/master/install.sh | shThis puts
sigilon yourPATH, starts the daemon, and opens the setup dashboard in your browser. -
Configure
Section titled “Configure”In the wizard, pick Built-in database — PGlite, in-process, nothing to install. Then choose an LLM provider and an embedding provider.
The fastest zero-key path: Claude Code for the LLM (it reuses your existing subscription) and Ollama for embeddings.
Terminal window ollama pull mxbai-embed-large # if you picked OllamaStep 4 detects every coding agent you have installed and wires each one. Step 5 asks your name and writes it as your first memory — which proves the whole stack works.
-
Verify
Section titled “Verify”Terminal window sigil doctorEvery line should be a
✓. If a hook shows as unregistered, runsigil connect— it re-pins the shims and re-syncs each client’s config without redoing setup. -
Save a fact
Section titled “Save a fact”Terminal window sigil remember "We use Postgres LISTEN/NOTIFY for event delivery, not Redis pubsub"Remembered. (1 new)Save it again and you get
Already known.— Sigil deduplicates against what it already holds instead of piling up near-identical rows. See Deduplication. -
Ask an agent that has never seen it
Section titled “Ask an agent that has never seen it”Open Claude Code in any project and ask:
What's our event delivery setup?It answers correctly. The
UserPromptSubmithook searched Sigil with your prompt and injected the fact as context before Claude read it — no tool call, no paste, no round-trip.Now open Cursor, or Kiro, or Codex CLI, and ask the same thing. Same answer. Same brain.
What just happened
Section titled “What just happened”your prompt ↓UserPromptSubmit hook → hybrid search over your memory ↓ (pgvector cosine + tsvector BM25, fused with RRF)top-K facts injected ↓Claude reads prompt + facts, answersRoughly 1.5K tokens of context, whether you have ten facts or ten thousand. The full path is in How it works.
You won’t type remember much
Section titled “You won’t type remember much”In Claude Code, capture is automatic. Four hooks run on their own:
| Hook | What runs |
|---|---|
UserPromptSubmit | Searches memory with your prompt; injects the top facts before the model sees it |
PostToolUse | Captures observations from Edit / Write / Bash, deduplicated by content hash |
Stop | Classifies your last message and saves anything memorable — preferences, decisions, constraints, claims |
SessionEnd | Summarizes the session into its pod; promotes facts that kept mattering |
So just work. Say “we’re moving off Redis” in the middle of a session and it’s saved, classified, deduplicated against what you already knew, and available to every other agent — with no command from you.
Other agents have no hook layer. They call the MCP tools when they decide to, or you use the CLI.
The next six commands
Section titled “The next six commands”sigil search "event delivery" # what does the brain know?sigil why "event delivery" # why did it rank those results that way?sigil facts --limit=20 # recent facts, with idssigil forget <id> # delete onesigil ingest ./ARCHITECTURE.md # store a whole documentsigil status # counts across the knowledge baseFull list in the CLI reference.
Store a document, not just a fact
Section titled “Store a document, not just a fact”remember takes one short self-contained statement. For a spec, a runbook, or a transcript, use ingest — it keeps the full text and extracts searchable facts from it:
sigil ingest ./DESIGN.mdsigil ingest "docs/**/*.md"sigil ingest https://example.com/rfc --waitLater, sigil docs lists what’s stored for the current project and sigil docs <uid> prints one back in full. See Ingesting documents.
Share one brain across machines
Section titled “Share one brain across machines”Point two installs at the same Postgres. That’s the whole protocol.
# machine 2sigil init --url "postgres://user:pass@ep-foo.neon.tech/sigil?sslmode=require"A fact captured on your laptop surfaces on your home server’s next prompt. Postgres handles consistency; there’s no sync daemon. For encrypted device pairing over Iroh instead, see Multi-device.