The framework
A reference architecture
An agent runtime on servers you own, self-hosted inference beside it, and a hybrid data estate it is only ever allowed to touch through typed endpoints.
Scroll the diagram horizontally to follow the flow.
01
The estate you already run
The starting point is honest: the data lives in eight places, not one. A cloud warehouse and an on-prem SQL Server ERP that predates it; an OLTP read replica and proprietary gRPC services on VMs you own; streams, a lake, telemetry. Nothing migrates — the agents go to the data, because after twenty years the data was never coming to them.
02
Internal MCP endpoints, one per domain
Instead of handing a model eight sets of credentials, each domain publishes a small MCP server with a few typed, reviewed tools. finance.mcp fronts both the Snowflake marts and the legacy ERP, so the agent never needs to know which decade a number lives in. Authentication, row-level scoping and rate limits are enforced here — one security review per endpoint, not one per prompt.
03
Agents are workloads — they run on your metal
Every run is a short-lived pod on the internal Kubernetes cluster, and every model call goes to a vLLM serving layer on GPU nodes you own — prompts and financials never leave the building, and you produce tokens instead of renting them. Each agent gets its own service identity from Vault, scoped to exactly the endpoints its domain allows, while OpenTelemetry traces every prompt, tool call and token onto a meter.
04
Context assembly: retrieval plus prompt injection
At 06:00 Monday a cron fires inside the cluster — the run begins with a goal, not a script. Before any reasoning, hybrid retrieval pulls the definitions of record from the vector store: how this company computes net revenue retention, last week's report, the SOP that governs a deviation. A template then injects the invariants — fiscal calendar, the run's RBAC scope, and the hard rule that every number carries a citation.
05
Plan, then fan out to domain agents
The planner turns the report spec into a task graph and hands each branch to an agent pod that holds only its own domain's tools — finance, operations, platform. They run in parallel, in separate contexts, each reaching down through the gateway with typed calls. This is the load-bearing decision for cost and reliability: a finance agent that has never seen the ops toolset is cheaper, faster, and far less likely to wander.
06
Reduce, then refuse to trust the model
Agents return compact artifacts — a figure, its units, the query that produced it — never raw rows. The reducer merges them, then verification re-runs each headline number against the source of truth and asserts equality. A figure that cannot be reconciled, or that arrives without a citation, blocks the send rather than shipping with a caveat.
07
One weekly artifact, in the inbox
The composed report crosses the only boundary this system ever crosses: Microsoft Graph delivers it to Outlook at 07:00 Monday, as a real email with the workbook attached. Everything upstream ran on your own servers; the finished artifact is also embedded back into the vector store, where it becomes next week's context.