Skip to main content
The Config group covers providers, observability, the code graph, and stack detection.

forge config

Provider setup — show / switch / add providers, set the default model.

forge cost

Real per-day spend via measured stage factors.
Reports measured stages only — a stage with no events says “no data”, never a default.

forge dash

Local dashboard over the ledger, metrics, and blast radius.

forge brand

Print the active brand token map.
The brand is stored as one token (brand.json); a rebrand is a single edit.

forge atlas

Build / query the code graph.
The atlas is plain JSON — any tool reads it, no MCP required.

forge stack

Detect this repo’s real stack from its manifests.
Reads package.json, pyproject.toml, go.mod, Cargo.toml, Gemfile, composer.json, pom.xml / build.gradle, and *.csproj, and reports languages, frameworks, package managers, and the repo’s actual test commands — which feed the substrate’s verification checklist.

forge report v0.19+

Generate a static HTML report of the repo’s Forge state — the ledger, metrics, and blast radius rendered to a self-contained file you can share or archive.

forge tools v0.19+

Select this repo’s primary AI coding tool and wire the matching .gitignore entries, so generated config and .forge/ artifacts are ignored correctly for your setup.

forge integrations

Opt-in third-party MCP servers (for example context7), managed non-destructively across every tool Forge emits config for — Claude Code, Codex, Cursor, Gemini, Continue, and the rest. Third-party MCP servers are not installed by default. Nothing lands on disk until you run forge integrations add <name> --yes.

What add writes

add --yes writes the server into every tool’s native MCP config from one canonical spec:
  • .mcp.json (Claude Code)
  • .cursor/mcp.json (Cursor)
  • .gemini/settings.json (Gemini)
  • .codex/config.toml — as a # forge:managed:<name> block, refreshed by byte-compare
  • .continue/mcpServers/<name>.yaml — one forge-marked YAML per managed server
  • and the rest of the tools Forge emits config for
The installed set is recorded in .forge/forge.config.json under mcp.integrations, so every subsequent forge sync re-emits the same servers. The stop-hook auto-sync byte-compares the whole config file, so a hand-edit to that file is detected and repaired.

--adopt semantics

If a server with the same name already exists in one of the tool config files and Forge did not put it there, add does not overwrite it. Instead it reports the file with an --adopt hint. Re-run with --adopt to claim ownership — Forge records the entry under mcp.adopted in .forge/forge.config.json and will manage it from then on. Use --adopt when you configured a server by hand earlier and now want Forge to keep it in sync across every tool.

remove

forge integrations remove <name> reverses an add. It deletes only forge-owned entries, blocks, and files — a same-name server the user configured (and never --adopted) is left alone. Running remove twice is a no-op.

.forge/forge.config.json

Per-repo Forge state — the unified config that also holds primaryTool, tools, and profile — records opt-in integrations under two keys:
Unknown keys round-trip through writes. A malformed file is not silently discarded: reads warn once per process on stderr, and writers refuse to overwrite an unparseable config instead of replacing it with defaults.