Timovi Claude Code agenata u tmuxu, po vertikalama — i tvrdnja da tmux nije poanta.
┌──────────────┬──────────────┬──────────────┐
│ │ orkestrator │ dev1 │
│ planner │ (fable) │ (opus) │
│ (opus) ├──────────────┼──────────────┤
│ ◀ TI │ reviewer │ dev2 │
│ promptaš │ (fable) │ (opus) │
└──────────────┴──────────────┴──────────────┘
36% 32% 32%
Jedan prozor, pet Claude Code panela, jedan čovjek koji promptira samo u
jednom od njih. Ostalo se dogovara među panelima preko tmux send-keys.
Razvojni tim radi zato što flutter analyze postoji: jeftin, objektivan,
nepotkupljiv orakl. Svaka iteracija petlje završava u stanju koje se provjeri
bez ičijeg mišljenja. Kad je crveno — nema rasprave.
Preslikaš li topologiju na drugu vertikalu bez orakla, dobiješ pet Claudeova koji se međusobno slažu. A to je korelirana greška, ne provjera: isti model, isti trening, ista sljepoća. Međusobni pregled hvata nedosljednost i aljkavost — ne zajedničku zabludu.
Pravilo repoa: nova vertikala = novi orakl + (jeftino) preslikana tmux topologija.
tmux dio je ~80 % copy-paste. Orakl je stvarni posao. Zato core/tim-orakl.sh
pada s izlaznim kodom 3 kad vertikala nema orakl, umjesto da tiho prođe.
Detaljno: docs/orakli.md.
| Vertikala | Orakl | Što probija | Status |
|---|---|---|---|
| development | statička analiza + testovi (auto-detekcija) | kod se ili kompajlira ili ne | dokazano u produkciji |
| research | provjeri.sh — URL-ovi, citati fajl:redak, verzije, spikeovi, unakrsne reference |
izmišljena tvrdnja s uvjerljivim izvorom | orakl napisan i korišten, uloge nisu podignute u ovom obliku |
| legal | spec — doslovna provjera citata propisa, strukturni linter, numerički model | uvjerljiv broj članka koji ne kaže to što se tvrdi | dizajn |
| pitch | spec — build, prelijevanje slajda, brojka bez izvora, struktura | brojka bez pokrića, TAM izmišljen odozgo | dizajn |
Statusi su doslovni. Dvije vertikale su nedovršene i namjerno su tu: teza je da je orakl teški dio, pa repo koji bi prikazao samo dovršenu vertikalu tvrdio bi suprotno.
Uzorak se ponavlja: u sve tri ne-razvojne vertikale zajednička zabluda je
uvjerljiv referenc. Zato sve tri imaju orakl istog oblika — provjeru da
izvor postoji i kaže ono što se tvrdi. Napisana instanca tog obrasca
(research) izravni je predak druge dvije.
git clone https://github.com/stepanic/claude-tmux-teams.git ~/git/claude-tmux-teams
cd ~/projekti/moj-repo
~/git/claude-tmux-teams/core/ugradi.sh development
# 1. napiši pravila svog repoa (uska grla, poznati padovi, konvencije)
$EDITOR .tim/pravila.md
# 2. orakl mora biti zelen PRIJE tima
./scripts/tim-orakl.sh
# 3. prozor otvaraš TI, pa:
./scripts/tim-kickoff.sh --freshPuni vodič: docs/instalacija.md.
- Ti u planneru — razgovor, istraživanje koda, dogovor opsega.
/delegiraj→ plan udocs/plans/, s popisom fajlova po tasku (to je ugovor o izolaciji — worktreeja nema).- Orkestrator dijeli taskove dvama devovima — samo ako su im fajlovi disjunktni.
- Devovi rade, završe markerom
SAŽETAK. Ne commitaju. - Orakl, pa reviewer:
git diffnaspram plana, verdikt u.tim/reviews/. DORADA→ istom devu, bez/clear.OK→ orkestrator commita, pa/clear.
U koracima 3–6 ne radiš ništa. Napredak stiže u tmux status bar — nijedan agent ne smije pisati u tvoj panel, jer bi ti poruka upala usred prompta.
core/ generičan plumbing — ne zna za nijednu domenu
tim.sh dizanje: layout iz stringa, prompti iz fajlova
tim-send/read/status/ kanal prema panelima, stanje, nadzor
tim-watch/kill/kickoff
tim-orakl.sh hook s ugovorom o izlaznim kodovima
tim-cost.py MJERI potrošnju iz transkripata (ne procjenjuje)
ugradi.sh symlinkaj u radni repo
verticals/<x>/
tim.conf uloge, modeli, layout, marker
roles/*.md system prompti uloga
commands/*.md slash komande (ritual)
oracle/provjeri.sh ← ovdje je stvarni posao
docs/
orakli.md teza, u punoj dužini
zamke.md sve što je puklo, i zašto
mjerenja.md trošak po ulozi i modelu, izmjeren
odluke.md zašto je repo složen ovako
instalacija.md kako ga uvesti u svoj projekt
2026-08-26-stanje-… što je dokazano a što je nov kod, i što je otvoreno
test/smoke.sh digne tim u praznom repou, BEZ poziva modela
./test/smoke.sh # razvojna vertikala (41 provjera)
./test/smoke.sh research # druga vertikala, druge ulogeTest umjesto claude na PATH stavlja stub koji glumi TUI, pa provjerava sve
što je stvarno lomljivo — layout, mapa uloga, renderiranje prompta, isporuka
poruke, odbijanje pisanja u čovjekov panel, detekcija stanja, gašenje — za
nula tokena i u vlastitom privremenom repou.
core/ je generičan i nikad se ne kopira — vertikale ga konfiguriraju.
Zašto: dvije stvarne kopije iste postave su već divergirale, a ispravci se ne
vraćaju unatrag (docs/odluke.md, O1).
Cijeli popis: docs/zamke.md.
- Prozore otvara čovjek, ne agent. Kad
--freshubije session na koji su prozori attachani, AppleScript sloj terminala se trajno zablokira (AppleEvent timed out -1712) — i tim ostane mrtav, jer jeosascriptstajao na kritičnom putu. - Fable je dvostruko skuplji od Opusa ($10/$50 vs $5/$25 po MTok). Podjela modela stoji zbog brzine koordinacije, ne cijene.
- Polling je skuplji od razmišljanja. Orkestrator je u jednom krugu bio
najskuplji panel u timu ($4,15 od $12,28) bez ijednog retka koda — 2,4 M
cache-read tokena. Rješenje:
untilpetlja u shellu umjesto ponovljenogcapture-pane. - Panel koji čeka odgovor izgleda kao gotov. Zato „gotov" znači marker u ispisu, ne mirovanje.
- Prompt u TUI input boxu je
❯+ U+00A0, ne obični razmak — parsere validiraj nacapture-pane | od -An -tx1, ne na vlastitoj fixture-i. - tmux radi prefix matching na imenima sessiona — bez
=kill-session -t timubije tuđi tim.
Po defaultu svi paneli rade s --dangerously-skip-permissions: agenti ne
pitaju ni za jednu izmjenu fajla ni za jednu shell komandu. To je svjesna
odluka u repou gdje je git sigurnosna mreža i gdje se radi u izoliranom
projektu.
Nije preporuka za tuđi kod, produkcijske vjerodajnice, direktorij s osobnim podacima, ni bilo što gdje „vrati na zadnji commit" nije dovoljan oporavak. Oprezniji mod:
TIM_PERMISSION_FLAG="--permission-mode acceptEdits"- Nije zamjena za čovjeka. U pravnoj vertikali izlaz je nacrt koji odvjetnik pregleda; u pitch vertikali deck ne proizvodi trakciju koju nemaš.
- Nije framework.
core/je ~1000 linija bash-a i jedan Python skript, bez ijedne ovisnosti izvantmux,claudeipython3. - Nije benchmark. Brojke su mjerene na stvarnom radu jednog čovjeka, ne na kontroliranom eksperimentu.
MIT.