The AI System
You’re building an agent. Or an assistant, a pipeline, an AI-powered feature. In Brutor, that thing you’re building has a name: an AI System — and it is the common denominator that follows your work through the whole platform. Every stage of the journey, from the first chat.completions.create() on your laptop to the assurance report an auditor reads a year later, attaches to the same entity.
This section walks that journey end to end, as a developer would live it:
DEVELOP DEPLOY GOVERN OBSERVE ASSURE │ │ │ │ │ point your code create the AI attach guardrails, watch cost, usage run ledger, drift, at the gateway, System, bind its policies, budgets and logs filtered liveness, contracts, add tools, wire resources, mint and approvals to to YOUR system health & the the run header its credentials its scope assurance report │ │ │ │ │ └──────────────────┴────────── one AI System ───────────┴──────────────────┘What an AI System is, concretely
Section titled “What an AI System is, concretely”An AI System is a resource group with group_type: "ai_system". That single design decision is why the journey holds together: a resource group is already the thing Brutor scopes access to (models, MCP servers, skills, knowledge bases, agent cards), attaches controls to (guardrails, policies, budgets, rate limits, approvals), issues credentials for (API keys, agent memberships), and attributes usage to (cost, tokens, audit rows). Making your agent be one means all of that machinery applies to it natively — nothing is bolted on.
A system_kind field records the shape of what you built, because the lifecycle machinery treats different shapes differently (silence detection is critical for a pipeline and wrong for a chat assistant):
system_kind |
What it describes |
|---|---|
agent (default) |
Autonomous or semi-autonomous goal pursuit — the most common case |
assistant |
Human-in-the-loop conversational system |
application |
A product feature that calls models |
integration |
Scheduled or event-driven pipeline |
workflow |
Orchestrated, deterministic control flow |
service |
Internal shared AI capability |
This is not a label — it selects a signal profile. Each of the six kind-scoped
assurance signals lands at enforced (counts toward the health verdict), advisory
(computed and shown, excluded from the verdict) or not_applicable (not scored; rendered
n/a, never as a zero and never as a pass). A seventh signal, review — open critical
findings in the Inbox older than the
review SLA — is enforced for every kind, because unreviewed findings are a human-process
fact, not a property of the system’s shape.
| Kind | Relaxed signals |
|---|---|
agent, workflow, integration |
None — all six enforced |
service |
liveness (advisory) |
application |
liveness, behaviour (advisory) |
assistant |
liveness (n/a), behaviour (advisory) |
agent is the default precisely because it is the strictest superset: a system nobody
classified is never scored more leniently than one that was. Reliability, cost and
conformance are never relaxed by any kind — an erroring, overspending or policy-violating
system is unhealthy whatever shape it is.
Pick honestly, and note that you cannot pick your way out of a bad score: every relaxation a kind applies is disclosed on the health response and in the Assurance Report, naming the signal and the reason. How the profiles work.
Because the AI System is one entity, every question about your agent has one place to look:
| Question | Where the answer lives |
|---|---|
| What may it use? | The system’s resource bindings and effective view |
| What must it obey? | The guardrails, policies and limits resolved for its group |
| Who or what is acting as it? | Its API keys and agent identities |
| What does it cost? | Its Signals → Cost tab, and its card on the Mission Control Overview — including cost per completed task, not just per request |
| Where is it in its lifecycle, and who let it through? | Its Lifecycle tab — the stage diagram, the open gate, and every recorded transition with its approver |
| What exactly is it allowed to do, as of when? | Its hash-pinned contract, on the Contract tab |
| Is it healthy? | Its worst-of health score |
| Can you prove all of the above? | Its Assurance Report |
In the Admin UI the system has two homes, on purpose. AI Estate → AI Systems → your system opens the assurance side — seven tabs, in the order the journey runs: Lifecycle (the default), Signals, Runs, Trajectory, Drift, Contract and Assurance. Resource Groups → your system opens the resource-group side — General, Usage, Resources, Members, API Keys and Governance — where you bind what it may use and set what it must obey. The pages below say which of the two each step happens on.
The worked example
Section titled “The worked example”The five stage pages build one concrete system so you can follow real commands end to end: support-copilot — an agent (system_kind: "agent") that answers customer questions, looks up orders through a CRM MCP server, runs a refund skill that requires human approval, and delegates billing verification to a peer agent over A2A. Swap the names for your own; the mechanics are identical.
Before you start
Section titled “Before you start”The journey assumes a running gateway. If you don’t have one yet:
-
Run the platform with Docker Compose — about ten minutes.
-
Make your first governed LLM call — two minutes, and confirms your credentials and base URL work.
-
Come back here and start with Develop.

