Klimkit: my Codex setup for multiple machines
Keeps long-running Codex agents synchronized across machines via Git-controlled profiles.
The workflow harness for Codex: typed gates, validated evidence, controlled transitions, repair paths, and inspectable logs for any workflow.
TypeScript FSMs enforce agent steps where prompts fail, but locks you into Codex CLI.
Developers building autonomous Codex agents
LangGraph · Microsoft AutoGen · CrewAI
Aharness turns the process into a runtime. You (your agent) write the workflow as a finite state machine in TypeScript: states define what Codex may do next, typed submissions prove what happened, and transitions only occur through validated exits. If a state doesn't expose an exit, the model can't take it.
The bet is that useful workflows are reusable software, not prompts copied around. FSMs are meant to be maintained, shared, and built upon. Install your favorite workflow as an npm package and build on top of it.
Aharness plugs into the Codex setup you already use: your AGENTS.md, skills, MCP servers, and permissions. The missing step between a skill and a custom agent harness. Early experiment, Apache-2.0. Feedback welcome, especially on the authoring model and composition.
What about Claude Code dynamic workflows? Both approaches attempt to solve the same problem with different hypothesis. Dynamic workflows assume that claude is capable of designing workflows that match the process you want, and they are one-offs. Aharness assumes that you want control over your workflow, to improve it over time, an build upon it.
Keeps long-running Codex agents synchronized across machines via Git-controlled profiles.
Orchestrates two AI tools you already pay for; requires both Codex and Claude.
TDD state machine leash for Claude Code avoids agent drift, but niche audience.
Protocol-level tool enforcement prevents jailbreaks better than system prompts.
Self-hosted alternative to Cursor and Continue with auditable agent playbooks.
Forces 13B models to solve SWE-bench tasks by making the problem smaller, not the model bigger.