Skip to main content

Multi-runtime agent toolkit: proxy routing, cost control, session management, policy enforcement, and workflow orchestration

Project description

Multi-Forge

License Python

[!WARNING] Research Preview -- Forge is under active development. APIs, commands, and file formats may change without notice between releases. Not recommended for production use.

Multi-runtime agent toolkit: proxy routing, cost control, session management, and policy enforcement for coding agents.

Forge sits between you and your coding agent (Claude Code today, Codex and Gemini next), adding persistent sessions, multi-provider model routing, cost visibility with spend caps, and autonomous verification. You run forge session start instead of claude, and Forge handles the rest -- routing to your chosen model provider, tracking state across sessions, and enforcing policies.

# Use Claude with session tracking (no proxy needed)
forge session start

# Or route through different model providers (after creating proxies -- see Quick Start)
forge session start planner --proxy openrouter-openai    # GPT for planning
forge session start --proxy openrouter-gemini            # Gemini for review

Why Forge?

Claude Code talks to Anthropic and tracks conversations. Forge adds an operational layer on top:

  • Session Tracking -- Named sessions that persist artifacts, plans, and transcripts. Works with or without a proxy.
  • Multi-Model Routing -- Route to GPT, Gemini, or any model via OpenRouter or LiteLLM through a local proxy.
  • Cost Control -- Proxy cost logs and spend caps keep metered API and multi-model workflow usage predictable.
  • Context Compatibility -- When routing to models with different context windows, Forge sets the native CLAUDE_CODE_AUTO_COMPACT_WINDOW so compaction timing matches the routed model.
  • Autonomous Loops -- Verification policies that keep Claude working until tests pass.
  • Session Resume -- When context fills up, hand off to a fresh session with structured or AI-curated history.
  • Policy Engine -- TDD enforcement, coding standards, and semantic alignment checks.
  • Multi-Model Review -- Fan out code reviews to multiple models, get adversarial consensus.

Why launch through Forge?

Running claude directly bypasses session tracking. When you launch through Forge (forge session start), you get:

Feature claude directly forge session start
Session tracking No Yes -- named sessions, artifacts, transcripts
Session resume No Yes -- editable handoff to fresh context
Status line No Yes -- proxy, session, policy info
Hook-driven artifacts No Yes -- plan snapshots, transcript capture
Policy enforcement No Yes -- TDD, coding standards, supervisor
Search across sessions No Yes -- forge search indexes transcripts
Handoff agent No Yes -- auto-updates project docs on exit

Even without a proxy, forge session start gives you session tracking, hooks, and the status line (direct mode is the default). The proxy adds multi-model routing on top. (forge claude start is also available as a bare launcher with proxy routing only, no session state.)

How it Works

Forge runs a local proxy that translates Claude Code's Anthropic API calls into requests for any LLM provider. Claude Code connects to this proxy (via ANTHROPIC_BASE_URL), and Forge handles model selection, session state, and policy enforcement.

Claude Code  -->  Forge Proxy (local)  -->  OpenRouter / LiteLLM  -->  Any LLM provider
                       |
                  Session state, policies, artifacts

OpenRouter templates call the OpenRouter API directly -- no LiteLLM needed. One API key gives access to Anthropic, OpenAI, Google, Meta, and other models. LiteLLM templates route through a LiteLLM proxy (remote or local subprocess).

Direct mode (the default) skips the proxy and talks to Anthropic directly. forge session start gives you session tracking, hooks, and all Forge features except multi-model routing. Use --proxy to add routing.

Requirements

  • Platform: macOS or Linux
  • Python: 3.11–3.13 (3.14 blocked on upstream uvloop wheels — see #1)
  • Claude Code: installed and on PATH
  • Provider auth: Claude Code login is enough for direct interactive sessions. Proxies and headless workflows need a supported API or gateway credential such as OPENROUTER_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, OPENAI_API_KEY, or LiteLLM auth.

Quick Start

# Install Forge
pip install multi-forge

# Or for development (editable install from local clone):
git clone https://github.com/hapa1i/multi-forge.git
cd multi-forge && pip install -e .

# Install extensions (hooks, skills, status line) into Claude Code
forge extension enable

# Launch Claude with session tracking (no proxy needed)
forge session start

# Or with multi-model routing via OpenRouter (easiest, no LiteLLM):
forge auth login -c openrouter                        # Store OPENROUTER_API_KEY
forge proxy create openrouter-anthropic               # Create and start a Claude-family proxy
forge session start --proxy openrouter-anthropic

# Optional: create default workflow proxies for GPT/Gemini review workers
forge proxy create openrouter-openai
forge proxy create openrouter-gemini

# Alternative: LiteLLM-based routing (shared/internal or local):
# forge auth login -c litellm-remote              # Store API key + base URL
# forge proxy create litellm-openai              # Connects to shared/internal LiteLLM
# forge proxy create litellm-openai-local        # Or start local LiteLLM

Once running, try /forge:walkthrough inside Claude Code for a guided tour in a sandboxed test environment.

Upgrading from Pre-OSS Forge

Existing pre-OSS Forge installs are not supported in-place. If upgrading:

  1. If Claude Code was previously patched, run claude update or reinstall Claude Code for a pristine binary.
  2. Remove stale Forge state: rm ~/.forge/installed.json
  3. Re-enable extensions: forge extension enable
  4. If you had FORGE_CONTEXT_LIMIT in your shell config, remove it. Use CLAUDE_CODE_AUTO_COMPACT_WINDOW for native Claude Code behavior, or forge config set context_limit=N for Forge proxy fallback.

Example Workflow: Plan, Execute, Review

With proxies configured, a typical feature workflow looks like:

# 1. Start a planning session with a high-reasoning model
forge session start planner --proxy openrouter-openai
# ... Claude creates a plan, you approve it, /exit

# 2. Fork the planner into a worktree with plan supervision
forge session fork planner --name executor --worktree --supervise
# ... Claude implements the plan; supervisor auto-checks every Write/Edit

# 3. Context fills up? Resume with AI-curated history (supervisor config carries over)
forge session resume executor --fresh --strategy ai-curated
# ... keeps working with fresh context

# 4. Fork the planner into the executor's worktree to review
forge session fork planner --into ../executor-worktree  # Path to executor's worktree
# ... reviews with full plan context, suggests fixes

# 5. Push and create a PR for human review
git push origin feature-branch

Each step uses the best model for the job. The --supervise flag wires the planner as a semantic supervisor -- every code change is checked against the approved plan. Sessions track artifacts and transcripts automatically, so context flows across forks and resumes. See the end-user guide for the full tour, or run /forge:walkthrough inside Claude Code for an interactive walkthrough.

CLI Overview

Command Group Purpose
forge claude Bare launch, settings preset management
forge session Named sessions, worktrees, resume, fork
forge proxy Model routing, templates, tier mappings
forge authentication Credential management (credentials.yaml)
forge guard Policy enforcement, plan supervision
forge workflow Workflow runners (panel, analyze, debate)
forge search Transcript search across sessions
forge config Runtime preferences (~/.forge/config.yaml)
forge extension Enable/sync/disable extensions
forge info System health and installation info

Run forge <command> --help for details on any command.

Documentation

Audience Location Contents
Users docs/end-user/ Tour, guides for sessions, proxies, policies, ...
Developers docs/developer/ Setup, coding standards, testing guidelines
Architecture docs/design.md System narrative, data flow, invariants

Contributing

See CONTRIBUTING.md for development setup and PR guidelines.

Uninstall

forge extension disable
pip uninstall multi-forge

License

Apache 2.0 -- see LICENSE.

Originally developed as Claude Forge at Thomson Reuters and open-sourced under Apache 2.0. Continued as Multi-Forge by the original author.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multi_forge-0.2.0.tar.gz (672.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multi_forge-0.2.0-py3-none-any.whl (868.0 kB view details)

Uploaded Python 3

File details

Details for the file multi_forge-0.2.0.tar.gz.

File metadata

  • Download URL: multi_forge-0.2.0.tar.gz
  • Upload date:
  • Size: 672.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for multi_forge-0.2.0.tar.gz
Algorithm Hash digest
SHA256 421a96efae6f541bd10033b5ddc90deae53ac93f00f09a972a68b668964bff60
MD5 69d06823cf4016a1c18be82318e07aa4
BLAKE2b-256 14ee479b83c2fdfa34fa6227ab26aec46c402b7e658bd77813755580aa3793bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for multi_forge-0.2.0.tar.gz:

Publisher: publish.yml on hapa1i/multi-forge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file multi_forge-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: multi_forge-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 868.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for multi_forge-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 386b414c8f92c58a8b6ac79d5da6a38da635f7e38b84dd71bd0b399ff5760187
MD5 e8f13469b0badeee859587d59a141aa5
BLAKE2b-256 01db52d14a574696a2b43a5c66874e86a1095d312740776c371f02fd6984a7c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for multi_forge-0.2.0-py3-none-any.whl:

Publisher: publish.yml on hapa1i/multi-forge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page