quickstart.md
docs/quickstart.md
Quickstart
<!-- translations:start -->
한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch
<!-- translations:end --> This page shows the shortest path from an existing project directory to a browsable Tesserae.
Command overview
The CLI is grouped: a handful of everyday verbs at the top level, plus groups (sessions, vault, export, code, config, projects, integrations, lab) for the rest. Run tesserae --help to see the whole tree:
usage: tesserae <command> [options]
EVERYDAY
init Set up .tesserae (wizard by default; --yes non-interactive)
compile Rebuild the knowledge graph (compile [paths] = ad-hoc ingest)
context Compile agent-ready context for a query
ask Ask the project memory a question
serve Browse the compiled site (auto-builds if missing)
status Node/edge counts, last compile, vault state
AUTOMATION
engine Refresh daemon: watch sessions/sources, coalesced recompiles
refresh One-shot: import sessions + compile + sync vault
research Autonomous research mode: investigate a query
ANALYSIS
query Raw retrieval over the graph (top-k, kind filters)
lint Graph lint report (--fix-trivial, --severity, --json)
GROUPS
sessions import | discover | list — agent session history
vault sync | sync-all | set-root | export | prune — Obsidian projection
export harness | graphiti | site — artifact exports
code ingest | sync — CodeGraph ⇄ project graph (hook-invoked)
config llm | show — machine-wide defaults (~/.tesserae/config.json)
projects register | list | activate | unregister | mcp-config — registry
integrations refresh raganything|understand-anything
extract Low-level: extract a typed graph from markdown paths
LAB
lab evolve | schema-drift — experimental LLM ops
Run `tesserae <command> --help` for command details.
Run tesserae <command> --help (e.g. tesserae compile --help) for the flags on any single command.
1. Run the setup wizard
From the project you want to index:
cd /path/to/my-project
tesserae init
The wizard detects common sources such as README.md, docs, src, lib, app, packages, and data, then writes .tesserae/config.json. It also configures the default Cognee backend so tesserae ask can try Cognee and fall back to compiled wiki search.
For a non-interactive setup (CI, scripts), pass --yes to accept the detected defaults without prompting:
tesserae init --yes
For a fully automated setup with Understand Anything and Cognee runtime memory enabled:
tesserae init \
--yes \
--with-understand-anything \
--install-understand-anything \
--understand-anything-platform codex \
--with-raganything \
--install-raganything \
--raganything-parser mineru \
--run-raganything \
--run-cognee \
--install-cognee
What that does:
| Flag | Effect |
|---|---|
--with-understand-anything | Adds the UA graph projection as a source. |
--install-understand-anything | Installs/updates the UA companion skills. |
--understand-anything-platform codex | Uses Codex to run Tesserae's managed UA refresh wrapper. |
--with-raganything | Enable multimodal ingestion via RAG-Anything. |
--install-raganything | Install raganything[all] during setup. |
--raganything-parser | Parser choice: mineru (default), docling, paddleocr. |
--run-raganything | Auto-refresh RAG-Anything on every compile. |
--run-cognee | Runs best-effort Cognee runtime cognify during compile. |
--install-cognee | Installs Cognee with the current Python if missing. |
Users do not need to know the UA install path or type /understand; tesserae compile runs tesserae integrations refresh understand-anything when the UA graph is missing or stale.
Skip the wizard.
tesserae init --barewrites a minimal.tesserae/config.jsonwithout source detection or backend probing — handy when you want to hand-edit the config before the first compile.
2. Compile the graph and projections
tesserae compile
compile writes the durable artifacts:
.tesserae/
config.json
graph.json
manifest.json
sqlite.db
temporal_facts.jsonl
graphiti_episodes.jsonl
report.md
competitive_report.md
markdown_projection/
obsidian_vault/
agent_harness/
harness_sessions/
site/
cognee_bundle/
Use --changed-only after the first run to skip unchanged markdown files while preserving the previous graph when no files changed. If Understand Anything is enabled, compile first refreshes/materializes .tesserae/external/understand-anything.md; if Cognee runtime is enabled, it also updates Cognee best-effort after writing .tesserae/cognee_bundle/.
To ingest extra paths ad-hoc without touching the configured sources, pass them positionally: tesserae compile path/to/extra.md docs/.
Integration knobs live in config now
tesserae compile is deliberately capped at the everyday flags (paths positional plus --project, --changed-only, --limit, --refresh-integrations, --sessions/--no-sessions, and the three LLM flags). Every other former compile flag moved into a compile_options block in .tesserae/config.json; the old argparse default is still the fallback. Set a key there to change behavior:
compile_options key | Old flag | Default | What it does |
|---|---|---|---|
source_kind | --source-kind | (none) | Override the configured source kind. |
trends | --trends | false | Add corpus-level Trend nodes. |
min_trend_sources | --min-trend-sources | 2 | Minimum sources needed for a Trend node. |
exclude_data | --exclude-data | false | Skip the implicit project_root/data auto-include. |
no_vault_pull | --no-vault-pull | false | Don't pull existing vault edits back before compile. |
use_extraction_feedback | --use-extraction-feedback | false | Feed prior extraction results back into the run. |
sessions_llm | --sessions-llm | (auto) | LLM session-extraction mode (auto/true/false). |
sessions_model | --sessions-model | (none) | Override the LLM model used for session extraction. |
cognee_add | --cognee-add | false | Add the Cognee bundle to the dataset (no cognify). |
cognee_cognify | --cognee-cognify | false | Add the bundle and run Cognee cognify. |
cognee_codex_cognify | --cognee-codex-cognify | false | Run cognify with Cognee's LLM client patched to Codex. |
cognee_codex_model | --cognee-codex-model | gpt-5.4 | Codex CLI model for cognee_codex_cognify. |
cognee_codex_timeout | --cognee-codex-timeout | 300 | Per-call Codex CLI timeout (seconds). |
cognee_dataset | --cognee-dataset | tesserae_research_graph | Cognee dataset name. |
cognee_embedding_provider | --cognee-embedding-provider | deterministic | Embedding provider for the Cognee lane. |
cognee_ollama_embedding_model | --cognee-ollama-embedding-model | qwen3-embedding:0.6b | Ollama embedding model. |
cognee_ollama_embedding_endpoint | --cognee-ollama-embedding-endpoint | http://127.0.0.1:11434/api/embed | Ollama /api/embed endpoint. |
cognee_ollama_embedding_timeout | --cognee-ollama-embedding-timeout | 120 | Ollama embedding request timeout (seconds). |
cognee_local_embedding_dimensions | --cognee-local-embedding-dimensions | 128 | Local embedding dimensionality. |
cognee_system_root | --cognee-system-root | (none) | Isolated Cognee system root directory. |
cognee_data_root | --cognee-data-root | (none) | Isolated Cognee data root directory. |
One-shot pipeline.
tesserae refreshruns the whole loop in-process — it imports any new agent sessions, compiles, and syncs the vault in a single command. Pass--changed-onlyfor the opt-in incremental compile.
3. Build and serve the static frontend
serve auto-builds the site if it is missing, so a single command gets you a browsable Tesserae. Bare serve serves every registered project under one server — a projects landing at /, each project at /<alias>/, and a Projects switcher in the header to jump between them. The in-page ask widget works live in either mode, routed to the project of the page you're on:
tesserae serve --port 8765 # all registered projects
tesserae serve --project . --port 8765 # just this one
Open:
http://127.0.0.1:8765/
To build the site explicitly (e.g. for deploy without serving) use export site; pass --no-build to serve when you want to browse a previously built site without rebuilding it:
tesserae export site
tesserae serve --no-build --port 8765
<!-- BEGIN: subagent-r-watch -->
Auto-rebuild on save
Pair the dev server with the built-in watcher so edits under data/ and docs/ trigger an incremental recompile:
# terminal 1
python3 -m http.server 56821 --directory .tesserae/site
# terminal 2
tesserae export site --watch
export site --watch polls every 2 s, debounces 1 s, and runs compile --changed-only. Use --once for cron-style rebuilds (snapshots vs .tesserae/.watch-cache.json), --paths <dir> to add custom watch dirs, and --interval / --debounce to tune cadence. <!-- END: subagent-r-watch -->
Run the refresh daemon
For an always-on engine that keeps the knowledge base fresh on its own — watching your sources, coalescing bursts of edits, and auto-recompiling — start the supervised daemon:
tesserae engine
engine is the long-running supervisor: it polls every 2 s and waits out a 1 s quiet window before each rebuild. Tune the cadence with --interval and --debounce, point it at another project with --project, or pass --once to run a single deterministic drain cycle and exit (useful for cron or CI). This is the hands-off counterpart to export site --watch: leave it running and the graph, vault, and site stay current as you and your agents work.
For an annotated tour of every visible route — home, sources, concepts, entities, papers, repos, topics, syntheses, questions, timeline, graph, plus the AI siblings — see