First I created a simple multi-session implementation using beads and a bit of bash only — https://news.ycombinator.com/item?id=48204719. A bash loop monitors the beads queue, claims a task, and passes it into claude -p.
This worked fine, and I decided to make the implementation more capable, so I created fleet — a Python supervisor for running coding agents in parallel: https://github.com/sermakarevich/fleet.
A few core ideas:
- The beads DB is centralized — it lives in ~/.fleet. No need to init it in every project where you want to run agents. fleet bd create records the cwd where the task was created, and the agent is spawned in that same location. beads is a git-backed issue tracker that gives agents a shared queue of tasks with dependencies, statuses, and priorities — so multiple sessions can claim, work on, and hand off tasks without stepping on each other.
- fleet supports 3 coders: claude, agy (Antigravity), and codex, and adding a new one is a matter of minutes. I tested claude extensively, agy briefly, and I don't have a subscription for codex — so it's implemented but not tested yet.
- fleet can spawn as many coding agents as you like. fleet config set max_concurrent=10 and keep adding tasks with fleet bd create --title "..." --description "...", or with a specific coder/model per task: fleet bd create --coder agy --model opus --title "..." --description "...". When I started, 3 parallel coding sessions were enough for me; now I can manage 10+. The reason max_concurrent=3 is the default to not hit session limits.
- fleet has few useful cli command to help with navigation:
-- fleet tasks - display tasks in progress, what coder is used, what context consumption is
-- fleet task <task-id> log | plan | knowledge
-- fleet config show | set
This works nicely for me. fleet also pairs well with a spec-driven approach: https://news.ycombinator.com/item?id=48231575. Tokens are the bottleneck now — I have a few Claude subscriptions and rotate between them when one is exhausted. I also cleaned up all my plugins, skills, and CLAUDE.md files to stop polluting the context — I found that some plugins were installed multiple times and loading the same skills twice, doubling their token cost.