Skip to content

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.

  1. Terminal window
    curl -fsSL https://raw.githubusercontent.com/Anmol-Srv/sigil/master/install.sh | sh

    This puts sigil on your PATH, starts the daemon, and opens the setup dashboard in your browser.

  2. 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 Ollama

    Step 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.

  3. Terminal window
    sigil doctor

    Every line should be a ✓. If a hook shows as unregistered, run sigil connect — it re-pins the shims and re-syncs each client’s config without redoing setup.

  4. 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.

  5. Open Claude Code in any project and ask:

    What's our event delivery setup?

    It answers correctly. The UserPromptSubmit hook 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.

your prompt
↓
UserPromptSubmit hook → hybrid search over your memory
↓ (pgvector cosine + tsvector BM25, fused with RRF)
top-K facts injected
↓
Claude reads prompt + facts, answers

Roughly 1.5K tokens of context, whether you have ten facts or ten thousand. The full path is in How it works.

In Claude Code, capture is automatic. Four hooks run on their own:

HookWhat runs
UserPromptSubmitSearches memory with your prompt; injects the top facts before the model sees it
PostToolUseCaptures observations from Edit / Write / Bash, deduplicated by content hash
StopClassifies your last message and saves anything memorable — preferences, decisions, constraints, claims
SessionEndSummarizes 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.

Terminal window
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 ids
sigil forget <id> # delete one
sigil ingest ./ARCHITECTURE.md # store a whole document
sigil status # counts across the knowledge base

Full list in the CLI reference.

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:

Terminal window
sigil ingest ./DESIGN.md
sigil ingest "docs/**/*.md"
sigil ingest https://example.com/rfc --wait

Later, sigil docs lists what’s stored for the current project and sigil docs <uid> prints one back in full. See Ingesting documents.

Point two installs at the same Postgres. That’s the whole protocol.

Terminal window
# machine 2
sigil 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.