BOS Live Sessions · Setup
2026-05-14 · Fa funzionare il widget "Sessioni attive" del BOS. Tempo setup: ~2 minuti, una tantum per macchina (Gregorio + Loris).
Cosa fa
Quando apri una sessione Claude Code in Multiverbe-Business (o in un repo
correlato con questa config), degli hook registrano la sessione nello store KV
di produzione. Risultato:
- Su
https://bos.multiverbe.comil widget Sessioni attive mostra in tempo reale chi sta lavorando e a cosa (polling ogni 5s). - All'avvio di ogni sessione, il tuo Claude Code stesso riceve nel contesto la lista delle sessioni attive — così sa se l'altro sta già lavorando su qualcosa.
Prima questo non funzionava: il lato server (endpoint /api/live/sessions
KV-backed) e il lato browser (polling-live.js) erano già pronti, ma niente
registrava le sessioni. Questo setup è il ponte mancante.
Come funziona
| Pezzo | File | Ruolo |
|---|---|---|
| Hook wiring | .claude/settings.json (committed) |
SessionStart→start, UserPromptSubmit+Stop→heartbeat, SessionEnd→end |
| Bridge script | scripts/live/bos-session.mjs (committed) |
Chiama /api/live/sessions (register / heartbeat / end / list) |
| Config locale | .claude/bos-live.local.json (gitignored) |
URL + credenziali Basic Auth + tuo nome (actor) |
| Stato per-sessione | .claude/.live/<session_id>.json (gitignored) |
Mappa session_id Claude Code → id KV, per heartbeat/end |
| Endpoint | api/live/sessions.js |
Funzione Vercel KV-backed · GC sessioni stale >5min |
L'endpoint è dietro Basic Auth (come tutto il BOS), quindi lo script manda le credenziali nel config locale. Sono le stesse con cui apri il BOS nel browser — nessun segreto nuovo.
Setup (per Gregorio e per Loris, ognuno sulla propria macchina)
-
Copia il template:
.claude/bos-live.local.json.example → .claude/bos-live.local.json(stesso percorso, togli
.example) -
Apri
.claude/bos-live.local.jsone compila:{ "bos_url": "https://bos.multiverbe.com", "bos_user": "<utente Basic Auth del BOS>", "bos_pass": "<password Basic Auth del BOS>", "actor": "Gregorio" }bos_user/bos_pass: le stesse credenziali con cui apribos.multiverbe.com.actor: il tuo nome —"Gregorio"oppure"Loris".
-
La prima volta che Claude Code apre il repo, chiede di approvare gli hook di
.claude/settings.json. Approva. -
Fatto. Apri una nuova sessione Claude Code in
Multiverbe-Business: comparirà nel widget Sessioni attive del BOS entro ~5s.
Il file .claude/bos-live.local.json è gitignored: resta solo sulla tua
macchina, non finisce su GitHub.
Test manuale
Con la config a posto:
node scripts/live/bos-session.mjs list
Stampa le sessioni attive in quel momento. Se stampa Nessun altro al lavoro adesso ed effettivamente non c'è nessuno, funziona.
Troubleshooting
- Widget sempre vuoto anche con sessioni aperte → verifica che
.claude/bos-live.local.jsonesista e che le credenziali siano giuste (provanode scripts/live/bos-session.mjs list: se dà errore silenzioso, l'auth è sbagliata). Controlla anche che gli hook siano stati approvati. listnon stampa nulla / errore → KV non configurata su Vercel. Servono le env varKV_REST_API_URL+KV_REST_API_TOKENsul progettomultiverbe-bos(vediops/phase-g-full-setup.md).- Sessione resta "attiva" dopo che ho chiuso Claude Code → normale fino a ~5 min: l'endpoint fa GC delle sessioni senza heartbeat da oltre 5 minuti.
- Lo script non blocca mai una sessione: se la rete è giù o l'auth è sbagliata, gli hook falliscono in silenzio e Claude Code parte comunque.
Note
- Heartbeat su
UserPromptSubmit(cosìcurrent_task= ultima richiesta) e suStop. Durante un turno molto lungo (>5 min) la sessione può risultare stale per qualche secondo, poi si riallinea: comportamento accettato. - Più sessioni Claude Code nello stesso repo = più righe nel widget (ognuna ha
un
session_iddistinto). Voluto. - Per estendere il tracking ad altri repo (es.
D:\Desktop\Multiverbe\): copiare lì.claude/settings.json+scripts/live/bos-session.mjs+.claude/bos-live.local.json.