Home/Work/Case 01

Agent
Control Panel

Mission control for 350+ agents across 35+ apps. One login, and every agent is observable, measurable and remotely controllable.

RoleArchitect & builder
WhenFeb–Aug 2026 · Decasonic, now SKAI Group
StackExpress 5 · React 18 · Postgres · Drizzle
NowA SKAI Group product · mySTARTUP
350+agents registered
35+apps reporting in
6model providers, one fallback chain
~60API endpoints on 9 tables
01 / The problem

Hundreds of agents.
Zero visibility.

The firm had agents spread across dozens of apps, each built separately. When one went quiet, nobody knew. When a prompt needed changing, someone redeployed an app. Nobody could say what an agent cost per day.

Four people needed four different things: operators wanted outages and runaway spend, prompt engineers wanted to edit without a deploy, finance wanted real token cost, and developers wanted a fast way to wire a new app in.

An agent fails silently and nobody notices for days.
Changing a prompt means redeploying the app it lives in.
There is no cost per agent, per app or per day.
The platform's own AI features are invisible too.
One control plane that fixes all four.
02 / How it works

Four jobs.
One screen.

What an operator sees, in the order they'd use it.

Step 01 · Observe

Every app reports in.

Registered apps push heartbeats and run reports. Each agent's status becomes running, idle, paused, stopped or error, and a rolling health score recalculates on every run. Agents can have parents, so hierarchies show up as hierarchies.

Step 02 · Control

Change a live agent without a deploy.

Pause, resume, stop, restart, swap the model or push a new system prompt. Each command is an HMAC-signed webhook to the live app, retried with backoff and tracked from pending to acknowledged.

Step 03 · Version

Prompts become assets.

Every prompt keeps its full history with one-click rollback. Feedback folds straight in with tags, and an AI reviewer scores answers from 0 to 100 with a written reason.

Step 04 · Watch itself

The platform is its own customer.

Its 8 internal AI features run as real tracked agents, from the integration analyzer to the error solver, so platform spend is measured with the same meters as everything else.

03 / What it feels like

A feed you can
actually read.

Every heartbeat, report and command lands in one stream. Fallbacks get an amber badge, so an operator is never told the primary model answered when it didn't.

The feed on the right is a live sketch. It is generated in your browser, not pulled from real data.

Beforethe prompt lives in the app
const SYSTEM = "You are a deal screener…";// changing this means a redeployconst res = await openai.chat(SYSTEM, input);// cost? errors? nobody knows
Afterthe Control Panel owns it
const { prompt, model } = await cp.prompt(AGENT_ID);// GET /api/prompts/:agentIdconst res = await llm(model, prompt, input);await cp.report({ agentId, tokens, ok });// POST /api/report → health, cost, feed
04 / Decisions worth explaining
01Why a modular monolith, not microservices?

One Node process serves the JSON API and the compiled React app, split by module rather than by process. No broker, no worker fleet. A tool that watches moving parts should have as few of its own as possible.

02How do you keep price discovery from costing money?

Ask a free, deterministic public price API first. Only if that fails do two AI searchers research in parallel. If they disagree, each sees the other's answer and re-checks; if they still disagree, a third model judges. Everything goes to an audit log, with per-model cooldowns and a global concurrency cap.

03Why can't a heartbeat un-pause an agent?

Because a stopped agent has to stay stopped, even if its app keeps reporting in. Token counts are upserted atomically too, so two concurrent heartbeats can't lose a count.

04What was the strangest production bug?

A production firewall read legitimate prompt text as an attack and blocked saves. Base64-encoding the prompt and feedback write paths got past it without weakening the firewall.

Express 5React 18PostgreSQLDrizzle ORMHMAC webhooksOpenRouter6 LLM providers

Need something like this? I build these end to end, as a full-time engineer, on contract, or with SKAI Group.

Book a 30-min call
Next case · 02MCP Hub
Contact

Let's build

Running agents nobody can see? This is the problem I like most.