Runtime model
Frigg combines regenerable repository state under .frigg/ with session and task state inside the running MCP process. Keeping those layers separate explains why two clients can share one index while retaining different session defaults.
Repository state
Section titled “Repository state”Each indexed repository has one SQLite store:
.frigg/storage.sqlite3The store contains manifest snapshots, retrieval projections, symbols, semantic rows, vectors, navigation data, and provenance. Treat it as regenerable runtime state, not source or a secret store.
Optional precise-navigation state uses:
.frigg/scip/.frigg/precise.json.frigg/tmp/precise-generation/Frigg honors the repository root’s .gitignore and .ignore files and always excludes .frigg, .git, and target from normal source indexing.
Process and session state
Section titled “Process and session state”The MCP process owns the repository registry, runtime tasks, watch supervisor, caches, and active tool surface. Each MCP session separately tracks:
- its adopted repositories
- its session-default repository
- result handles and targets issued to that session
Repository-aware tools normally resolve an omitted repository_id from the session default. The workspace tool reports the current repository, repositories visible to the session, runtime tasks, watch status, exposed tools, and the authoritative freshness state.
HTTP and stdio
Section titled “HTTP and stdio”| Transport | Process shape | Watch default | Best fit |
|---|---|---|---|
| Loopback HTTP | One long-lived service shared by clients | Service profile with watch support | Multiple clients, subagents, shared caches, and post-edit refreshes |
| Stdio | One client owns one Frigg subprocess | Off unless explicitly enabled | One ephemeral local client |
Start the shared HTTP service with:
frigg serveIts default endpoint is http://127.0.0.1:37444/mcp. Stdio remains supported, but several stdio processes do not share in-memory caches, sessions, or watch leases and can contend for the same SQLite writer.
Watch refreshes
Section titled “Watch refreshes”Built-in watch mode observes repositories adopted by active sessions while watcher leases exist. A source change first queues a manifest-fast refresh. When semantic runtime is enabled, a successful manifest refresh can queue a semantic follow-up.
Watch settings control the debounce delay, retry delay, and concurrency of those two refresh classes. Watch updates .frigg/storage.sqlite3; it does not create a second index.
A usable snapshot does not require an active watch. Watch answers whether Frigg can converge after edits without operator action; snapshot freshness answers whether the indexed evidence is currently usable. See Freshness and evidence.
Maintenance boundary
Section titled “Maintenance boundary”The public MCP surface has no reindex or other write tool. Use workspace for status and repository adoption. Use CLI maintenance when storage is missing, uninitialized, or erroneous:
frigg initfrigg indexNormal source inspection does not edit project source. Frigg can still update ignored .frigg/ state, and optional precise generators can execute repository or PATH-discovered tools and write artifacts.
Optional retrieval layers
Section titled “Optional retrieval layers”Semantic retrieval and precise navigation are accelerators, not prerequisites:
- Semantic retrieval is off by default. Lexical, path, symbol, graph, structural, and source evidence remain available without it.
- Precise navigation uses optional SCIP or JSON graph artifacts. Frigg falls back to source-backed heuristic navigation when artifacts or generators are unavailable.
Related tasks
Section titled “Related tasks”- Handle edits safely
- Troubleshoot freshness and storage
- Configure semantic search
- Configure precise navigation
Source Anchors
Section titled “Source Anchors”../frigg/README.md../frigg/crates/cli/src/settings/runtime_profile.rs../frigg/crates/cli/src/settings/watch.rs../frigg/crates/cli/src/mcp/types/workspace.rs../frigg/crates/cli/src/mcp/server/workspace_freshness.rs../frigg/crates/cli/src/mcp/types.rs../frigg/crates/cli/src/workspace_ignores.rs