CLI reference
The current Frigg release is 0.9.0 and its source build requires Rust 1.88 or newer.
frigg --versionfrigg --helpGlobal flags
Section titled “Global flags”Global flags may appear before or after a subcommand.
| Flag | Environment | Default | Contract |
|---|---|---|---|
--quiet |
none | off | Suppress normal results, warnings, and progress. Errors still use stderr. |
--verbose |
none | off | Emit per-repository and path-level progress. Cannot be combined with --quiet. |
--workspace-root <PATH> |
none | command-dependent | Add a workspace root. Repeat for multiple roots. |
--max-file-bytes <BYTES> |
FRIGG_MAX_FILE_BYTES |
2097152 |
Skip files larger than this read/index budget. Must be greater than zero. |
--full-scip-ingest |
FRIGG_FULL_SCIP_INGEST |
true |
Ingest full SCIP documents when artifacts are present. Use the environment variable with false to disable it. |
--mcp-http-port <PORT> |
none | 37444 for serve |
Select the HTTP port. With no subcommand, providing this flag selects HTTP instead of stdio. |
--mcp-http-host <HOST> |
none | 127.0.0.1 |
Select the HTTP bind address. |
--allow-remote-http |
none | false | Permit a non-loopback bind. A token is also required. |
--mcp-http-auth-token <TOKEN> |
FRIGG_MCP_HTTP_AUTH_TOKEN |
unset | Require this bearer token on HTTP requests. Must not be blank. |
--semantic-runtime-enabled <BOOL> |
FRIGG_SEMANTIC_RUNTIME_ENABLED |
false | Enable semantic indexing and retrieval. |
--semantic-runtime-provider <PROVIDER> |
FRIGG_SEMANTIC_RUNTIME_PROVIDER |
local when enabled |
Select local, openai, openai_compat, or google. |
--semantic-runtime-model <MODEL> |
FRIGG_SEMANTIC_RUNTIME_MODEL |
provider default | Override the embedding model. |
--semantic-runtime-strict-mode <BOOL> |
FRIGG_SEMANTIC_RUNTIME_STRICT_MODE |
false | Turn semantic startup/provider failures into hard errors. |
--semantic-runtime-openai-compat-endpoint <URL> |
FRIGG_SEMANTIC_RUNTIME_OPENAI_COMPAT_ENDPOINT |
required for openai_compat |
Set the full HTTP(S) embeddings POST URL. |
--watch-mode <MODE> |
FRIGG_WATCH_MODE |
transport-aware | Select auto, on, or off. |
--watch-debounce-ms <MS> |
FRIGG_WATCH_DEBOUNCE_MS |
2000 |
Delay before a watch-triggered refresh. Must be greater than zero. |
--watch-retry-ms <MS> |
FRIGG_WATCH_RETRY_MS |
5000 |
Retry delay after a failed watch refresh. Must be greater than zero. |
--watch-manifest-fast-concurrency <N> |
FRIGG_WATCH_MANIFEST_FAST_CONCURRENCY |
1 |
Maximum concurrent manifest-fast refreshes. Must be greater than zero. |
--watch-semantic-followup-concurrency <N> |
FRIGG_WATCH_SEMANTIC_FOLLOWUP_CONCURRENCY |
1 |
Maximum concurrent semantic follow-ups. Must be greater than zero. |
--lexical-backend <MODE> |
FRIGG_LEXICAL_BACKEND |
auto |
Select auto, native, or ripgrep (rg is accepted as an input alias). |
--ripgrep-executable <PATH> |
FRIGG_RIPGREP_EXECUTABLE |
PATH lookup | Override the rg executable used by the ripgrep backend. |
There are no FRIGG_MCP_HTTP_PORT, FRIGG_MCP_HTTP_HOST, or FRIGG_ALLOW_REMOTE_HTTP environment variables.
Commands
Section titled “Commands”| Command | Purpose and important options |
|---|---|
frigg |
Start the MCP server over stdio when no subcommand and no HTTP port are supplied. |
frigg serve |
Start stateful streamable HTTP. Defaults to 127.0.0.1:37444/mcp. |
frigg adopt |
Manage project instructions, HTTP MCP entries, hooks, and optional skill copies. See Project adoption. |
frigg init |
Create the current storage schema without scanning source. It may run supported precise generators. |
frigg index |
Run a full source, manifest, and enabled semantic refresh. |
frigg index --changed |
Recheck paths changed since the current manifest snapshot. |
frigg reindex |
Compatibility alias for frigg index; prefer index. |
frigg hash |
Print frigg-hash=<hex> and append it to GITHUB_OUTPUT when present. No workspace is required. |
frigg context |
Summarize .frigg/context.jsonl; defaults to the last 30 days. Supports --since, --until, and --json. |
frigg content |
Visible compatibility alias for frigg context. |
frigg stats |
Read process-local routing counters from a running HTTP service. Supports --json. |
init, index, adopt, and context default to the current directory when no root is given and require a path inside a Git repository. serve may start without roots. hash does not need a repository.
HTTP selection and authentication
Section titled “HTTP selection and authentication”frigg serve selects HTTP and supplies the default port. With no subcommand, --mcp-http-port also selects HTTP:
frigg --mcp-http-port 4000Without serve, using the host, remote-enable, or auth-token flags without a port is an error.
Loopback HTTP may run without authentication. Non-loopback HTTP requires both explicit permission and a bearer token:
frigg serve \ --mcp-http-host 0.0.0.0 \ --allow-remote-http \ --mcp-http-auth-token <TOKEN>The bearer and Host/Origin checks apply to /mcp and /stats/routing.
Output contract
Section titled “Output contract”Frigg chooses output shape from terminal detection and the output flags:
| Mode | stdout | stderr |
|---|---|---|
| Interactive TTY | Reserved for command-specific raw output or MCP frames | Human-formatted result, progress, warning, and error blocks |
| Non-interactive normal | Stable result or summary lines | Warnings and errors |
| Non-interactive verbose | Stable result or summary lines | Progress, per-repository detail, warnings, and errors |
| Quiet | Normal structured events are suppressed; raw utility output is unchanged | Errors only |
TERM=dumb disables TUI rendering. NO_COLOR disables color. Stdio MCP always reserves stdout for protocol frames.
Some raw-output utilities write their own stdout formats even with --quiet: hash prints its key/value line, context prints its compact or JSON summary, and stats prints its compact or JSON live snapshot.
Runtime status and routing stats
Section titled “Runtime status and routing stats”Frigg has no status CLI subcommand. Use the MCP workspace tool for repository health, freshness, active runtime tasks, watch state, and the session default.
Routing stats answer a different question: which MCP tools and recovery paths the current HTTP process has used. Enable recording before starting the process:
FRIGG_ROUTING_STATS=1 frigg servefrigg statsfrigg stats --jsonThe command reads http://127.0.0.1:37444/stats/routing by default and times out after five seconds. To query a token-protected service, pass its port as well as the token, including --mcp-http-port 37444 when it uses the default port. The same snapshot is available as MCP resource frigg://stats/routing. Counters are local to the process and are never cloud telemetry.
Hidden maintenance commands
Section titled “Hidden maintenance commands”These commands are intentionally absent from normal help. Use them only for maintainer-directed recovery:
| Command | Effect |
|---|---|
frigg repair-storage |
Rebuild the derived sqlite-vec projection from existing live semantic embedding rows, then verify storage. It does not call an embedding provider or index source. |
frigg prune-storage --keep-manifest-snapshots <N> |
Prune old unprotected manifest snapshots. The default is 8, which normal indexing already enforces. |
frigg hook pretooluse |
Internal Claude hook entrypoint installed by the hook adoption target. |
Normal init, index, and serving startup already attempt one repair of regenerable vector invariants. Hidden repair does not migrate an incompatible relational schema; rebuild .frigg/storage.sqlite3 with frigg index instead.
Source Anchors
Section titled “Source Anchors”../frigg/README.md../frigg/Cargo.toml../frigg/crates/cli/src/cli_args.rs../frigg/crates/cli/src/cli_dispatch.rs../frigg/crates/cli/src/http_runtime.rs../frigg/crates/cli/src/cli_runtime/config_resolution.rs../frigg/crates/cli/src/cli_runtime/output.rs../frigg/crates/cli/src/cli_runtime/commands/hash.rs../frigg/crates/cli/src/cli_runtime/commands/stats.rs../frigg/crates/cli/src/cli_runtime/commands/storage.rs../frigg/crates/cli/src/storage/lifecycle.rs