BastionWeb - The Cockpit for an Agentic Stack
Web operator console for a fleet of autonomous agents — a cross-repo status board, an SDLC run control room, and semantic search over the company brain.
Overview
BastionWeb is where the whole system becomes visible. Nineteen repositories, dozens of planning blocks, agent runs executing in parallel — none of that is legible from a terminal, and a spreadsheet of statuses goes stale the moment it is written. The cockpit reads live state and renders it: a cross-repo board showing what is open, blocked and ready to start; a control room for driving SDLC runs and watching them stream; a markdown reader for the planning corpus; and a brain surface for semantic search over everything written. It is deliberately a thin client. All state lives behind `bastion serve`, the Rust console API, and the web app holds no authoritative copy of anything. That decision is what lets the phone client, the terminal UI and this cockpit disagree about presentation while agreeing about facts — and it means the web app can be rebuilt without migrating any data. The surfaces degrade independently, which matters more than it sounds. The brain search needs the Python retrieval layer to be up; the board, control room and reader need only the console. When retrieval is down, the brain surface renders an honest error state and the rest of the cockpit keeps working, rather than the whole app failing because one dependency is unavailable. The end-to-end suite is the part that earned its keep. It had been silently unrunnable for weeks — two dev-server entries competing for one directory lock meant no subset of tests could start, so forty spec files reported nothing while appearing green. Fixing the harness so the suite actually executes brought 255 tests back into play, and immediately surfaced defects that had been shipping unnoticed.
Technical Stack
Frontend
- ▸Next.js 16
- ▸React 19
- ▸TypeScript 5
- ▸Tailwind CSS 4
Data
- ▸bastion serve (Rust API)
- ▸Server Components
- ▸Streaming run updates
Surfaces
- ▸Cross-repo status board
- ▸SDLC control room
- ▸Markdown reader
- ▸Brain search
Testing
- ▸Playwright end-to-end
- ▸Production-build test server
- ▸Isolated build directory
Key Features
Cross-repo status board renders what is open, blocked and startable from live state rather than a hand-maintained list
Control room drives SDLC runs and streams their progress as they execute
Semantic search over the company brain, backed by the Python retrieval layer
Markdown reader for the planning corpus, so specs are readable without a checkout
Thin client by design — all authoritative state stays behind the console API
Surfaces degrade independently: brain search failing does not take the board down with it
End-to-end suite runs against a production build on its own port and build directory, so it cannot race the dev server
Technical Challenges
Rendering a dependency graph across nineteen repositories so that 'what can I start right now' is answerable at a glance
Keeping the client authoritative about nothing while still feeling responsive
Designing per-surface degradation so one unavailable backend does not cascade into a broken app
Repairing an end-to-end suite that had been reporting success while executing zero tests