Parent: #204 | Phase 1: Single Rig, Single Polecat
Goal
Minimal UI to create a rig, sling work, and watch an agent work. Thin first pass following existing dashboard patterns.
Pages
| Route |
Component |
Purpose |
/gastown |
Town list |
List user's towns, create new |
/gastown/[townId] |
Town overview |
List rigs, active convoys |
/gastown/[townId]/rigs/[rigId] |
Rig detail |
Bead board, agent list, agent stream |
Key Components
- Bead board: Simple list/kanban of beads by status (open → in_progress → closed). Read from DO via tRPC → Gastown worker API.
- Agent card: Shows agent identity, status, current hook. Links to conversation stream.
- Agent stream: WebSocket connection to the container's stream endpoint (via
getAgentStreamUrl tRPC query). The container proxies Kilo CLI output events.
- Sling dialog: Form to create a bead and assign it. Inputs: title, body, model selector.
- Mayor chat: Direct message input that sends to the Mayor agent. Uses
sendMessage tRPC mutation.
Revised: Agent stream now connects to the Town Container's stream endpoint instead of cloud-agent-next WebSocket. Mayor chat input added.
Dependencies
Acceptance Criteria
Parent: #204 | Phase 1: Single Rig, Single Polecat
Goal
Minimal UI to create a rig, sling work, and watch an agent work. Thin first pass following existing dashboard patterns.
Pages
/gastown/gastown/[townId]/gastown/[townId]/rigs/[rigId]Key Components
getAgentStreamUrltRPC query). The container proxies Kilo CLI output events.sendMessagetRPC mutation.Dependencies
Acceptance Criteria