Skip to content

CLI reference

The current Frigg release is 0.9.0 and its source build requires Rust 1.88 or newer.

Terminal window
frigg --version
frigg --help

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.

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.

frigg serve selects HTTP and supplies the default port. With no subcommand, --mcp-http-port also selects HTTP:

Terminal window
frigg --mcp-http-port 4000

Without 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:

Terminal window
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.

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.

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:

Terminal window
FRIGG_ROUTING_STATS=1 frigg serve
frigg stats
frigg stats --json

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

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.

  • ../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