Reference architectures

We design and build systems like this one. Bring us the constraints and we will size the build.

Reference Architecture · Governed Agent Platform

Enterprise AI Agent Frameworkv1.0

A self-hosted framework where agents may reason autonomously while access to models, enterprise systems, code execution, and irreversible actions remains under infrastructure control.

For decision makers

§1–§11 — what changes when agents move into shared production, the four controls, the tradeoffs, operating cost, and when this level of platform is unnecessary. About ten minutes. You can stop at the divider.

For implementers

§12 onward — trust boundaries, tenancy, agent runtime, durable execution, model access, MCP and tools, sandboxing, approvals, observability, evaluation, and request paths.

Version
1.0
Platform
Agent runtime and governance
Harness
Deep Agents on LangGraph
Core principle
The agent may decide what to do. Infrastructure decides what it is allowed to do.
Model dependency
Any governed model service; the sibling Inference Fabric is optional
Author
Stewart Moreland

§ 1Executive summary

An agent is software that decides what to do next. That is what makes it useful, and it is also the architectural problem.

A traditional application follows code paths someone wrote and reviewed. An agent selects tools, delegates work, reads content it did not control, writes code at runtime, and may remain active long enough for the world around it to change before the run finishes. Trying to remove that autonomy defeats the reason to use an agent in the first place.

This architecture takes a different approach. The agent may plan, reason, choose tools, and delegate work freely. It cannot independently reach a language model, an enterprise system, an execution environment, or an irreversible business action — each of those capabilities sits behind infrastructure that authenticates the caller, evaluates policy, and is able to refuse the request.

The result is not a safer prompt. It is a smaller blast radius. Every model call, tool action, sandbox execution, approval, and failure can be attributed to the person and organization behind the run, and reconstructed afterwards.

What it costs is infrastructure: more moving parts than a hosted chatbot, latency at every controlled hop, a real tenancy model, and a platform team that does not disband when the project is declared finished. §9 states that bill explicitly.

The agent can reason freely. It cannot act freely.

1.1At a glance

What it isA shared enterprise platform for building and operating AI agents
Who operates itPlatform, AI engineering, security, and SRE
HarnessDeep Agents on LangGraph
Core principleAutonomy stays in the agent; authority stays in infrastructure
ControlsFour — model access, enterprise access, code execution, irreversible actions
ModelsLocal or external providers, behind one AI Gateway
Enterprise integrationsBrokered through controlled tool services; MCP where appropriate
Generated codeTreated as untrusted and executed outside the agent worker
Long-running workflowsPersisted and resumable
TenancyIdentity bound to every request and enforced again at persistence
Related architectureLocal models may be supplied by the sibling Inference Fabric

§ 2Why this architecture exists

Five problems appear when agents move from personal experiments into shared production. Each is answered by a structural choice rather than by policy or training, because none of them is the kind of failure a careful person avoids.

2.1Agents expand the security boundary

An agent chooses actions based partly on text it encounters at runtime. That text may come from a ticket, a document, an email, a web page, or a tool response, and some of it will eventually be controlled by someone who benefits from changing what the agent does next.

Prompt injection is therefore not merely a prompt-quality problem. The architecture assumes the model can be influenced, and keeps meaningful authorization outside it — in components the model has no way to instruct.

2.2Model-generated code is an untrusted workload

A capable agent will eventually write code. It may use Python to inspect a dataset, shell commands to transform files, or a browser runtime to complete a task.

The right security question is not can we make the model generate only safe code? It is what can the generated code reach when it is wrong? Isolation is what makes the second question answerable.

2.3Enterprise agents need accountability

When an agent changes a ticket, queries a warehouse, sends a message, modifies a repository, or spends model capacity, the organization has to know who initiated the work, which identity authorized it, what the agent attempted, which model and prompt version were involved, what systems were reached, where the run failed, and what it cost.

That is an audit requirement in some environments and an operations requirement in all of them — without it nobody can debug an agent, and nobody can defend one.

2.4Long-running work has to survive failure

Useful workflows do not necessarily fit inside one HTTP request. They may run for hours, delegate work, wait for external information, pause for a person, and resume after the software itself has been deployed or restarted.

LangGraph's persistence model is explicitly designed to checkpoint execution and resume stateful workflows, and its human-in-the-loop model persists state across an interrupt. Durability belongs in the runtime architecture rather than being reconstructed inside every agent.

SourceLangGraph persistence · LangGraph interrupts

2.5Shared agents create a real tenancy boundary

A single-user assistant can assume one person owns the process. An enterprise platform cannot.

Threads, memory, documents, tool permissions, model budgets, and audit records have to belong to a tenant and a principal — and the same fact has to remain true under retries, concurrency, and reconnects.

The common thread

None of these problems is solved by a more capable model. Better models increase what agents can accomplish; they do not remove the need to decide what an agent is allowed to touch. That is the test a reference architecture should pass: it should still be correct after the models are replaced.

§ 3The architecture at a glance

Five conceptual areas, and one rule about how they connect. Everything else in this document is detail beneath this picture.

AreaResponsibility
People and ingressAuthentication, task submission, and human decisions
Agent platformHarness, serving, policy, state, gateways, audit, and evaluation
Isolated executionDisposable environments for model-generated code
Enterprise systemsBusiness applications and data, reached only through controlled tools
Model servicesLocal or external model providers, reached only through the AI Gateway

The rule is that the agent sits inside the platform and reaches the other four areas only through a control built for that purpose.

People sign in once, then ask for work one authenticated entry point AGENT PLATFORM · TRUSTED Agent plans · reasons · decides what to do next It may decide anything. It may not do anything directly. AI Gateway every model call Tool Gateway every enterprise action Sandbox Broker every line of generated code Approval Broker every irreversible action Model services local fabric or approved API Enterprise systems tickets · data · internal APIs Isolated execution disposable, network-less A person approves, edits, or refuses
Figure 1 — The shape of the platform. Four capabilities an agent needs and cannot be trusted to hold, each behind its own control. Two of the controls face outward at the enterprise; two face down at infrastructure. There is no fifth path, and no way around any of the four — that property, not the diagram, is the architecture.
Where the engineering detail begins

The implementation divides these areas into trust zones, so that components with different trust levels are separated by a network boundary rather than by convention. That division is an implementation concern and is specified in §12; nothing in §1–§11 depends on it.

§ 4Four controls around every agent

These four controls are the architecture; everything else exists to make them enforceable. If you retain one thing from this document, it should be that an agent's authority is held by four brokers rather than by the agent.

4.1The concerns they answer

Leadership concernArchitecture response
Can an agent access something it shouldn't?Identity follows every action, and every model and tool call passes through policy enforcement that authorizes the person behind it
Can an agent leak credentials or sensitive data?Agents receive no enterprise credentials at all; access is brokered, scoped, and short-lived
Can generated code damage the platform?Generated code executes only in isolated, disposable environments with no ambient network and no persistence
Can an agent take an action we can't undo?Actions designated irreversible stop for a named human decision, which is recorded
Can we prove what happened?Every action is traced, checkpointed, attributable to a person and an organization, and recoverable

4.2The controls

AI Gateway — governs model access

Every model call is made through one service. The agent holds no local model endpoints and no external-provider credentials. The gateway decides which models the caller may use, whether the request may leave the estate, which provider or local fabric should serve it, what budget or quota applies, what redaction or data policy applies, and how usage is attributed.

Model access is at once a permissions question, a budget question, a data-leakage question, and a cost-attribution question. Answering those four in one place is tractable; answering them at every call site is not. A local Inference Fabric can sit behind this gateway exactly like any other model provider.

Tool Gateway — governs enterprise access

The agent asks for an operation. A trusted service decides whether the identity behind the run may perform it, and invokes the enterprise system using credentials held by that service. The agent gets capability without possession.

Where MCP is used it supplies a standard protocol for tool discovery and invocation. Current MCP authorization for HTTP transports is based on OAuth 2.1 and protected-resource discovery, but the protocol does not remove the enterprise's responsibility to decide which tools a caller should receive or what each operation is allowed to do. The policy boundary is therefore the Tool Gateway, whether or not every downstream integration speaks MCP.

SourceMCP authorization specification

Sandbox Broker — governs code execution

Model-generated code runs outside the trusted agent worker. Each execution receives only the inputs it needs, receives no ambient enterprise credentials, has no network unless a particular operation explicitly requires one, and is destroyed after use.

gVisor is one current implementation option, designed specifically to isolate untrusted code and containers from the host kernel while remaining compatible with container tooling and Kubernetes. The architecture does not require gVisor specifically. It requires the security boundary.

SourcegVisor architecture guide

Approval Broker — governs irreversible actions

Some actions require a person. Which ones is a risk decision, not an AI-framework decision. When the agent reaches a gated operation the run saves its state, the proposed action is presented to an authorized person, the execution releases the resources it was holding, the person approves, edits, or rejects, and the run resumes from persisted state.

LangChain's human-in-the-loop middleware implements this same interrupt / persist / resume pattern and supports approve, edit, and reject decisions. The approver's identity becomes part of the run record.

SourceLangChain human-in-the-loop

§ 5Engineering invariants

Six rules sit underneath the four controls. They are the load-bearing rules of the platform: every structural choice in the technical reference exists to make one of them enforceable, and every design review of a change should start by asking which of the six it touches.

#InvariantWhat it removes
1Identity follows every request — authorize the caller, never the sessionPrivilege escalation from stale session state, even when the access-control code is correct
2All model calls traverse the AI GatewayA second, unmetered, unpoliced path to a model
3Agents own no enterprise credentialsA compromised agent becoming a compromised credential
4Generated code is hostile by defaultBlast radius from a bad generation or a successful injection
5Every operation is traceable end to endUnanswerable questions after an incident
6Side effects survive retries safelyWork lost to a restart, or repeated by a redelivery
The six invariants in full, with rationale

1Identity follows every request

Tenant and principal identity are established from verified authentication at ingress and propagated explicitly on every hop. No downstream component infers authorization from a session, a thread identifier, or a network connection.

WhyUnder concurrency, reconnect churn, or async message interleaving, a request evaluated against a stale session context yields privilege escalation even though the role-based access-control code is correct. Binding identity to the request removes the class of bug rather than the instance.

2All model calls traverse the AI Gateway

Not the agent worker. Not the evaluation runner. Not a debugging script in production.

WhyOne policy boundary means one place to enforce model permissions, budgets, redaction, routing, and cost attribution. A second path to a model is a second place all five have to be reimplemented, and the one nobody remembers to update.

3Agents own no enterprise credentials

Integration services hold credentials. Agents hold intent.

WhyCompromising an agent process — through a prompt injection, a poisoned document, a bad tool — should not expose long-lived credentials to the ticketing system, the source repository, the warehouse, or a model API.

4Generated code is hostile by default

Model-generated execution never occurs inside the trusted agent worker. Security comes from what the environment cannot reach, not from confidence in the generated program.

WhyA language model can emit arbitrary shell or Python, and standard container isolation was designed to separate cooperating workloads, not to contain a deliberately hostile one.

5Every operation is traceable end to end

One correlated run identity follows work through model calls, tool calls, sandboxes, and approvals. The operator should be able to reconstruct the run rather than infer it from unrelated logs.

WhyWithout it you cannot answer the four questions an operator actually asks — what did the agent do, why did it make that call, what did it cost, where did it fail (§20).

6Side effects survive retries safely

Durable agent execution can replay portions of a workflow. LangGraph's interrupt guidance explicitly warns that nodes may re-run around interrupts and recommends idempotent side effects. The platform therefore does not pretend that distributed business actions are magically exactly-once: irreversible tools use idempotency keys, transactional APIs where available, or approval and checkpoint boundaries that make replay safe.

SourceLangGraph interrupts — side effects and replay

§ 6The design decisions

Six decisions determine everything else. Each is stated with what it buys and what it costs, because a decision recorded without its price is a decision nobody can revisit.

DecisionWhy it mattersPosition
Harness or agent operating system?Where governance livesHarness — the agent reasons, infrastructure authorizes
Centralize model and enterprise access?Governance and auditYes — four controls, no bypass
Permit model-generated code?Capability against securityYes — only in isolation
Gate every action, or only risky ones?Autonomy against risk appetiteGate risk; classify per action
How structural is tenancy?Blast radius of an authorization bugEnforced in the application and again in persistence
Own the model infrastructure?Cost, data control, portabilityOptional — the agent sees models only through the gateway

1Use an agent harness, not an agent operating system

BenefitDeep Agents provides planning, filesystem-backed context, subagents, skills, and other long-horizon capabilities on top of LangGraph — LangChain's own documentation describes it explicitly as an agent harness. That is the right abstraction: the harness owns how the agent reasons, and agent behavior can then evolve rapidly without redefining the security architecture.

CostThe harness does not own enterprise identity, credentials, global model policy, or the authorization boundary — so the organization must operate those surrounding controls itself.

2Centralize model and enterprise access

BenefitPolicy has somewhere testable to live. Quota, budget, model allowlists, redaction, cost attribution, and tool authorization each exist in exactly one place, and the audit trail falls out of the same chokepoints rather than being assembled from ten systems afterwards.

CostThe gateways become critical infrastructure and add latency to every controlled action. They need the availability engineering and hardening budget of an edge service, not of an internal one.

3Permit generated code only in isolation

BenefitAgents remain capable enough to do meaningful work — analyze a dataset, convert a file, drive a browser — without that capability becoming a path into the platform. A bad generation costs one disposable environment.

CostSandbox creation and data staging land directly on task latency, on the critical path of every task that executes code.

4Gate risk, not every action

BenefitLow-risk work remains autonomous while the organization keeps authority over important changes, and every decision at that line is attributable to a named person.

CostSomeone has to classify actions and maintain those policies. Gate too little and autonomy exceeds the risk appetite; gate too much and reviewers stop reading, which is worse than not gating at all.

5Make tenancy structural

BenefitTenant isolation is enforced in application authorization and again in persistence, so a missed application check does not automatically return another team's state.

CostEvery database, cache, vector index, and serving API has to be examined through the tenancy model — cheap to describe, unforgiving to implement, and where the platform's credibility is won or lost.

6Keep model infrastructure replaceable

BenefitThe agent framework sees models only through the AI Gateway. Local inference may come from the sibling Inference Fabric; external models may come from a managed provider. Nothing in the agent itself needs to know which.

CostOne more hop on every model call, and a logical-model registry someone has to keep honest as physical models are replaced beneath it.

§ 7One agent task, end to end

A single realistic example exercises almost the whole architecture. An engineer asks an agent to investigate a production issue, analyze the evidence, and update the corresponding ticket.

  1. The request enters with identity. Single sign-on establishes the caller and the tenant. Those claims become explicit run context and travel with every step that follows — nothing downstream ever infers them.
  2. The agent plans. It decides which information it needs, in what order to gather it, and whether to delegate work to subagents. This is genuinely autonomous, and the infrastructure makes no attempt to write the plan for it.
  3. The agent calls a model. The request passes through the AI Gateway, which evaluates model policy and routes either to an authorized external provider or to the organization's local inference fabric, recording tokens and cost against the team.
  4. The agent asks for enterprise data. It requests logs and ticket information through approved tools. The Tool Gateway evaluates the caller and the operation, and invokes each enterprise system with scoped service credentials. The agent sees the result; it never sees the credential.
  5. The agent writes analysis code. The script goes to the Sandbox Broker. A fresh isolated environment receives the required input files, executes the script, returns its output, and is destroyed.
  6. The agent proposes the ticket update. The organization has classified the write as a gated action, so execution pauses and state persists. The worker is released rather than held open.
  7. A person decides. The engineer reviews the proposed change and approves it. Their identity and decision enter the run record.
  8. The run resumes. The workflow continues from persisted state — possibly on a different machine, possibly after the platform was deployed in the interim — and executes the approved tool operation.
  9. The complete run remains reconstructable. The trace contains the model calls, the tool decisions, the sandbox execution, the approval, the final action, latency, and cost attribution.
What the example demonstrates

Steps 3 through 6 are the four controls, in order. Step 8 is the durability guarantee and step 9 is the audit guarantee. If a worker had disappeared halfway through, durable state rather than the worker is what keeps the run alive — it resumes from its last saved position instead of starting over or half-completing.

The equivalent runtime paths are specified in §21.

§ 8What the architecture guarantees

Stated as outcomes, with a pointer to the part of the technical reference that specifies each one.

ConcernArchitectural outcomeSpecified in
Tenant isolationThreads, state, and memory are authorized against tenant ownership rather than possession of an identifier§13
Credential exposureAgents hold no enterprise-system credentials; every credential is scoped to one integration and held by a service the model cannot instruct§17
Model governanceEvery production model call traverses one policy boundary§16
Tool authorizationEnterprise actions are authorized against the principal behind the run, at the moment of the call§17
Generated codeArbitrary generated code executes outside the trusted agent worker, with no ambient network and no persistence§18
Irreversible actionConfigured operations stop for an authorized human decision; agents cannot self-approve§19
DurabilityWork persists across worker failure, deployment, and long approval waits§15
Replay safetySide-effecting operations are designed for idempotency rather than trusting retries§15
AuditModel calls, tools, execution, and approvals correlate to one run, attributable to a person and a team§20
Framework portabilityGovernance sits outside the agent harness rather than inside one vendor runtime§14

§ 9What this costs to operate

Every architectural choice has a price. This section states the one attached to this design.

9.1What the enterprise has to own

Stated as capabilities rather than products — the architecture holds with any credible implementation of each row.

CapabilityPlatform requirement
Human identityEnterprise SSO / OIDC
Workload identityCryptographically authenticated services
Agent executionHarness plus a production serving runtime
StateDurable checkpoint and application persistence
Model governanceAI Gateway
Enterprise accessTool Gateway and controlled integration services
Code executionIsolated, disposable environments
ApprovalA persistent human decision workflow
SecretsScoped service credentials and secret management
ObservabilityEnd-to-end traces, metrics, and audit records
EvaluationRepeatable datasets and promotion gates
DeliveryVersioned prompts, agents, tools, and infrastructure

9.2The ledger

What it buys

  • A common agent foundation rather than one security model per use case
  • A single place to govern model consumption
  • A single place to govern business-system access
  • A smaller blast radius for prompt injection and generated code
  • Durable workflows capable of waiting for people
  • A run record that can be investigated afterwards
  • The freedom to replace models and serving implementations without rebuilding the controls

What it costs

  • More components than a hosted chatbot
  • Gateway latency on every model and tool call
  • Sandbox startup latency on code-executing tasks
  • A real tenancy model, examined at every store
  • Persistent state to operate and back up
  • Security review of every tool integration
  • Evaluation infrastructure run as a product
  • A standing platform team — this is not a project that finishes

9.3Where the effort concentrates

Implementation effort is not spread evenly. Two areas hold most of it: the tenancy boundary, which is cheap to describe and unforgiving to implement; and the serving layer, which is the one component with no settled answer (§10). Everything else — the gateways, the sandbox broker, the approval flow, the observability stack — is integration and configuration of components that already exist. Costly in aggregate, but not uncertain.

This is infrastructure, not an application launch.

§ 10Open decisions

One decision gates delivery. The rest can be made after the platform is standing, and are listed so that nobody mistakes silence for consensus.

10.1The gating decision — the agent-serving implementation

Decide before sizing the platform

The question. The harness decision and the deployment decision are separate. The harness is settled; what is not settled is the service wrapped around it — the component that accepts work, queues it, runs it durably, streams results back, and survives a machine failure mid-run. Three credible paths exist.

Official LangChain Agent ServerDocumented as production-ready standalone, including on Kubernetes without the LangSmith control plane. One material conflict under this architecture's assumptions: current standalone deployment requires a LangSmith license key and normally requires outbound access for license verification and usage reporting. Legitimate if that commercial and runtime dependency is acceptable; not if permissive OSS and no phone-home are requirements
AegraAn Apache-2.0, self-hosted Agent Protocol server with LangGraph SDK compatibility, PostgreSQL persistence, streaming, and worker execution. A strong candidate rather than an architectural dependency — adopt only after validating tenant isolation, failure recovery, upgrade behavior, and the ability to integrate authorization without patching internal request handling
Thin internal Agent Protocol serverAgent Protocol standardizes the useful serving concepts around runs, threads, and store, independently of one hosted platform. Building the minimum server is the fallback if neither packaged option satisfies the organization's trust and licensing requirements
The gateAdopt a packaged server only if tenant isolation can be implemented through documented extension points, without patching the project's internal request handling

Everything else about a candidate is recoverable with a wrapper. Tenant isolation is not — a boundary bolted on from outside cannot be trusted. The architecture above does not change whichever path wins; the deployment options are compared in Appendix B.

10.2Decisions that can wait

Open

1Sandbox isolation technology

gVisor, Kata or microVM-style isolation, or another hardened runtime can satisfy the boundary. The options trade startup cost against boundary strength, and startup cost lands directly on agent responsiveness — so benchmark against the generated workloads expected in practice rather than arguing it.

Open

2Audit-data separation

Tenant labels inside a shared observability system may be sufficient for internal teams. Contractual or regulatory separation may require distinct stores or projects, at the cost of administration and cross-team dashboards. If any team's data is subject to contractual segregation, take the hard separation.

Open

3Model-provider policy

Some organizations will allow approved external model APIs; others will require all inference to remain local. The AI Gateway supports either answer — but if external APIs are permitted it becomes the most sensitive component in the estate, seeing every prompt and holding every key.

Open

4Depth of separation between teams

Shared platform with network policy and database-level isolation, or physically separate deployments for teams under regulatory constraint. This depends on whether any team sits outside the organization's compliance boundary — the assumption most likely to change.

§ 11When to build this — and when not to

This is a substantial platform. It is worth being explicit about the conditions under which it is the wrong answer, because most organizations reach those conditions gradually rather than starting at them.

Probably excessive if

  • one trusted team uses the agents;
  • tools are read-only;
  • generated code is not allowed;
  • runs finish inside a normal request;
  • there is no meaningful tenancy boundary;
  • the consequences of an incorrect action are small;
  • a managed agent platform satisfies security and procurement.

Appropriate when

  • multiple teams share the platform;
  • agents modify enterprise systems;
  • model access requires centralized governance;
  • agents execute generated code;
  • workflows wait for humans or external events;
  • auditability is a requirement;
  • agent runs contain sensitive enterprise context.

The four controls can be adopted separately. An AI Gateway is useful without a sandbox. A Tool Gateway is useful without Deep Agents. Human approval is useful without self-hosted models. The complete framework is the point at which those controls become one coherent platform — a destination, not a prerequisite.

Part II

Technical reference

The remainder specifies how the guarantees above are implemented. It is written for platform, security, SRE, and AI engineering teams, and assumes the vocabulary those teams already use. Nothing below changes the architecture described in §1–§11.

§ 12Trust zones and topology

A useful implementation separates five trust domains. The useful question about a zone boundary is not what sits inside it but why it is drawn at all — each of these separates two things that fail differently, scale differently, or deserve different amounts of trust.

ZonePurposeWhy it is separate
Z1EdgeAuthenticate people and broker permitted external trafficExternal traffic should never reach platform workloads directly, and no workload should reach the internet unobserved
Z2Agent platformTrusted agent runtime, serving layer, gateways, persistence, and evaluationTrusted application logic lives here — and only here
Z3SandboxUntrusted generated-code executionGenerated code must be treated as hostile, so it gets a zone with a kernel boundary and no network
Z5Enterprise systemsDatabases, SaaS, and internal business servicesAgents should reach these only through tools that authorize the caller
Z6OperationsPrivileged administration, CI/CD, and security monitoringAdministrative access is a different threat model and needs its own boundary and its own recording

Model services sit behind a separate logical boundary Z4 and are reached exclusively by the AI Gateway. That model service may be an external API or the organization's local Inference Fabric; the platform's topology is identical either way.

The structural point

The agent worker belongs in the trusted platform. Generated code does not. Z3 hosts no persistent agent process — only short-lived containers that execute model-generated code and are destroyed afterwards. There is nothing in the untrusted zone for an attacker to persist in.

Z0 · INTERNET & THIRD PARTY Corporate SaaS · registries · optional external model APIs — reached only through Z1 brokers Z1 · EDGE Ingress GatewayOIDC · WAF · TLS Identity Providerissues tenant + principal Egress Brokerallowlist · full logging Artifact Mirrorimages · packages · models Z2 · AGENT PLATFORM Agent serving layerthreads · runs · streaming Run queue + workersleases · queue-depth scaling Checkpointer + Storedurable state · row-level security Approval Brokerinterrupt · decide · resume Tool Gateway + MCP fleetper-tenant tool authorization AI Gatewaypermissions · quota · routing Traces + eval runnerspans · scores · datasets Telemetry collectorOTLP fan-out Sandbox Brokerallocate · seed · destroy Z4 · MODEL SERVICES Governed model endpoint Local fabric, or an approved external provider reached only by the AI Gateway Z3 · EXECUTION SANDBOX Ephemeral · kernel-isolated One tenant, one call No ambient network · no state INITIATES NOTHING BUT TELEMETRY Z5 · ENTERPRISE SYSTEMS Warehouse · ticketing · document stores · internal APIs — reached only through the Tool Gateway Z6 · OPERATIONS bastion · CI/CD · SIEM sign-in tenant claim bound here tool call broker protocol only telemetry only scoped creds ✕ no direct Z2 → Z4 permitted flow tenant-claim path denied by policy untrusted zone
Figure 2 — Zone topology. Three claims the drawing has to carry: exactly one edge enters Z4, from the AI Gateway — every other path to a model is denied; Z3 is untrusted, holds no state, and initiates nothing except its telemetry span; and the tenant claim is bound once at the ingress hop and travels on every edge downstream of it. The full set of permitted and denied flows is in Appendix A.

12.1What enforces each boundary

ZoneTrustBoundary enforced by
Z0Internet / third partyUntrustedPerimeter firewall; nothing outside the estate is trusted, including services we pay for
Z1EdgeSemi-trustedWeb application firewall, ingress gateway, forward proxy, identity provider
Z2Agent platformTrustedNamespaces, default-deny network policy, mutual TLS, tenant row-level security
Z3SandboxUntrustedKernel isolation, ephemeral lifecycle, zero ambient network
Z4Model servicesTrusted, restrictedSeparate segment or provider egress path; only the AI Gateway may originate
Z5Enterprise systemsTrusted, sensitivePer-service authentication, scoped credentials, no direct sandbox access
Z6OperationsPrivilegedBastion / privileged access management, admin network, multi-factor auth

§ 13Multi-tenancy and identity

Identity is bound at ingress and propagated per request. At minimum, carry tenant_id, principal_id, run_id, and the roles, groups, or policy context the request will be evaluated against.

Do not authorize a request simply because it knows a thread identifier. Platform-owned records store tenant ownership explicitly, and database-level isolation reinforces application checks for the tables the platform controls.

The tenant boundary is a chain, and it breaks at its weakest link — so it is specified link by link rather than asserted once.

LayerMechanism
IngressOIDC token validated at the edge; tenant, principal, and groups extracted from verified claims
PropagationClaims re-signed into an internal token and carried on every hop; also set as telemetry baggage so spans inherit them without manual plumbing
Serving layerThread and run creation requires the tenant from the verified token; ownership is authorized on every read and write. Cross-tenant reads return 404, not 403
CheckpointerOwnership resolved against platform-owned tables under row-level security before the thread identifier reaches state retrieval (Appendix C)
Long-term memoryNamespace prefixed by tenant and principal, derived from token claims and never from a request parameter
Vector storePer-tenant collection, or a mandatory metadata filter enforced server-side in the retrieval service — not in the prompt
AI GatewayPer-tenant key, model allowlist, rate limit, hard budget ceiling. Cost attribution falls out of this for free
Tool GatewayPer-tenant, per-tool authorization. Tool visibility is tenant-scoped — an agent should not see a tool it may not call
SandboxOne tenant per instance, destroyed after use. No shared writable layer
ObservabilityProject per tenant for hard separation, or scoped keys plus tenant tagging for soft. Choose deliberately — see §10.2

Two of those rows carry more weight than the rest. 404 rather than 403 on a cross-tenant read matters because a 403 confirms the identifier exists and turns the endpoint into an enumeration oracle. Row-level security as a backstop matters because it changes the consequence of an application-layer authorization bug from “another tenant's rows” to “zero rows”.

The failure mode to design against

Authorizing the session instead of the caller. Under concurrency, reconnect churn, or async message interleaving, a request can be evaluated against a stale or wrong session context, which yields privilege escalation even though the access-control code “works.” Bind identity to the request, revalidate at each authorization point, and alert whenever ingress identity and execution identity disagree — that is the alert in §20.3 that pages immediately.

Tenant isolation should fail closed and visibly. An authorization bug that silently returns an empty record is safer than one that returns another tenant's state, but it is still an operational defect and should produce a traceable signal.

§ 14Agent harness and serving layer

14.1The harness

Deep Agents on the LangGraph runtime is the reference harness. It provides planning, subagents, filesystem-backed context management, skills, memory, and sandbox-aware execution, using LangGraph underneath for runtime capabilities.

SourceDeep Agents overview — described explicitly as an agent harness

The requirement that drove this choice is multi-tenancy. Single-user assistant runtimes assume one trusted operator per gateway; tenancy in those systems is simulated by running one full instance per user, and session identifiers route requests rather than authorize them. That is an operational dead end at organizational scale and a security boundary that does not exist.

Deep Agents gives the same open-ended capability surface on top of a runtime whose state model — threads, checkpointer, store — is ours to scope. Tenancy is enforced by our authorization code and our database, not by instance count.

The corollary matters as much as the decision

The harness is application code, not a control plane. Credential management, model policy, cost governance, tool authorization, and audit do not live in the harness. They live in the AI Gateway, the Tool Gateway, the Approval Broker, and the secrets system. Do not put enterprise authorization inside agent prompts, and do not treat harness middleware as the only security boundary.

14.2The serving layer

The serving layer is what turns a compiled graph into a service other teams can depend on. It supplies:

  • Threads — durable execution and conversation context, owned by exactly one tenant.
  • Runs — asynchronous submission, status, and cancellation; submission returns immediately and execution happens on a worker.
  • Streaming — token-level and node-level events, reconnectable mid-run, from a pod that need not be the one running the graph.
  • Background workers — leased execution, heartbeats, and a reaper that requeues work held by a dead worker.
  • Persistence — checkpoints as the source of truth for resumption.
  • Cancellation, resume, health, and scaling — queue-depth-driven, because these workers are I/O-bound and CPU-based autoscaling under-scales badly.

Which implementation provides these is the open decision in §10.1; the options are compared in Appendix B. The selection criterion is not feature count — it is whether the deployment mechanism preserves the invariants in §5.

§ 15Durable execution and state

LangGraph checkpoints graph state against a thread and persists execution progress so workflows can recover after interruption. The architecture separates four kinds of state, and confusing any two of them is the usual source of trouble.

StateWhat it isWho owns it
Run stateWhat this execution needs in order to resumeFramework-managed
Thread stateConversation or workflow state associated with a durable threadFramework-managed
Long-term memoryInformation intentionally retained across threadsFramework-managed, tenant-namespaced
Business stateThe actual ticket, database record, repository, or enterprise object being changedIts system of record

Never confuse checkpoint durability with a distributed transaction across the business systems the agent touches. The first three can be replayed; the fourth cannot.

ClientSDK / chat UI API podaccepts the run API pod — any otherrelays the stream DATABASE · SOURCE OF TRUTH runsstatus · lease · attempt checkpointsframework-owned schema run_eventsseq · TTL-pruned Worker pod leases · heartbeats runs the graph Signal buswake-up · fan-out Approval Brokergated actions submit run insert queued notify wake claim lease checkpoint/node append seq publish subscribe to this run stream, with sequence ids replay on reconnect interrupt resume
Figure 3 — Run lifecycle. The pod streaming to the client is not the pod running the graph, so a reconnect, a rolling deploy, or a three-day wait for an approval costs nothing. The signal bus carries only the wake-up and the fan-out; the database holds run state, the checkpoints, and the replayable event log — flushing the bus loses no runs. Persisting events is what makes reconnect work: publish/subscribe alone drops everything sent while the client was away.

15.1Replay safety

Run execution is at-least-once, and the checkpoint record is the idempotency mechanism: a redelivered run re-enters the graph at its last checkpoint rather than at the start. At-least-once delivery is what lets a run survive a node reboot; the checkpoint is what stops that survival from doing the same work twice.

Tool side effects between the last checkpoint and the crash may still repeat. Irreversible tools must therefore be idempotent, use a transactional API, or sit behind the Approval Broker — a contract on tool authors, stated in the tool authoring guidelines, not an implementation detail of the queue.

EvidenceSustained non-zero lease expiries mean the graceful-termination window is shorter than node execution, and rolling deploys are manufacturing replays. That is an alert, not a debug signal.

§ 16AI Gateway and model access

The AI Gateway owns the enterprise model policy surface. It is the only component in the platform that knows where a model physically lives.

InputsOutputs
Caller identityProvider or fabric selection
TenantPhysical model
Requested logical modelAllowed request configuration
Data classificationUsage attribution
Budget and quotaPolicy decision — including refusal
Workload purposeRedaction applied, where required

When local inference is selected, the gateway calls the sibling Inference Fabric. When an approved external model is selected, it calls that provider through controlled egress. The agent sees one model interface either way, and a change of provider is a gateway configuration change rather than an application change.

WhyCost is authoritative here and nowhere else, because every model call traverses this boundary. An unmetered path shows up as a reconciliation gap rather than as a surprise invoice.

§ 17Tool Gateway and MCP

MCP is a useful protocol boundary. It is not the authorization architecture by itself.

A production tool path performs seven things, in this order:

  1. Tool discovery, filtered for the caller. An agent that is not authorized to perform an action should not receive that tool in the first place — an unavailable tool named in a prompt is an invitation to work around it.
  2. Operation-level authorization against the principal behind the run, evaluated at the moment of the call rather than at session start.
  3. Argument validation at the boundary, against a schema the tool service owns.
  4. Credential acquisition by the trusted integration service — scoped, short-lived, and issued by the secrets system.
  5. Execution against the enterprise system.
  6. Response filtering where the result may contain more than the caller is entitled to see.
  7. Audit emission, carrying the authorization decision alongside the call.

Where tools call external SaaS, credentials remain in the integration service or the secrets system. They never become agent state.

SourceMCP authorization — OAuth 2.1 and protected-resource discovery

§ 18Isolated code execution

The Sandbox Broker receives an execution request and creates an isolated environment. It is the only component permitted to address the sandbox zone, and the sandbox never calls back into the platform except to emit telemetry.

PropertyRequirement
LifecycleFresh environment per trust boundary — per invocation, or per short-lived session. Destroyed on completion. No reuse across tenants, ever
IsolationA hardened runtime with a kernel boundary. Standard container isolation is insufficient for executing model-generated shell
ContentsCode interpreter, shell tool, headless browser, file conversion utilities
FilesystemEphemeral volume seeded with only the working set the tool needs, destroyed with the sandbox
NetworkNo ambient egress. Raw sockets dropped, DNS pinned to a policy resolver, private-range destinations blocked for request-forgery containment. Outbound only via the edge egress broker where a tool explicitly requires it
CredentialsNone. No ambient platform or enterprise credentials reach the environment
LimitsWall-clock timeout, CPU / memory / process caps, writable-layer disk cap, output size cap
IdentityPer-invocation workload identity scoped to one tenant, one thread, one tool call
Warm pools

A warm pool may reduce latency. It also makes isolation harder to reason about. If environments are reused, prove that files, processes, secrets, network state, and tenant data cannot survive between assignments — and treat that proof as a release-blocking test rather than a design assertion.

Generated code must never execute as a child process of the agent worker.

EvidenceDenied egress attempts and sandbox timeout or out-of-memory rates are alerting signals, not debug output. A spike in either means generated code is trying to do something the design says it cannot.

SourcegVisor architecture guide — one current implementation option

§ 19Human approval

Approval is represented as persistent workflow state, not as a synchronous request waiting for somebody to click a button. A run that holds a worker open while waiting for a person is a run that cannot survive a deployment.

The gated node recordsThe eventual decision records
Proposed operationApprover identity
ArgumentsDecision — approve, edit, or reject
Initiating principalTimestamp
Policy requiring approvalEdited arguments, if applicable
Eligible approversReason or comment, where required

Execution then releases compute. On resume, execute only the approved form of the action — an edited approval is a different action from the one proposed, and the record has to say which one ran.

Non-idempotent operations belong after the approval boundary. That is not a stylistic preference: it is what makes the replay behavior in §15.1 safe.

SourceLangChain human-in-the-loop — interrupt, persist, resume

§ 20Observability and evaluation

An operator has four questions, and the observability design exists to answer them rather than to collect signals.

QuestionAnswered by
What did the agent do?The reasoning tree from the serving layer — graph nodes, subagent delegation, planning steps, interrupts
Why did it make that model or tool call?Model spans from the AI Gateway and tool spans from the Tool Gateway, nested under the same trace
What did the run cost?AI Gateway spans — authoritative, because every model call traverses it
Where did latency or failure occur?One correlated trace spanning ingress, agent, model, tool, and sandbox

WhyEach question maps to exactly one chokepoint. That is not a coincidence — it is the payoff for routing every capability through a broker in §4.

20.1Instrumentation strategy

A production agent trace should correlate the user request, the graph and prompt version, model calls, subagent delegation, tool calls, authorization decisions, sandbox executions, interrupts and approvals, the final outcome, latency, and token cost.

Instrument at infrastructure chokepoints plus the framework callback, and correlate on one trace identity:

  • AI Gateway emits a span per model call — model, tokens, cost, latency, cache hit, tenant. Authoritative for cost, and complete regardless of caller.
  • Serving layer and harness emit the reasoning tree — graph nodes, subagent delegation, planning steps, tool-call decisions, interrupts.
  • Tool Gateway emits a span per tool call with the authorization decision attached.
  • Sandbox Broker emits execution spans — exit code, duration, resource consumption, egress attempts.

Propagate trace attributes as telemetry baggage, not by manual per-span tagging. Tenant, principal, session, thread, and experiment set once at ingress will then appear on every descendant span across process boundaries.

WhyHand-tagging is where trace trees fall apart in practice: one un-instrumented hop and the tree becomes several disconnected fragments that no longer answer any of the four questions.

20.2Evaluation

A code-defined graph makes evaluation tractable in a way a self-modifying daemon does not: topology is code, so trace shape is stable across runs and span-level assertions are meaningful.

Component evaluation · every commit, seconds

Did the component behave correctly?

Does a tool return the correct result? Does structured output validate? Does retrieval find the expected evidence? A single node, deterministic inputs, assertions on output shape and content.

Trajectory evaluation · every pull request

Did the agent take an acceptable path?

Which tools did it call? Did it attempt a gated action without approval? How many turns or subagents did it use? Full graph over a dataset, with assertions on sequence, turn count, and cost ceiling.

Outcome evaluation · nightly and pre-promotion

Did the task actually succeed?

Prefer deterministic business-state checks — file diff, query result, API state. Use model judges only where the result cannot be reduced to a deterministic assertion.

Reproducibility requirements

  • Every trial runs as a fresh thread under a dedicated evaluation tenant — no checkpoint or memory state carries between trials.
  • Pin model, model version, and sampling parameters explicitly. Zero temperature does not make an agent deterministic, but unpinned model routing makes results meaningless.
  • Version the prompt and record the version on the run, so a score regression can be attributed to a prompt change rather than guessed at.
  • The judge model runs on a pinned pool separate from the model under test.

Scoring must be outcome- and trajectory-weighted, not span-diffed. Even with fixed topology, an agent's loop count varies by input. The release gate should evaluate the behavior that matters rather than whether two stochastic traces look identical.

Useful longitudinal metrics: task success rate, cost per task, turns to completion, tool error rate, approval-policy violations, sandbox failure rate, and p95 task latency.

Evidence“Gated action attempted without approval” is an assertion in the trajectory suite, so a regression in the Approval Broker fails a pull request rather than surfacing in production.

20.3Operational metrics

SignalSourceAlert on
Cost per tenant per hourAI GatewayBudget burn rate
Model error and refusal rateAI GatewayRegression after a model or routing change
Tool-call error rateTool GatewayRegression after a tool deploy
Authorization denials per tenantTool GatewaySpike → misconfigured policy, or an agent probing
Egress denialsEdge brokerSpike → misconfiguration or exfiltration attempt
Sandbox timeout / OOM rateSandbox BrokerRunaway generated code
Queue depthRun queueScaling signal; CPU-based autoscaling badly under-scales I/O-bound workers
Lease expiries / requeuesServing layerSustained non-zero → grace period shorter than node execution
Approvals pending, age p95Approval BrokerGates that nobody is servicing
Identity mismatch (ingress vs execution)AuditAny occurrence — page immediately

The last row is the only one on this list with no acceptable non-zero rate. Everything above it describes a system under load; that one describes a system whose central invariant has failed.

§ 21Request paths

Five runtime paths carry essentially all traffic; the narrative walkthrough in §7 is F1, F2, F3, and F4 composed into one task. The agent worker has no alternative route around any of these paths.

F1Interactive agent turn

  • User
  • Ingress + identity
  • Agent serving layer
  • Agent worker
  • AI Gateway
  • Model
  • Response

The tenant claim is bound at the ingress hop and travels on every edge after it. The loop repeats until a terminal response; a checkpoint is written at each node, and a span is emitted at every hop.

F2Enterprise tool call

  • Agent
  • Tool Gateway
  • Policy
  • Integration service
  • Enterprise system
  • Result

The integration service holds the credential and performs the call on the caller's behalf. The agent receives the result and never the credential; an operation it is not authorized to perform is not in its tool list to begin with.

F3Generated-code execution

  • Agent
  • Sandbox Broker
  • Fresh isolated environment
  • Execute
  • Output
  • Destroy environment

No environment outlives its invocation, and none is shared across tenants. Cold-start cost is therefore on the critical path of every code-executing turn — see the runtime choice in §10.2.

F4Human approval

  • Agent
  • Gated node
  • Checkpoint + release worker
  • Approval Broker
  • Human decision
  • Resume
  • Approved tool action

Same entry as F1. On reaching a gated node the graph interrupts, state is checkpointed, and the worker is released — it is not held open waiting for a human. Resumption may land on a different pod, after a deploy, days later. This is why workers must be stateless and why the queue acknowledges on completion rather than on receipt.

F5Local inference

  • Agent
  • AI Gateway
  • Inference Fabric
  • Model response

Identical from the agent's perspective to a call routed to an external provider. The gateway's routing decision is the only place the difference exists — see the Inference Fabric reference architecture for what happens beyond that boundary.

App. ANetwork rules

The platform boundary is expressible almost entirely as a small allowlist. The denied flows are more informative than the permitted ones, so they are stated first.

Explicitly denied

  • Agent worker → enterprise system — must traverse the Tool Gateway
  • Agent worker → model server directly — must traverse the AI Gateway
  • Agent worker → sandbox workload directly — only the broker protocol
  • Sandbox → enterprise systems
  • Sandbox → model infrastructure
  • Sandbox → internet, by default
  • Sandbox → platform, except its telemetry span
  • Any workload → internet without the egress broker
  • Any outbound license-verification or usage-telemetry call from the serving layer

Explicitly permitted

SourceDestinationConditions
UserIngress gatewayThe only public entry point; OIDC
IngressAgent serving layerInternal token + mutual TLS. Tenant claim attached here
Agent workerAI GatewayTenant key + mutual TLS. Only inference path
Agent workerTool GatewayInternal token; tenant-scoped authorization
Agent workerSandbox BrokerMutual TLS; broker protocol only
Agent workerApproval BrokerMutual TLS; backed by the interrupt primitive
Sandbox BrokerSandboxPer-invocation workload identity. Push work in, pull result out
SandboxEgress brokerOnly when a tool explicitly requires the internet; allowlisted, logged
SandboxTelemetry collectorExecution spans only — the sandbox initiates nothing else
Tool servicesEnterprise systemsScoped, short-lived credentials. The only path to enterprise data
AI GatewayModel providers / Inference FabricGoverned; external providers via controlled egress
Platform servicesTelemetry collectorSpans with generative-AI semantics plus baggage
Administrative accessPrivileged endpointsSeparate management path, multi-factor, recorded

App. BAgent-serving deployment choices

The harness decision and the deployment decision are separate. Three paths are credible today; the architecture in Part I does not change whichever one wins.

PathUse when
LangChain standalone Agent ServerA commercial runtime/license dependency and the required outbound access are acceptable
AegraPermissive OSS is required and the candidate passes tenancy, failure, and security validation
Thin Agent Protocol serverNeither packaged runtime satisfies the trust boundary or the long-term ownership model

The selection criterion is not feature count. It is whether the deployment mechanism preserves the architectural invariants in §5 — and specifically whether tenant isolation reaches state retrieval through documented extension points rather than through a patch to internal request handling.

What to validate before adopting a packaged server

  • Tenant isolation, including the interaction with an independently pooled checkpointer (Appendix C).
  • Failure recovery — kill workers under load, roll deploys mid-run, expire leases, and assert zero lost or duplicated runs.
  • Upgrade behavior and migration ownership.
  • Whether authorization can be integrated without patching internal request handling.
  • Whether the serving layer makes any outbound call the estate does not permit.

If adopted

Fork and vendor immediately; pin to a commit in your own repository and build your own image through the internal mirror. Keep all graph and tool code free of imports from the serving project — it is a deployment target, not a dependency of your agents. Build to the Agent Protocol wire format so clients stay portable across serving layers, and keep a current rebuild-from-scratch estimate as fork insurance.

SourcesLangChain standalone server deployment · Aegra · Agent Protocol

App. CTenant-safe state rules

  1. Every externally addressable thread or run is checked against tenant ownership.
  2. Tenant context is request-scoped, never inferred from pooled connection or session state.
  3. Platform-owned relational tables enforce tenant ownership again at the database boundary where practical.
  4. Framework checkpointer access is reached only after platform authorization.
  5. Evaluation uses a dedicated tenant and fresh state.
  6. Cross-tenant access tests are release-blocking tests.
  7. Any disagreement between ingress identity and execution identity is a page-worthy security event.

C.1The checkpointer interaction

The architectural rule is short: establish tenant ownership of a thread in platform-owned tables before that thread identifier reaches the framework's independently pooled checkpointer.

WhyThe checkpointer manages its own connection pool and executes its own SQL. It does not participate in the request-scoped session and will not carry the request's tenant context, so row-level security cannot be the thing protecting it. Authorize first, then delegate an already-authorized identifier.

The resolution has four parts: thread identifiers are unguessable UUIDs, so a leaked one is not enumerable; every request path resolves thread to tenant against the platform's own table under row-level security before delegating; workers revalidate the tenant at lease pickup rather than trusting the queue payload; and, where the threat model includes a compromised worker, a connection factory sets the tenant setting per checkout as defense in depth.

Postgres mechanics — row-level security without silently losing the tenant context

Row-level security on platform-owned tables

ALTER TABLE app.threads ENABLE ROW LEVEL SECURITY;
ALTER TABLE app.threads FORCE ROW LEVEL SECURITY;   -- policies bypass the owner by default

CREATE POLICY tenant_isolation ON app.threads
  USING (tenant_id = current_setting('app.tenant_id', true))
  WITH CHECK (tenant_id = current_setting('app.tenant_id', true));

FORCE matters because the migration user usually owns the table. WITH CHECK matters because omitting it lets a tenant insert a row attributed to someone else and then lose sight of it.

Set the context transaction-scoped, never session-scoped

async with SessionFactory() as session:
    async with session.begin():
        await session.execute(text("SET LOCAL ROLE tenant_user"))
        await session.execute(
            text("SELECT set_config('app.tenant_id', :tid, true)"),
            {"tid": principal.tenant_id},
        )
        yield session

SET SESSION persists on the pooled connection after the request ends; the next borrower inherits it, and a path that skips setup silently runs as the previous tenant with no error. An f-string here is also injectable from a token claim. Under a transaction-mode connection pooler, session-scoped settings are outright broken.

Depends on the commit boundary

The transaction must be the request, not the repository method. Repositories flush; the session dependency commits once after the handler returns. If methods commit individually, the first commit ends the transaction and takes the LOCAL settings with it — every subsequent query then runs with no tenant context, the policy matches nothing, and you get a silent empty list.

Do not attempt to force row-level security onto the checkpointer's own tables. You do not own that schema, and a migration you do not control will eventually collide with policies you added to it.

The test that is worth more than the review

Open two sessions in sequence for different tenants and assert the second cannot see the first's threads, runs, checkpoints, or memory namespaces. Run it in CI on every commit. This is the release-blocking test in rule 6 above.

App. DTerminology

Reference only. Nothing in §1–§11 requires any of it.

Agent harness
the code and runtime abstractions governing how an agent plans, reasons, delegates, and uses tools
Agent serving layer
infrastructure exposing threads, runs, streaming, queues, and durable execution
AI Gateway
the policy boundary for all model access — who may call which model, under what budget and data rules
Tool Gateway
the policy boundary for enterprise-system operations
MCP
Model Context Protocol — a standard for exposing model-context tools; useful inside the Tool Gateway architecture, but not itself the authorization system
Sandbox Broker
the trusted service that creates disposable environments for untrusted generated code
Approval Broker
the persistent workflow service governing human decisions on designated actions
Thread
durable execution and conversation context, owned by exactly one tenant
Run
one execution of an agent against a thread or a stateless input
Checkpoint
persisted graph state that allows a run to resume rather than restart
Interrupt
the primitive that suspends a graph, persists its state, and releases the worker
HIL
human-in-the-loop — a run that pauses for a person to decide
RLS
row-level security — per-row access policy enforced by the database
OTel / OTLP
OpenTelemetry and its wire protocol — the vendor-neutral tracing standard used throughout
OTel baggage
key/value context that rides along a trace across process boundaries, so descendant spans inherit it without being tagged by hand
SSE
server-sent events — the one-way HTTP streaming channel used to deliver tokens to a client
mTLS
mutual TLS — both sides of a connection present a certificate
OIDC
OpenID Connect — the single-sign-on protocol that issues the identity claims the platform authorizes against
Related reference architecture

The Inference Fabric specifies how an organization can operate open-weight models on its own accelerator infrastructure. This agent architecture requires a governed model service; it does not require the organization to own the GPUs underneath it. That distinction is deliberate.

Blueprints are the easy part

Trust zones, tenancy boundaries, and a serving layer you can actually operate — we build these for teams who would rather ship the system than spend a quarter specifying it.