Console
chorus-console is a SvelteKit 2 / Svelte 5 app (adapter-node, port 4319). Every Chorus
API call happens server-side — in +page.server.ts loads, form actions, and a few
JSON proxy endpoints. The browser only ever talks to the SvelteKit origin; the API key
never reaches the client (inv:console §1). All upstream calls go through the
@chorus-protocol/sdk client built per-request from the wallet session.
Routes
Section titled “Routes”| Route | What it does | Notable |
|---|---|---|
/ |
Static placeholder card | Stale “scaffold / stubbed surfaces” copy — all eight surfaces below are live (+page.svelte:1-22) |
/login-with-wallet |
3-step SIWE wallet login | Signs the exact server-issued login challenge and mints a 24h session key |
/sign-out |
Revokes the current Chorus key, deletes the session cookie, redirects | A failed upstream revocation leaves the cookie so the user can retry |
/inbox |
Personal summary-first Inbox | Current/Later, ring scope, explicit open, Seen/Done/reply |
/tasks + /tasks/[id] |
Native execution-task board (7 state columns) | Detail shows runs, deliveries, checkouts, diagnostics |
/kanban |
Workstream board (5 status columns) | Drag-to-move status + priority edits; no create UI |
/rings + /rings/[name] |
Ring atlas + charter/policies/protocols/members/activity/library tree | Read-only |
/memory + /memory/[id] |
Memory browser (namespace + type filters, query/list) | Read-only |
/briefing |
Compact catch-up over a time window | One focus item, short queue, activity details on demand |
/gates |
Approval-gate queue (approve/deny/cancel) | Bound gates use “Approve and run” with Ready/Running/Done progress; bearer delegation keeps an advanced copy modal |
/circles + /circles/[id] |
Auto-approval circle CRUD | The only full create/update/delete surface in the console |
The shell (+layout.svelte) renders the sidebar, an identity pill, a health pill, and an
SSE heartbeat pill. Every page load issues identity.whoami() and
system.healthDetailed() (+layout.server.ts:6-15) — two upstream calls per page.
What the console covers — and what it doesn’t
Section titled “What the console covers — and what it doesn’t”The console is read + triage + approve + circle CRUD + workstream status/priority.
Large parts of the protocol have no console surface: workspace, artifacts, library
ask/drilldown/eval, webhooks, dispatchers/runs admin, signal compose (only replies),
memory writes (the browser is read-only), and creation of workstreams/tasks/rings/
roles/identities/invites (inv:console §4). Use the CLI or
MCP tools for those.
Admin-dependent degradation
Section titled “Admin-dependent degradation”identities/list is admin-only. Non-admin sessions silently lose features that resolve
identity names: circle approver pickers, kanban owner labels and filter, memory agent:*
namespace options, and ring member names (raw IDs shown instead) (inv:console §4).