Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Forge

Project state is deterministic. Intelligence is replaceable.

Forge is a deterministic project kernel for autonomous software engineering. Every change to a project — by an LLM, an agent, or a human — must be proposed, validated, and committed through the kernel. No client ever mutates project state directly.

The planner proposes. The kernel decides.

Why does it exist?

Conversations and markdown plans are a bad place to keep state. They are lossy, unreplayable, and unauditable. Forge replaces them with an event-sourced task graph: append-only, deterministic, replayable.

Traditional agent Forge
Conversation is state Event log is state
AI edits directly AI proposes
Memory in prompts Deterministic graph
Hard to replay Replay built in
Hard to audit Fully auditable

See WHY_FORGE.md for the full argument.

Forge in 60 seconds

forge -d chip8 init
cd chip8

forge create "Chip-8 Emulator" \
  --desc "A CHIP-8 interpreter with display, input, and ROM loader" \
  -a "ROM loads and runs" --priority high
forge expand chip-8-emulator \
  -c "CPU::executes opcodes" \
  -c "Memory::4KB RAM + registers" \
  -c "Display::64x32 framebuffer" \
  -c "Input::hex keypad"

forge graph        # the task tree
forge next         # cpu — what to work on first
forge show cpu     # the context contract: task, acceptance, deps, evidence
forge progress     # done 0/5

What happened: a goal became a graph. The kernel computed what is ready, handed the client a focused context package instead of the whole project, and recorded every step in an append-only log. The planner proposes; the kernel decides. Nothing was mutated directly.

Architecture

                Human ─┐
                Planner │   (proposals only — never touch the graph)
                Executor├──► Proposal Layer ──► Kernel ──► events.log
                Reviewer│        (validate → append → apply)
                MCP     ─┘
                                 │
                                 ├── scheduler (ready/next/blockers, priority-ordered)
                                 ├── verifier gates (status/dependency/container)
                                 ├── context builder (the ~500-token contract package)
                                 ├── inspector (task dossier + history)
                                 └── query language (safe expression subset)

Above the line: intelligence. Below it: deterministic computing.

The SDK in five calls — the whole executor flow:

from forge import ForgeClient

forge = ForgeClient("path/to/project")
task = forge.next()                        # next ready task
ctx  = forge.context(task["id"])           # the ~500-token contract
result = llm(ctx)                          # code, tests
forge.attach_evidence(task["id"], "hard", "unittest", detail)
forge.verify(task["id"])                   # Forge decides "done", not the LLM

One implementation. Many clients: Hermes, Claude Code, Codex, a human with a terminal, an MCP server, a VS Code panel.

Install

pip install forge-foundation forge-planner
pip install forge-mcp-base            # optional: MCP server transport
forge --help

Naming, to keep it unambiguous:

What you call it Value
Project Forge
PyPI package forge-foundation (the names forge, forge-sdk, forge-core, forge-kernel are squatted on PyPI)
Python module forgefrom forge import ForgeClient
CLI forgeforge init, forge plan, forge next

forge is the kernel + CLI + public SDK. forge-planner is the reference planner (a separate distribution) and registers the forge plan command at runtime through a forge.commands entry point. forge-mcp-base is the MCP server (a separate distribution, run as forge-mcp -d PROJECT), a stdio transport any MCP client can talk to. Every other client (executor, reviewer, a future VS Code panel) is the same shape: an installable package that consumes only the SDK.

For development, install from the repository root:

python -m pip install -e .
python -m pip install -e packages/forge-planner
python -m pip install -e packages/forge-mcp
forge --help

(Works without install too: python -m forge.cli ...)

The install is zero-dependency: stdlib only, Python 3.10+. Plugins are separate products that consume the SDK — they are not part of the forge package (docs/ROADMAP.md: Repository separation). If a known plugin command's package is missing, the CLI says exactly what to install instead of failing with an opaque argparse error.

Quickstart

forge -d myproject init
cd myproject

forge plan "Build a Snake game" --commit   # reference planner proposes; kernel decides
forge graph                    # root + Foundation/Core/Acceptance milestones
forge next                     # what to work on (priority order)
forge start build-a-snake-game-foundation
forge evidence build-a-snake-game-foundation --kind hard --source unittest --detail "14 passed"
forge verify-pass build-a-snake-game-foundation
forge show build-a-snake-game-foundation   # context package for an LLM client
forge progress
forge replay                   # rebuild the graph from the log

Full command reference: docs/CLI.md.

Status

The kernel is frozen at v1. This release is 0.1.0a6.

Done:

  • Kernel — event-sourced task graph, scheduler, verifier gates, query language, inspector
  • Specification — docs/SPEC.md v1.0
  • Compliance suite — 15 portable tests mapped to invariants I1–I7 (plus adversarial fuzzing and the ROAD_TO_1.0↔INDEX cross-check)
  • SDK — forge.ForgeClient, the single public surface
  • Context API — the ~500-token contract package for coding agents
  • Planner, Executor, Reviewer plugins — reference clients, each an LLM drop-in behind the same protocol
  • MCP server — the SDK as six JSON-RPC 2.0 tools over stdio

Next:

  • VS Code extension
  • Web UI
  • Multi-agent orchestrator

Full history: docs/ROADMAP.md.

Who is Forge for?

Forge is useful if you are building:

  • AI coding agents
  • Autonomous software systems
  • Multi-agent workflows
  • Coding research
  • Reproducible AI pipelines

If you are an individual developer who wants an agent to write your project, Forge is not the tool — yet. It is the foundation those tools will be built on.

Why not X?

Forge does not compete with coding agents; it sits underneath them.

  • Claude Code / Codex / OpenHands are agents that write code. Forge is the state layer an agent works against. Run any of them on a Forge project: the agent proposes, the kernel decides.
  • LangGraph / CrewAI orchestrate agent workflows. Forge does not orchestrate; it stores and validates the state those workflows produce. Your orchestrator of choice is a client.
  • Git stores source code. Forge stores project state — the task graph, the evidence, the decisions. The two are complementary.

Nothing stops you from using all of them together: LangGraph to orchestrate, Claude Code to write, Forge to hold the truth.

Documentation

Test

python -m unittest discover -s tests

Zero dependencies, Python 3.10+.

Download files

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

Source Distribution

forge_foundation-0.1.0a6.tar.gz (76.1 kB view details)

Uploaded Source

Built Distribution

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

forge_foundation-0.1.0a6-py3-none-any.whl (40.1 kB view details)

Uploaded Python 3

File details

Details for the file forge_foundation-0.1.0a6.tar.gz.

File metadata

  • Download URL: forge_foundation-0.1.0a6.tar.gz
  • Upload date:
  • Size: 76.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for forge_foundation-0.1.0a6.tar.gz
Algorithm Hash digest
SHA256 5050055f67e29627a3f3effe9e809caea8dd296b045790f2ec91318c5d5bf21f
MD5 a3a14328040b06f753800717a7fc72f0
BLAKE2b-256 fa6cc0945043187dd491a4c16bcde4cdfd643bea450e3cda8c10d9cfa6197413

See more details on using hashes here.

File details

Details for the file forge_foundation-0.1.0a6-py3-none-any.whl.

File metadata

File hashes

Hashes for forge_foundation-0.1.0a6-py3-none-any.whl
Algorithm Hash digest
SHA256 e292c679223a50ea4d24acda4f9a406584ed7c93e25430649eb0444dffc5c299
MD5 c4808a16560580f273d6c0058a0bd07f
BLAKE2b-256 aba57e753a54bff9f7be7362c3c4b3282fea3f1e548230171b2dead0a755d532

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0a6 This release

2 files

Supported by

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