Based on @ponder.ooo's "snake pit agent orchestrator" idea (bsky 2026-05-28) and Claude's metaphor-mapping elaboration: agents are snakes, tasks are food tossed into a shared pit; snakes devour/digest/regurgitate/excrete. A worker-pool-over-a-shared-queue topology (contrast the builder-adversary phase machine): - pit/ is a filesystem queue; snakes claim by atomic mv (no two eat the same food) - species = specialized agents: keeper (zookeeper), planner (regurgitation IS task decomposition), snake-1..3 (worker pool), cleanup (scavenger + coprophagy) - no [loop] phase machine; persistent agents self-pace via /loop - README carries the full bio→compute mapping table from the thread image Verified: `agents.py status --config agents.toml` lists all 6 agents + service. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.4 KiB
🐍 Snake pit
the "snake pit" agent orchestrator. each agent is a snake. you toss food (tasks) into the pit. agents can devour tasks, gradually digest them, regurgitate them whole or in broken / digested parts, excrete waste (chat logs, debug traces, &c), &c. obviously some specialist agents are on cleanup duty
— @ponder.ooo, 2026-05-28
An agent-orchestrator example built on that idea. Where the sibling builder-adversary example is a
phase machine (an ordered plan, two roles handing off), the snake pit is a worker pool over a
shared queue: identical workers pull tasks from a pit, plus specialist species for planning and
cleanup. Same harness, completely different topology — that's the point of having both.
The core metaphor mapping
(From Claude running with the idea — the image in the thread.)
| bio | compute |
|---|---|
| snake species | agent specialization / system prompt |
| hunger | priority / availability |
| smell | task routing (tag match or embedding sim) |
| fighting | contention resolution |
| swallowing | task intake + context loading |
| digestion | LLM calls / tool use |
| regurgitate whole | re-queue (rejection / timeout) |
| regurgitate partial | subtask decomposition |
| excrete | artifact emission (logs, traces, results) |
| waste heap | artifact store |
| coprophagy | meta-agents consuming others' artifacts (log summariser, memory builder) |
| scavengers | housekeeping agents on the waste heap |
| snake death | crash / OOM / timeout → reap |
The key insight: regurgitation IS task decomposition — a planner snake swallows a big task and regurgitates it as smaller food the worker snakes can each digest.
How it maps onto agent-orchestrator
- The pit = a filesystem queue (
pit/). Snakes coordinate ONLY through it and claim work by atomicmv, so two snakes never devour the same food. Full layout + protocol:pit/README.md. - Snake species = agents with different prompts (the "agent specialization" row):
- keeper (zookeeper, persistent) — tosses food in, keeps the pit healthy, reports.
- planner (persistent) — regurgitation = decomposition: eats big food, regurgitates smaller
food for the workers (
prompts/planner.md). - snake-1..3 (persistent worker pool) — devour → digest → regurgitate → excrete
(
prompts/snake.md). Scale the pool by copying a block. - cleanup (persistent) — the scavenger on the waste heap; also does light coprophagy
(composts logs into a digest) and reaps food abandoned by a snake that died
(
prompts/cleanup.md).
- hunger / smell / fighting — emergent from the loop: an idle snake naps (low hunger), picks the
food it can do (smell), and the atomic-
mvclaim resolves contention (fighting). - snake death = crash / timeout → reap — the watchdog heals a dead snake (
watch = "heal"); the cleanup snake reclaims whatever food it died holding.
Run it
Needs claude on PATH. From this directory:
python3 ../../agents.py status --config agents.toml # read-only: what would run
python3 ../../agents.py up --config agents.toml # keeper + planner + 3 snakes + cleanup + watchdog
python3 ../../agents.py logs snake-1 --config agents.toml
python3 ../../agents.py down --config agents.toml
A sample piece of food (pit/food/food-0001-reverse-string.md) is already in the pit, so the snakes
have something to eat on first up. Toss more by writing pit/food/food-<id>-<slug>.md (schema in
pit/README.md) — or ask the keeper to.
To watch the mechanics without an agent CLI, set defaults.backend = "demo" in agents.toml
(the demo backend just idles) and run up / status / down.
Extending it
- More workers → copy a
snake-Nblock inagents.toml. - A new species → add an
[[agent]]with its ownprompts/<species>.md(e.g. a coprophagy meta-agent that builds long-term memory from the waste heap, distinct from the scavenger). - Smarter routing ("smell") → give food
tags:and have snakes prefer matching tags. - Real coordination across hosts → back the pit with a git repo instead of a local dir and use
the watchdog's
handoffinbox pings (see thebuilder-adversaryexample).
This example carries no project-orchestrator/fleet metadata — like any project it can be run by hand and has no idea a fleet exists.