Coding Agents
Running many concurrent coding-agent sessions on research and development work
On my workstation, dozens of coding-agent sessions run at once (Claude Code, Codex, OMP, Kimi, and others),
working on research projects and on the tools that support them. The tools on this page keep that workable.
Each session's git, ssh, and uv commands pass through wrappers that enforce workstation rules. Sessions send
each other mail and claim files before editing them. A reviewer from a different model family checks each
change, and heavy work runs on another machine.
Most of these tools are optional to one another, and some, such as
Weft and
with-limits,
are useful without any agent.
How the pieces fit
Each layer sits above the layers it depends on. Within a layer, tools are grouped as general development tools, tools built for agent sessions, and research tools. Tools marked unpublished have no public repository; the others link to theirs.
For the notebook conventions that connect research questions, experiments, and claims, see
Research Notebook.
General development
Usable from any shell, with or without agents.
Coding agents
Built for agent sessions.
Research
Built around lab notebooks and experiments.
Dashboards
What I look at.
Coding agents
-
Agent Dispatch unpublished
A macOS dashboard of agent sessions: which ones are working in which project, what each did recently, and the plans and reviews in progress.
-
Review Explorer unpublished
A local web app for browsing past agent-review reviews: what was reviewed, by which model, and what it found.
-
workflow-state unpublished
The shared data layer and activity feed behind Agent Dispatch and Research Rounds.
Research
-
Research Rounds unpublished
A macOS app for making rounds of my research projects. One window shows each active project's plans, experiments, and the agent sessions working on it.
↓ read state from
Sessions and commands
How each agent starts, and what constrains the commands it runs.
General development
-
Runs a command with limits on memory (counting every process it starts), sustained CPU, and running time, and can wait to start until the machine has memory to spare. Agents reach it through the guards and the pre-tool hook; people can run it from any shell.
Coding agents
-
Starts Claude Code, Codex, OMP, Kimi, opencode, and agy with the agent-command-guards wrappers ahead of the real commands. Typing a model name, such as fable, starts whichever agent runs that model. A session can be resumed by its name or by a phrase from its conversation, carried over to a different agent (from Claude Code to Codex, say), or recovered after a crash. When an agent exits, the next shell prompt prints an exit receipt: the session's name and the command that resumes it.
-
claude-wrapper unpublished
Sits between the launcher and Claude Code. A profile saves a model, a provider, and extra arguments under one name. Besides the providers Claude Code configures itself, it sets up the endpoint and API key for OpenRouter and Moonshot. It sends desktop and phone notifications when a session finishes or needs input, serves a page listing live sessions, and prints the exit receipt for Claude Code sessions.
-
Wrappers that run ahead of the real git, jj, ssh, scp, rsync, and uv, so their rules apply however a command was started, including from scripts. In a Jujutsu repository, git commit and git worktree become their jj equivalents, and other git writes are refused because they would confuse jj. jj refuses commands that would open a text editor, which an agent cannot operate and which would hang the session. For hosts that need a VPN, ssh, scp, and rsync check the host is reachable first, and if it is not, ask me once and remember a refusal, so later attempts fail at once instead of timing out. uv run runs under with-limits.
-
A hook that Claude Code, Codex, Kimi, and opencode call before running each shell command an agent requests. It refuses commands that break rules an agent's own permission system cannot know about: changing Git state in a Jujutsu repository, bypassing a project's build command, or running a new research script before it has been reviewed. It also wraps uv run in with-limits.
↓ request reviews from
Review
Independent checks on changes and research claims.
Coding agents
-
agent-review unpublished
Sends a commit, a document, or a research result to a reviewer from a different model family than the one that wrote it, so code Claude wrote might be reviewed by Codex. Each review records the exact version examined, the evidence the reviewer was given, and its findings, which shows when a later edit has made a review out of date. Reviews run as Weft jobs on another machine.
Research
-
research-spec unpublished
A block in each experiment's lab-notebook record declaring which data the experiment uses and which scripts and code revision produced its results, in a form a tool can check.
-
code-provenance unpublished
Checks whether two sets of numerical results were produced by equivalent code and dependencies.
↓ run reviewers and offloaded agents on
Execution
Heavy work, on another machine.
General development
-
Runs jobs such as experiments and test suites on whichever machine fits: a workstation, a shared server, or a rented cloud GPU. It copies the source tree to that machine and keeps each job's logs and outputs.
Coding agents
-
Sends a coding task to an agent on another machine. The agent edits a snapshot of the source tree, and its work comes back as a diff to verify and apply.
-
Runs a coding agent as a Weft job with restricted permissions, and records what the agent was given and what it did. agent-review and agent-offload both use it.
-
agent-host-sync unpublished
Installs these tools on the remote machine, and lends agents reusable workspaces there for builds and test runs.
Research
-
research-site unpublished
Hands a research project between the laptop and a remote machine, so only one of them writes to it at a time and an experiment plan can run where there is spare CPU.
Coordination and records
Used by every layer above.
Coding agents
-
Lets separate sessions coordinate. They send each other mail, claim files before editing them so two sessions do not edit the same file at once, and record who owes whom a decision or a fix.
-
A knowledge base that agent sessions write. A session records a fact it had to work out, and later sessions in any project find it by searching.