The Status panel
Open Settings → Status on Desktop. On the phone layout and the installed phone app, Settings → Status opens the same list full screen. Each row has:- A colour and a word: Working (green), Slow (amber) or Down (red). The word is always shown, never colour alone.
- Since when, for anything that isn’t working.
- The affected subscription and the reason in plain words, such as needing to sign in again.
- The bots it affects.
- Fix, which opens Settings → Subscriptions (vendor lanes) or Settings → Connected apps (channels).
What is checked
Not on the board yet: model providers and the runtime itself.
Get told when a lane goes down
When a vendor lane turns red, Allternit opens a Lane down item in Needs you naming the bots that can’t reply, and sends a push. If any of those bots has a phone number or takes texts, the item is critical, because callers are waiting on it. When the lane works again the item resolves by itself. A lane left down is reminded about again until you fix it.Channel pause
If a channel’s last five messages all fail within ten minutes, Allternit pauses sending on that channel for two minutes, then tries one message. If that works, sending resumes; if it fails, the pause starts again. Messages are not discarded while paused; the Needs you inbox lists the ones that did not go through.For developers
- Gateway. Migration
0010_lane_canary.sqladdscanary_runs.worker/canary.tsticks everySUBS_GATEWAY_CANARY_SECseconds (default 180,0turns it off), callsWorkerPool.probeResidentfor each enabled account, and records the run. A pass callsrecordAdapterProbePassed, so an open drift breaker closes.GET /v1/lanes(scopetasks:read) returns{ lanes: [{ account_id, provider, label, health, state, breaker, lastProbeAt, lastOkAt, lastProbeOutcome, latency_ms }] }. - Runtime.
subscription_syncpullsv1/laneswith each minute’s sync, writes state changes tolane_samples(V259, kept 14 days), openslane_downthroughnetops::alerts::openon a move into red and resolves it on recovery.GET /api/v1/lanes/status(netops/lanes.rs) returns[{ laneId, kind: vendor_account|channel|model_provider|runtime, label, state: green|amber|red, since, reason, affectedBots: [{id,name}], action? }].channel_lane_open(conn, binding_id)is the channel breaker; it is computed fromchannel_message_log, so it needs no state of its own. - UI.
src/lib/lanes/lane-status.ts(one shared poller),src/components/lanes/LaneStatusBoard.tsx, andbot-status-line.tsfor the Bots list line.