>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Shell

Zo organiseer je een dozijn draaiende Claude Code-sessies in tmux

Als je Claude Code in de terminal opstart voor een paar snelle bewerkingen, ziet alles er netjes uit. Voer het commando uit, geef het een taak, wacht op het antwoord, sluit het af. Problemen ontstaan wanneer je vier of vijf projecten tegelijk open hebt. In de ene repository is de agent bezig met het refactoren van tests, in een andere schrijft hij een database-migratie, en in een derde draait hij een build.

Binnen een half uur wordt de terminal een doolhof. Het is onduidelijk waar de agent wacht op opdrachtbevestiging, waar hij nog scripts uitvoert, en waar hij allang klaar is en gewoon idle staat. Je moet handmatig door tmux-vensters bladeren en tijd verspillen met het controleren van statussen.

Tak Matsuyama, auteur van de blog devas.life en verschillende populaire utilities voor Neovim en tmux, heeft een oplossing voor dit probleem ontwikkeld. Zijn plugin tmux-claude-session-manager zet verspreide terminalvensters met agents om in een overzichtelijke lijst met snel schakelen.

screenshot

Wat de plugin doet

In wezen is het een taakmanager voor Claude Code binnen tmux. Het tool combineert de fzf-interface, tmux's ingebouwde popup-mechanisme en Claude Code's eigen interne API.

Je drukt op een toetscombinatie en ziet een zwevend venster met een lijst van alle draaiende sessies. Elk proces toont direct zijn status:

  • working (de agent is druk bezig met genereren of uitvoeren van commando's);
  • waiting (er is invoer of bevestiging van de gebruiker vereist);
  • idle (de sessie is inactief);
  • tijd sinds de laatste activiteit van de agent.

Agents die je aandacht nodig hebben worden automatisch naar de bovenkant van de lijst verplaatst. Een live preview van het scherm via capture-pane wordt ernaast weergegeven. Je kunt direct zien welke vraag de assistant heeft gestuit, zonder zelfs maar naar de sessie over te schakelen.

Druk op Enter en je komt direct in de context van het gewenste venster en wordt de sessie in een popup-frame geopend. Klaar met de dialoog of de agent heeft zijn werk afgerond — druk op de toetscombinatie om het proces te verwijderen, en de sessie sluit netjes af.

Interessante details onder de motorkap

Er zijn hier geen aangepaste daemons of zware bash hooks die ps output parsen. De auteur koos een elegantere aanpak.

Claude Code versie 2.1.139 en hoger kan informatie over zijn agents blootleggen via het ingebouwde claude agents --json commando. Elke draaiende kopie rapporteert zijn huidige status aan een lokale supervisor. De plugin leest deze JSON simpelweg via jq.

De belangrijkste technische uitdaging was het koppelen van processen aan tmux panes. Op macOS rapporteert een pane bijvoorbeeld vaak de PID van de parent shell in plaats van het child programma. Binnen de plugin linkt het agents.sh script identifiers langs een keten: pid -> tty -> tmux pane.

Dankzij deze binding volgt de plugin processen in plaats van sessies. Als je drie verschillende agents in één project lanceerde of Claude in een regulier aangrenzend pane opstartte zonder de plugin, zal het tool nog steeds elk proces vinden en als een aparte regel weergeven. De hele poll kost slechts drie systeemcalls, dus de interface werkt zonder vertragingen.

Nog een leuk detail: als je het selectiemenu (prefix + u) opent terwijl je al binnen een Claude popup zit, ontkoppelt de plugin eerst de huidige popup en vergroot dan het selectievenster naar de volledige grootte van de buitenste terminal. Geen geneste matroesjka-poppetjes van steeds kleiner wordende frames.

Installatie en basisconfiguratie

Je hebt tmux versie 3.2 of hoger met popup-ondersteuning nodig, fzf geïnstalleerd, het jq-hulpprogramma en een recente Claude Code-release.

Als je de TPM-pluginmanager gebruikt, voeg je deze regel toe aan je ~/.tmux.conf configuratiebestand:

set -g @plugin 'craftzdog/tmux-claude-session-manager'

Daarna druk je op prefix + I om het te laden.

Standaard gebruikt de plugin twee toetscombinaties:

  • prefix + y lanceert een nieuwe Claude-sessie in de huidige directory binnen een popup-venster (of maakt verbinding met een bestaande);
  • prefix + u opent de fzf-selector met alle actieve agents.

Binnen het lijstvenster werken standaard pijltoetsen en tekstfiltering. Enter schakelt naar de geselecteerde sessie, en Ctrl-x beëindigt het proces geforceerd.

Parameters zijn eenvoudig te overschrijven. Je kunt bijvoorbeeld launch flags voor Claude zelf instellen of de vensterdimensies wijzigen:

set -g @claude_popup_width '85%' set -g @claude_popup_height '85%' set -g @claude_args '--dangerously-skip-permissions'

Voor fans van modale besturing heeft de README een goed voorbeeld van integratie met vim-achtige layout. Je kunt fzf zo configureren dat de lijst in navigatiemodus opent via j/k, en overschakelen naar zoekmodus gebeurt met de i of a toetsen:

set -g @claude_fzf_options "\ --prompt 'nav> ' \ --bind 'j:down' \ --bind 'k:up' \ --bind 'q:abort' \ --bind 'x:execute-silent(kill {3})+reload(sleep 0.3; \$CLAUDE_PICKER --list)' \ --bind 'i:unbind(j,k,q,i,a,x)+change-prompt(filter> )' \ --bind 'a:unbind(j,k,q,i,a,x)+change-prompt(filter> )' \ --bind 'esc:rebind(j,k,q,i,a,x)+change-prompt(nav> )'"

Is het de moeite waard om te installeren

Als je Claude Code één keer per week draait voor een paar regels code, kun je gemakkelijk zonder de plugin. Een gewone terminaltab is volledig toereikend.

Het tool is nuttig voor degenen die de agentbenadering actief gebruiken in de terminal en taken paralleliseren over verschillende branches of subprojecten. De plugin elimineert de last van het vinden van de juiste tab en consolideert background task monitoring naar één duidelijk scherm. Installatie kost een paar minuten, en de script-broncode is compact en transparant, zonder enige onnodige magie.

Gerelateerde projecten