Skip to content
Projects

enjambre

Live usable

I spread Claude Code jobs across my PC and a Mac mini; each one returns as a branch I review, with a live dashboard of the machines.

Agentic coding spread across hardware I own: a Windows PC orchestrates and a Mac mini runs Claude Code jobs headless, each in its own git worktree. Every job comes back as a reviewable branch and one line in an append-only ledger, and a local visor shows nodes, jobs and telemetry.

Technology

  • AI & agents
  • Automation
  • Infrastructure

Sector

  • Dev tools

Problem

I have a PC and a Mac mini that are idle most of the time, and unattended coding agents tend to run with too many permissions or leave nothing reviewable behind. I wanted to spread work across both with minimal permissions and a result I can audit.

Approach

A Windows PC orchestrates and an Apple Silicon Mac mini runs the Claude Code jobs headless. The PC validates a task contract, picks the machine from a table (routing.toml) plus live state, and sends the job over SSH. The node creates a worktree on its own branch, runs the agent inside tmux and leaves a result.json. The PC fetches the branch, scans it for secrets and pushes it; the jobs.jsonl ledger records node, branch, times, exit code and usage.

The visor is a local dashboard that reads each node’s telemetry (CPU, memory pressure, swap, temperature, network, processes) and the job ledger. Its demo mode runs the same code over a synthetic swarm, so it can be shown without exposing any real machine.

Limits: Mac and Windows only today; unattended jobs need the macOS keychain unlocked after a reboot; exit codes do not check the done criteria, so reviewing the branch is still a human step. Code under MIT; the visor’s fonts under SIL OFL 1.1.

Result

automated tests passing
405
public copy suite, Windows, 2026-10-11
ssh latency to the node over Ethernet (median of 10)
187ms
tutorial 29 §8, 2026-10-10

What I'd do next

  • Provision a Linux node: today there is only Mac and Windows.
  • Add the laptop as a third node, with no committed date.

Architecture

A PC sends coding tasks to a Mac and gets git branches back: contract, model-free routing, jobs that outlive the window, ledger and visor.

  • PC Windows
  • Mac mini
  • GitHub
  • Hostinger
  • Visitor's browser
git pushcola en carpetas (state/queue)ssh + scpsondeo · recogerssh cat · livevisor.htmlPOST firmadogh · gitTUSworker.shjobrun.pygit fetchcurl 127.0.0.1collect.pytmux-runventanaclaude -pclaude -pworktreeclon principalPC Windows · pythonCLI enjambreenjambre.py · routing.py ·largos.pyPC Windows · tarea programadaVigilanteenjambre watch ·presence.py · scheduler.pyPC Windows · pythonPublicación y demoexportar · demo ·subir_demoPC Windows · pythonVisorlive.py · build.py · web.pyMac mini · sistemasshsshd de la Mac ·llave dedicada ·BatchModeMac mini · bash 3.2worker.shworker.sh · tmux-run.shMac mini · python 3Supervisorjobrun.py: launch ·superviseMac mini · discoClon y worktreesPortfolio/{repo} ·wt/{repo}-{id}Mac mini · LaunchAgentPuenteagent/puente.py ·127.0.0.1:8766Mac mini · LaunchAgentColectorcollect.py · snapshot cada5 minMac mini · LaunchAgentServidor tmuxtmux -L enjambre · sesión enjambreMac mini · agenteAgente claude -pclaude -p sobre un worktree ·allowedTools explícito · tope deturnos y de gastoGitHub · repo privadoRepo de trabajoramas mac/{id}GitHub · repo públicoRepo públicoexportación filtradaHostinger · estáticoDemo públicaindex.html · live.js ·ring.jsHostinger · PHPVisor privadoingest.php · páginacon loginNavegador del usuarioNavegadorvisor.html · recargalive.jsC4 · nivel 2 (contenedores) · tráfico ambiente = llamadas reales · clic en una caja para el detallelínea continua = HTTP/SQL · punteada = adaptador elegido por configuración · caja punteada = existe fuera del proyecto
open in a new tab ↗

Flows you can replay

  1. Despachar y recoger
  2. Turno que sobrevive al cierre de la ventana
  3. Visor regenerado y publicado
  4. Añadir un nodo

How it was made

  • First distributed task — enjambre run: Windows sends, a branch and a ledger entry come back.
  • The bridge — A persistent Claude Code on the Mac that Windows talks to (enjambre chat/send/sessions), with Playwright, a ledger per turn and gui yes/no in status; the key's threat model.
Part of the Claude Code Ecosystem →

Sibling projects

Learn how it was made → Build Stack