taurhaus / Mesh
A desktop control plane for persistent multi-agent development.
The problem
Running Claude Code, Codex and Gemini CLI across several repositories created a coordination problem that ordinary terminal management did not solve. Each session was productive on its own. The difficulty lived one level above: which project had live work, which agent owned which task, which process had silently died, and how to resume after a context reset or a machine restart.
The interesting problem shifted from code generation to orchestration.
What I built
A desktop app, a companion daemon, and Mesh: a local coordination layer built on explicit team state, tasks, inboxes, tmux processes and recovery records. It observes the real development environment instead of replacing it, working with existing repositories, CLI tools, task files, Git history and local filesystems. Teams persist across projects, every member is individually addressable, and the operator can always attach to the underlying session.
Rust / Tauri 2 · Svelte 5 · SQLite / Tantivy · tmux · Windows/WSL2 · macOS
What was technically interesting
- Durable roles, volatile runtime. An architect stays the architect even when its process, pane or model session is replaced. Team identity is recorded separately from rebuildable runtime attachment.
- Worker health as composite state. Process state, recent activity, task lifecycle, messaging and validation evidence are separate signals; none is sufficient alone. An agent that is producing text is not necessarily moving its task forward.
- Context recovery as a normal lifecycle event. Compaction is detected, resolved back to a team member, and bounded working context is re-delivered, behind freshness, membership and task guards so stale work is never blindly injected.
- Cross-vendor coordination without a hosted API. File-backed tasks and inboxes keep coordination inspectable; tmux keeps each tool in its native interactive environment.
- Operational visibility. Multi-agent failures are usually boundary failures: task state, process state, filesystem and UI disagree. One view over all of them makes the disagreement diagnosable.
What I learned
The constraint moved into my own attention. Faster implementation did not remove product choices, review, prioritization or acceptance; it raised the rate at which they arrived. The operator became an interrupt handler for machine-speed workers.
If I started again, I would treat human attention as an explicit architectural resource from day one: decision briefs instead of question streams, work-in-progress limits sized to review capacity rather than model concurrency, and escalation driven by confidence and impact. The essay I Was the Bottleneck tells that story in full.
Status
Experimental, and not under active development. Much of what taurhaus explored has since moved closer to the agent harnesses themselves, which I read as validation of the problem rather than a loss. The value now is the engineering record: which boundaries were hard, which failure modes appeared under sustained use, and where orchestration shifted costs instead of removing them. The full retrospective is in the repository.