Taskforce — a Skill that supervises multiple coding CLIs inside cmux #9867
lhanyun
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
I've been using cmux to run multiple coding agents (codex, claude, opencode) at once, and the visibility is great — notification rings, sidebar highlights, the attention panel. But once I scaled past a few panes, I noticed the visibility only goes so far: I still had to manually babysit each agent. Approving permission menus one by one, catching drift before it wasted a run, hand-starting the next CLI when one finished, figuring out whether "done" actually meant done.
cmux tells you which agent needs you; it doesn't decide what to do about it. That gap is exactly what I wanted to close.
So I built Taskforce — a Skill that adds an outer supervision loop on top of cmux. It launches your coding CLIs in cmux surfaces, reads their real terminal tails every ~15s, and lets the host agent (Chief) decide per node: continue / send a key or correction / relaunch an exited worker / complete after verification.
Repo: https://github.com/lhanyun/taskforce
Install:
npx skills add lhanyun/taskforce --skill taskforce --agent codex --globalWhat it does
You describe the workflow in one sentence to your coding CLI:
Taskforce then:
cmux workspace create)Workers run independently between ticks. The runtime never kills a live worker for relaunch — it only relaunches after a worker PID has actually exited.
Why it complements cmux
cmux is a terminal built for AI coding agents — notification rings, attention panel, agent session restore, tmux-compat shims so a CLI's own subagent panes become native splits. That covers visibility and per-CLI lifecycle really well. What it deliberately doesn't do is make decisions across CLIs: it won't auto-approve a permission menu, won't send a correction when an agent drifts, won't launch the next CLI when one finishes, won't verify a task is actually done. Those are left to the human.
Taskforce fills exactly that layer — it reads what cmux can show you, and acts on it:
enterfor safe project-scoped opscompleteIt uses cmux's CLI API throughout:
workspace createto launch,read-screen/capture-paneto observe,send/send-keyto intervene,pingfor health checks.CMUX_SURFACE_IDenv var is how it tracks each worker. cmux stays the terminal and transport; Taskforce is the decision layer on top.Design choices worth noting
stale_screen).send/relaunch/completeis logged to.taskforce/state/workflows/<id>/decisions.jsonlfor post-run review. Ordinarycontinues are not accumulated.Where it fits
If a single CLI + its subagents handles your task, keep it simple — Taskforce won't make that better. It's for when you genuinely need different CLIs (different models, tools, configs) to collaborate on one task, and the manual pane-switching and handoff becomes the bottleneck.
I'd love feedback from cmux power users who run multiple agents — especially on:
send-based permission approval is the right granularity, or whether cmux would rather expose a first-class permission hook for external decision-makersHappy to write up a cmux Agent Integrations doc page if the maintainers think this fits.
All reactions