ForgeCode
github.com/tailcallhq/forgecode- Category
- AI Agents
- Rank
- No. 795Tools index
- Pricing
- Open Source
- Type
- AGENT
- Use case
- Coding
- Interfaces
- CLI · Host Plugin
- Builder
- tailcallhq
- GitHub
- 7.6k stars
- Latest release
- v2.14.0
- Date
About
ForgeCode is an open-source terminal coding agent that tops TermBench 2.0 with 81.8% accuracy, ahead of Claude Code and Warp. It uses a multi-agent architecture (Forge, Muse, Sage) with mixable models per task and integrates directly into ZSH via a ':' prefix command system.
What it does
ForgeCode is a terminal based coding assistant built in Rust. You can run it as a persistent interactive session, fire off a single prompt from a script, or trigger it straight from your shell prompt with a short prefix once its shell integration is installed. Three built in personas split responsibilities: one edits files and runs commands, one only reads and explains the codebase, and one only writes planning documents. It talks to several model providers and can reach external tools through the Model Context Protocol.
Why it's ranked here
The codebase backs up the terminal agent pitch: over twenty separate crates split cleanly along domain, application, service and infrastructure lines, a contributor guide that mandates public doc comments, table driven tests beside the code they test, and constructor patterns that ban trait objects. Provider wiring already covers OpenAI, Anthropic, AWS Bedrock and Google Cloud, plus a full Model Context Protocol client, so switching backends is a config change, not a rewrite. That combination of engineering discipline and provider breadth is what separates a serious terminal agent from a wrapper script.
What's good
The three-persona split has real teeth: the read-only research agent cannot touch files at all, and the planning agent only ever writes new planning documents, so you can ask for a full architectural investigation without risking an accidental edit. Conversations are treated as first-class objects: they persist, resume, branch into alternate directions, and rename, closer to version control than a chat log. An isolated workspace flag spins up a fresh git worktree and branch for an experiment before any code changes happen, and a separate semantic search index lets you query a codebase by intent rather than by keyword.
Tradeoffs
The fast path only works in ZSH: the shorthand commands depend on intercepting lines that start with a colon before the shell sees them, so bash or fish users are stuck with the slower full command form. The dependency list is large, including its own analytics client and support for four separate cloud auth schemes, which is more surface area than a lighter terminal tool carries. Nothing in the material read confirms which license covers the project, so that has to be checked before adopting it commercially.
How to use it well
This fits an engineer who already lives at the shell prompt and wants one tool for the whole loop: ask the read-only persona to explain a subsystem, hand the planning persona the resulting scope, then let the implementation persona execute once the plan looks right. The isolated experiment flag is the right call before a risky refactor, since it starts the change in its own branch and worktree automatically. It is not built for someone who wants a GUI or an editor-embedded assistant instead of a shell habit, though a companion integration for a popular code editor also ships alongside it.
Technical notes+
The workspace in Cargo.toml lists more than twenty internal crates (forge_domain, forge_app, forge_services, forge_infra, forge_api, forge_config, forge_main and others) plus cloud SDK dependencies for AWS Bedrock (aws-sdk-bedrockruntime), Google Cloud (google-cloud-auth), and an MCP client (rmcp) with child-process and streamable-HTTP transports. crates/forge_main/src/main.rs is the binary entry point: it installs a rustls crypto provider, loads configuration through ForgeConfig::read() before anything else runs, resolves an optional --sandbox worktree, and starts the UI loop. crates/forge_main/src/cli.rs defines the clap Cli struct and the TopLevelCommand enum (Agent, Zsh, List, Info, Config, Conversation, Commit, Mcp, Suggest, Provider, Cmd, Workspace, Data, Vscode, Update, Setup, Doctor, Logs, Select), with an inline comment warning that the ZSH shell plugin must be kept compatible with this structure. crates/forge_app/src/app.rs's ForgeApp::chat assembles the system prompt, resolves tool definitions through a ToolRegistry, and wires start/request/response/tool-call hooks, including a DoomLoopDetector and a CompactionHandler, before handing off to an Orchestrator. crates/forge_domain/src/lib.rs re-exports roughly forty submodules (agent, mcp, policies, skill, snapshot, workspace, and more), consistent with the layered domain/app/services/infra crate split also visible in crates/forge_services/src/lib.rs, crates/forge_infra/src/lib.rs, crates/forge_api/src/lib.rs and crates/forge_config/src/lib.rs. AGENTS.md is a contributor guide, not end-user docs: it mandates anyhow/thiserror error handling, colocated fixture-actual-expected tests using pretty_assertions, public doc comments without examples, and a required 'Co-Authored-By: ForgeCode <noreply@forgecode.dev>' git trailer. docs/tool-guidelines.md is internal guidance for writing Claude tool-call descriptions, adapted from Anthropic's own documentation.
Observed
- Language
- Written in Rust as a Cargo workspace split across many internal crates (forge_domain, forge_app, forge_services, forge_infra, forge_api, forge_config, forge_main, and others).
- Packaging
- Installed by piping a shell script from forgecode.dev through curl; no package-manager install path is documented in the material read.
- Interfaces
- Three interfaces: an interactive terminal UI, a single-prompt CLI flag, and a shell-integrated shorthand command system.
- Agent personas
- Ships three built-in agent personas: one that edits files and runs commands, one read-only research agent, and one planning agent restricted to writing plan documents.
- Provider support
- Provider support spans OpenAI, Anthropic, AWS Bedrock, and Google Cloud, plus a Model Context Protocol client with child-process and streamable-HTTP transports.
- Sandbox mode
- Includes a sandbox mode that creates an isolated git worktree and branch before a session starts.
- Testing
- No dedicated test directory among the crates read; the project's own contributor guide instructs that tests live in the same file as the code they test.
- Dependencies
- Bundles its own analytics client (posthog-rs) as a workspace dependency.
- Editor integration
- A separate VS Code integration command group ships alongside the terminal tool.
- License
- No license file was among the files fetched, so the license is not established by the material read.
Read from README.md, Cargo.toml, crates/forge_main/src/main.rs, crates/forge_main/src/cli.rs, crates/forge_domain/src/lib.rs, crates/forge_app/src/app.rs, crates/forge_app/src/lib.rs, crates/forge_services/src/lib.rs, crates/forge_infra/src/lib.rs, crates/forge_api/src/lib.rs, crates/forge_config/src/lib.rs, AGENTS.md, docs/tool-guidelines.md.
What it can do
Run as an interactive terminal UI coding assistant
User commands/queries in TUI → AI-generated coding assistance
Execute one-shot CLI coding requests
Single command-line prompt → Code or task output
Integrate into ZSH shell via ':' prefix commands
ZSH command with ':' prefix → Agent response executed in shell
Switch between multiple built-in agents (Forge, Muse, Sage) for tasks
Task type/selection → Agent-specific response
Assign different AI models per task
Model configuration per agent/task → Task executed with chosen model
Configure MCP and model providers
Provider/MCP configuration settings → Configured agent environment
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.