progetti
Relay

Relay

in corso· 2026 · in evidenza

Terminale nativo per macOS pensato per far girare tanti coding agent in parallelo, con lo stato di ogni agente letto dagli hook e non dall'output.

Il perché

Lo stato di ogni agente arriva dagli hook di Claude Code e Codex, non dal parsing dell'output, quindi resta giusto anche sotto un muro di log. L'ho scritto in Swift partendo da zero esperienza di Swift.

Lavoro con cinque o sei sessioni di Claude Code e Codex aperte insieme, su progetti diversi. In un terminale normale, per capire quale agente sta aspettando una risposta, devo passare tab per tab. Relay nasce per togliere quel giro.

Come funziona

  • Lo stato di ogni agente (in esecuzione, in attesa di input, errore, finito) arriva dagli hook nativi di Claude Code e Codex, non dal parsing dell’output. Resta giusto anche sotto un muro di log di build.
  • Un modello di attenzione in tre passi: una sessione che ti vuole si fa notare, una che hai visto resta in sottofondo, rispondere la spegne.
  • Una dashboard di triage (Cmd+D) mette tutte le sessioni su uno schermo, in quattro corsie per urgenza.
  • Workspace con gruppi e archivio, pane divisi con i propri tab, finestre multiple e un layout che sopravvive al riavvio.

È scritto in Swift 6 e AppKit, con SwiftTerm come motore dietro un’astrazione che lascia spazio a libghostty. I terminali inattivi vengono scaricati dalla memoria: circa 90 MB residenti con un terminale vivo, 92 con tredici, e 2,4 µs aggiunti nel caso peggiore su un tasto. Metodo e numeri sono nel repo.

È open source con licenza MIT e si installa con Homebrew: brew install --cask essedev/relay/relay-terminal.