Forge

BYO agent CLI

Any agent CLI, on a schedule.

Forge keeps a SQLite task queue, runs explicit queued work through Codex, Claude, or your own command, checks the result, and in insane mode pushes straight to main.

Rust CLI SQLite queue Codex Claude BYO CLI Intent-bound runs Choicepoints Decision Gate Pushes to main
forge heartbeat --executor cli insane mode
Queued01
Running01
Checks03
PushMain
Latest receipt

Scheduled a queued task, ran an agent CLI, checked the Rust workspace, committed the diff, and pushed to main.

Operational release · Governed schedules

Schedules execute intent. They do not invent it.

Forge remains a scheduled runtime for queued, operator-supplied work. In this repository, workflows that can write to main now require an explicit operator dispatch, so a clock tick cannot commission a speculative product change.

Explicit work only Queue entries and operator dispatches provide the intent; elapsed time does not.
Proof before delivery Format, tests, clippy, receipts, and policy gates still stand between an agent and main.
Quiet when unchanged No timestamp-only commits and no scheduled “make an improvement” prompt on unchanged evidence.

Capability release · Choicepoints

Compare the work before you choose it.

Give Forge one task and two explicit strategies. It starts A and B from the exact same commit, runs the same proof commands, and returns a Decision Receipt with changed files, diff stats, patch digests, proof results, duration, and risk. Forge does not name a winner—and marks cost unavailable when an executor cannot report it.

forge choicepoints run --task "…" --strategy-a "…" --strategy-b "…" --executor codex
One base, two patches Exactly two detached worktrees. No forkd, KVM, commit, delivery, or push.
Evidence before preference A/B labels only, with identical proof and content-addressed, read-only patches.
Selection proves again Your chosen patch enters a third clean worktree and must pass the saved proof contract again. Main stays untouched.

Capability release · Decision Gate

Uncertainty can stop the run.

Put Forge before the caller's next action with --require-pass and a typed route signal bound to an exact local artifact. It checks freshness, probability, and winner margin, then writes a create-only, read-only pass, abstain, or invalid receipt. Probability is evidence, not truth, and producer provenance remains unverified.

forge gate evaluate --signal route-signal.json --subject decision.json --permit-route run … --require-pass
Typed and bound Exact schema, subject digest, freshness, unique routes, and an already-valid probability distribution are required. Subject labels remain producer-declared; SHA-256 binds the bytes.
Abstention is a result Low probability, a narrow margin, or a different top route produces an inspectable abstain receipt instead of invented certainty.
No hidden authority Receipt presence never authorizes an action; only a completed --require-pass exit zero does. No model or network call, queue mutation, agent run, Choicepoint selection, commit, push, or delivery occurs.
01

Queue

Store the next scheduled task in SQLite.

02

Run Agent

Call codex, claude, or a BYO CLI.

03

Prove

Run format, tests, and clippy before delivery.

04

Push

In insane mode, commit and push directly to main.

On-demand reporter Healthy

Forge reporter publishes proof when an operator requests it.

Last published proof Waiting for first run
Proof checks
format
test
clippy
Self-heal not needed
Branch main
Commit —
Queued —
Executing —
Blocked —
Completed —
Oldest queued —
Latest run —
Waiting for first run