It routes the work, runs it, and records every move.
forum is a daemon-hostable engine that coordinates a team of AI agents and records each step in a ledger you can verify. You give it a task. It picks the right specialist lane, turns the request into a validated plan, runs the work under witness, judges each result against its instruction, and combines everything into one answer. Every one of those steps is written to the ledger with a hash that chains to the one before it.
Around that core sit the parts that make a run trustworthy and lean: a bounded budget that stops a runaway loop, witnessed escalation up a ladder of stronger models, a check on whether the answer still covers the request, a delivery pass that tightens a verbose answer without dropping its terms, and clean seams for a peer brain to supply context and an outside verifier to check the work. Each is opt-in, each is witnessed, none is trusted on its word.
None of those roles communicate by convention or trust. Each receives a witnessed input, produces a witnessed output, and hands it forward. There is no back-channel.The pains it answers.
These are real complaints from people running agent fleets. Each one drove a feature, and each maps to something forum does and witnesses.
The ledger is the differentiator.
A hash-chain ledger means each entry carries the hash of the entry before it. Alter any past record and every hash from that point forward no longer matches. You can replay the chain, recompute the hashes, and check the whole sequence yourself without asking forum whether it ran honestly. The bulky parts, prompts and outputs, are stored by the hash of their own bytes, so you can redact a sensitive body to its fingerprint and the chain still verifies; when the bodies are present, a deep check re-hashes each one and catches a swapped result.
A witnessed failure is more useful than an unwitnessed success.
When a task fails validation, the ledger records ok=false with the reason. Nothing is silently retried or promoted. The same record holds the budget stop, the escalation, the intent check, and the delivery revision, each chained to what it acted on, so a postmortem follows the causal links back to why a thing happened. A run that crashed picks up from that record, reusing what already succeeded.
Standard library only. Zero external dependencies.
The engine runs on Python’s asyncio using nothing outside the standard library. Four model-backed control roles sit above a layer of pluggable, model-agnostic executors; an executor can drive a model CLI, call an API, talk to a local OpenAI-compatible server, or run a stub for testing. The cheap, deterministic checks run first and the model is spent only when one of them earns it, the same discipline in routing, escalation, the intent check, and delivery.
Current state. How to run it.
Version 1.12.0, on PyPI as forum-engine. The full engine is here: durable ledger, routing, the control loop, model-agnostic executors, an HTTP and MCP daemon, the forum CLI, witnessed budgets and escalation, the intent and delivery ladders, typed data-flow between tasks, resumable runs, and the context and verification seams. 249 tests plus two gated real-model tests, ruff and mypy clean, no third-party runtime dependency. The license is fair-source: source-available, rights reserved to fund the research; the smaller utility tools that came out of this work stay permissive.
$ pip install forum-engine $ python examples/demo.py # routes, plans, witnesses, then tamper-checks the ledger $ python -m pytest 249 passed
Python, standard library only. Install it, run the demo, route a real task through it. Each example under examples/ is a short offline demonstration of one capability: the intent ladder, the delivery pass, a resumed run, an A/B of two runs. If something breaks or the ledger produces a result you cannot verify, that is exactly the kind of report I want.