Acasuso.
← All work

Agent Fleet Dashboard

Fleet console: every product and agent in one catalogue, filterable by status, environment and customer.Open full-size image ↗
Fleet console: every product and agent in one catalogue, filterable by status, environment and customer.
The dev panel: the shared backlog, synced with the coding agents, so work is claimed and started from the dashboard. Client references blurred.Open full-size image ↗
The dev panel: the shared backlog, synced with the coding agents, so work is claimed and started from the dashboard. Client references blurred.

Category: Internal tool / platform Status: Live, active development Time window: April 2026 → ongoing Live URL: Internal (auth-gated to two Stratas operators) – stratas.space

Purpose

The internal operator console for Stratas' AI agent fleet – reconciles what each product costs, ships, and serves in a single dashboard the operators open daily. Now also the shared build backlog between the operators and their Claude Code sessions.

Who it is for

Stratas' operators. Not a multi-tenant SaaS – a two-user cockpit. The Dev tab extends that model: four writers (two humans + each operator's Claude Code sessions) sharing one backlog.

Stack

  • Frontend: Vite + React 18 + Tailwind (Geist Mono aesthetic, no component framework)
  • Backend: Vercel Node functions (api/); daily finance-snapshot + Fiken-sync cron
  • Data: Supabase (deny-all RLS + two-user allowlist), bundled agents.json fallback, Supabase realtime for backlog
  • LLM / AI: Anthropic SDK + Vercel AI SDK v5 (Claude Sonnet 4.6 for Insights chat)
  • MCP: Remote MCP server at /api/mcp exposing the backlog to Claude chat, Cowork, mobile, and Claude Code in any repo (mcp-handler 2.x, 13 tools, per-operator token with crypto.timingSafeEqual, 60 writes/minute budget)
  • Infra: Vercel, GitHub Actions weekly seed-sync from Obsidian vault

My contribution

Defined the daily operating needs, shaped the product catalogue and cost views, designed the integrations, and built the console. Added cost attribution through Langfuse, a finance panel that brings in Folio banking and Fiken bookkeeping, and a dev panel connected to Claude Code so work is synced, claimed and started from the dashboard. Deployed the product and refined it through daily use.

Notable capabilities

  • Two-project Langfuse routing so client-billed and internal spend never blend into the same total
  • Live per-product cost reads in under 500 ms with a 5-minute cache
  • Reversible operator edits – sync-owned and operator-owned fields separated in the schema so a re-seed never overwrites edits
  • Insights chat rate-capped at 50 calls/day per user, $20/day per workspace – enforced via a Langfuse tag filter
  • Dev tab + fleet_backlog – one shared Postgres table (migrations 0015–0021) that any of four writers (two operators + each operator's Claude Code sessions) can read and write through the dashboard, a CLI, or the MCP connector. Atomic claim RPC prevents two agents from picking up the same item; holder-only guard prevents one operator from closing out another's work.
  • Push-to-Claude-Code on backlog cards – formats a self-contained prompt with the backlog id and a mark_done pointer, copies it to clipboard, so a fresh Claude Code session can be dropped into a repo and start work with full context
  • Live-session indicators – a still Claude logo on items held by a Claude session, bouncing only while the session is reported alive (five-minute liveness window, 30 s polling)
  • Epic/story hierarchy enforced in SQL (fleet_backlog_hierarchy_guard, two levels only), four groupings in the UI (Projects / Priority / Status / Epic), three densities persisted in localStorage
  • 13 products in the catalog with silent-nil on unknown products (misses a new product rather than misattributing it)

Outcome

Daily use by the operators; ~340+ commits over six months; zero misattribution incidents on the client/internal boundary since two-project routing shipped. Dev tab shipped 2026-09-24 (PR #130, 21 files / 2,191 insertions / migration 0015 at 173 lines) and became the operating backlog for the fleet within one session – every subsequent product change now flows through it.

Evidence

  • Case studies: Related case study (daily cockpit) + Related case study (Dev tab + shared backlog via MCP)
  • Repo: private (available on request)
  • Key files: api/langfuse.js, api/mcp.js, src/hooks/useFleetAgentMutations.js, src/lib/cost.js, src/lib/backlog.js, src/components/views/DevView.jsx, src/components/finance/LiveLangfuseSpend.jsx
  • Dev-tab PRs: #130 (ship), #133 (reopen), #155 (push-to-Claude), #159 (confetti on MCP close), #171/#173 (live-session indicator)

Skills demonstrated

react-18, vite, vercel-node-functions, supabase-rls, supabase-realtime, langfuse-cost-tracking, anthropic-sdk, vercel-ai-sdk, mcp-server-remote, mcp-handler, fleet-backlog-concurrency, atomic-claim-rpc, github-actions-cron, two-user-allowlist, dashboard-ux, cost-attribution, human-plus-agent-collaboration

Want to discuss the decisions behind it?

Over fifteen years of consulting and growth, and hands-on AI delivery from discovery to daily operations. I can share my CV and talk through how I connect business outcomes with systems that run.

Available for a chat. In person in Stavanger, or remotely worldwide.