Skip to content
System One

Foreman

Places Jev as a fast supervisor above slower Codex coding agents. Codex workers do the engineering while Foreman independently assesses whether the work is complete, requirements are met, tests suffice, or human input is needed.

thruwire/foreman on GitHub

Stars
538
Forks
40
Language
Python
License
MIT
Last push
22 Sep 2026

Read from GitHub on . Counts change daily.

Foreman sits above a Codex or OpenCode coding agent as a supervisor rather than another worker. You give it a ticket, a spec, or a bug report, and the underlying agent does the actual engineering while Foreman independently watches and judges: is the implementation complete, are the requirements met, are the tests sufficient, does this need more verification, or does a human need to step in.

The two systems run as concurrent loops rather than a strict pipeline. Foreman doesn’t replace the worker’s own reason-tool-observe cycle or choose its files or tools; the worker keeps running while its output and lifecycle events stream into a separate, debounced observation loop that Jev evaluates. Each check, such as “is this worker stuck?”, is one Jev noul question whose result is the probability of yes, and all active checks go to Jev in one parallel request. The README says Jev interests thruwire because it takes structured state and typed questions and evaluates several of them independently in one request.

The README is explicit that Foreman is an architectural experiment testing whether this shape of model supports frequent semantic supervision, not a claim that it already outperforms a conventional coding-agent setup.

How it uses Jev

if self._client is None:
    self._client = client
try:
    response = await asyncio.wait_for(
        client.system_one(
            state=observation.model_dump(mode="json"),
            questions=questions,
            model=self.model,
            timeout=self.timeout_seconds,
        ),
        timeout=self.timeout_seconds + 0.5,
    )
    return parse_jev_response(response, checks)
except TimeoutError as error:
    raise ForemanModelError("Jev assessment timed out") from error

View in src/foreman/foreman/jev.py

Open on GitHub

More like this

Use cases this is tagged with