Frequently asked questions
A1 I am responsible for keeping agent costs under control as usage grows.
send every request to a frontier LLM, so the bill grows with traffic and I can’t predict it.
Every request starts at AgentLM’s gate. The first layers of the model read the request and decide: answer directly, think first, or escalate. If agent memory has no procedure, evidence or concept that matches, it escalates no matter what the model thinks. Because the gate is the model’s own first layers, a request it keeps costs nothing extra, and one it escalates costs a fraction of a single pass.
- Gate first. Small heads on the early layers estimate whether AgentLM can solve the request, which skills it needs and how much thinking it deserves.
- Memory coverage is a hard veto. No matching knowledge in agent memory means escalate. The model can’t talk itself into a guess.
- Solve locally. Kept requests continue through the same pass on a GPU in your tenant. No per-token bill from a third party.
- Escalate with context. When it escalates, the frontier LLM gets the request plus the context AgentLM gathered, and the answer comes back through the same checks.
What changesFrontier spend tracks the hard cases, not total traffic. The escalation threshold starts high and comes down only as measured accuracy allows.
A2 I am responsible for agents that hold long conversations and long-running cases.
forget context, or I keep re-sending ever-longer prompts and pay for the same tokens again on every turn.
AgentLM doesn’t re-read the conversation each turn. A session is a fixed-size state plus a short window of recent text, saved to agent memory after every turn and restored on the next. Knowledge isn’t pasted into the prompt either: AgentLM attends to memory directly, using attention blocks precomputed from the knowledge graph.
- Fixed-size session state. Most of AgentLM’s layers keep a fixed-size state instead of a growing cache. The session costs the same on turn 500 as on turn 5.
- Recent text, exactly. A sliding window keeps the last few thousand tokens verbatim, for exact recall of what was just said.
- Memory as attention, not prompt. Knowledge-graph nodes are precomputed into attention blocks stored in agent memory. AgentLM attends to the ones it needs.
- Saved every turn. The session snapshot is written back to memory, so a session survives restarts and can move between GPUs.
What changesEach turn processes only its new tokens. Long sessions stop getting slower and more expensive.
A3 I am responsible for giving agents the knowledge they need.
depend on retrieval plumbing — chunking, vector search, stuffing text into the prompt — that misses facts or crowds out the question.
AgentLM doesn’t need knowledge pasted into its prompt. The knowledge graph in agent memory is precomputed into attention blocks that the model reads directly through dedicated memory-attention layers. The prompt stays short, and the knowledge is part of the same pass.
- Precomputed once. Knowledge-graph nodes — cases, procedures, concepts — are turned into attention blocks for this model and stored next to the source records in agent memory.
- Selected by the gate. The gate picks the part of the graph that matters for this request, so only relevant blocks are loaded.
- Attended, not pasted. Memory-attention layers read those blocks directly. The prompt stays short and the question keeps its place.
- Source stays the truth. Records and the graph remain the source of truth; blocks are recomputed when the data or the model changes.
What changesNo chunking pipeline to tune and no context window to ration. The model works from the same knowledge your agents store.
A4 I am responsible for turning model output into actions.
return free text or half-valid tool calls that I have to parse, validate and retry.
AgentLM answers with a workflow, not prose. Decoding is constrained by the CNCF Serverless Workflow schema, so every token keeps the output valid, and A3T dry-runs the workflow before returning it. What you receive is something you can inspect, approve and run.
- Schema-constrained decoding. The model can only emit tokens that keep the output a valid workflow. No parsing, no repair loop.
- Dry run before return. A3T checks the workflow against its inputs, tools and policies without side effects.
- Reviewable. The result is YAML you can read on the canvas and diff in Git, like any other workflow.
- Same runtime. Once approved, it runs with checkpoints, policy checks and audit, like a hand-written flow.
What changesAgent output stops being a string to interpret and becomes a checked plan you can run.
A5 I am responsible for answers people can trust.
guess confidently when they don’t know, and nothing tells me it was a guess.
AgentLM doesn’t answer from nowhere. Before it commits, the gate checks whether agent memory holds a matching procedure, evidence or concept. If nothing matches, it escalates, whatever the model itself thinks. It can also escalate mid-thought when a step needs knowledge it doesn’t have.
- Coverage check first. The gate looks for near-matching procedures, evidence and concepts in memory for this request.
- Hard veto. No coverage means escalate. The model’s own confidence can’t override it.
- Escalate mid-thought. While reasoning, AgentLM can call escalation as a tool when a step needs knowledge it doesn’t have.
- A threshold you control. The escalation threshold starts high and comes down only as measured accuracy allows.
What changesAnswers are grounded in what your memory actually holds, and gaps show up as escalations you can see instead of confident guesses.
A6 I am responsible for what data leaves the company.
send prompts full of customer and internal data to an external model on every call.
AgentLM runs on a GPU inside your tenant, so most requests are answered without any data leaving it. Escalation to a frontier LLM is an action like any other: Cedar decides whether it may happen and what may be sent, and every escalation is recorded with what was sent and why.
- Local by default. AgentLM, agent memory and the session state all live in your tenant.
- Escalation is an action. The llm:escalate action is checked like a tool call: by agent, by user, by data classification.
- Forbid what must stay. A forbid policy can keep restricted data local whatever the model decides; AgentLM then answers or hands over to a person.
- Recorded. Each escalation is stored as a decision record next to the run: who, what was sent, which policy allowed it.
What changesYou decide what may leave, per agent and per data class, and you can prove what did.
A7 I am responsible for explaining what agents did.
give answers I can’t trace. I don’t know what they knew, or why they asked an outside model.
Every AgentLM answer is tied to the run that produced it. A3T records which memory the model read, whether the gate kept the request or escalated it and why, what was sent if it escalated, and the workflow that resulted. All of it sits in the execution graph next to the policy decisions.
- Memory read. The memory loaded for the request is recorded with the run.
- Gate decision. Kept or escalated, with the coverage result that decided it.
- Escalation record. What was sent, to which model, and which policy allowed it.
- One graph. The answer, the workflow it became and every decision sit in the same execution graph, queryable with AQL.
What changesFor any run, you can answer “what did it know, and why did it do that?”
A8 I am responsible for who can see which data.
could leak data through the model. It may have seen records the person asking isn’t allowed to see.
AgentLM only reads memory the request is allowed to see. Before any attention blocks are loaded, Cedar checks the agent, and the user it acts for, against each memory scope. Blocks from scopes they can’t read are never loaded, so the model can’t draw on them.
- Scopes on memory. Memory is organised by tenant, team and agent namespace, each covered by policy.
- Checked before loading. Cedar decides which scopes this agent, acting for this user, may read — before any block reaches the GPU.
- Nothing to leak. Blocks from denied scopes are never loaded, so they can’t influence the answer.
- Logged. Every allow and deny for memory access is in the decision log.
What changesThe model never knows more than the person it’s working for.
A9 I am responsible for what agents are allowed to change.
act straight from model output. A model decision becomes an action before anyone or anything checks it.
AgentLM’s output is a workflow, and a workflow does nothing until it passes A3T’s checks. It is dry-run first, then every step is checked by Cedar as it runs, and steps you mark as sensitive wait for a human approval.
- A plan, not an action. The model produces a workflow. Nothing touches your systems at this point.
- Dry run. Inputs, tools and policies are checked without side effects.
- Policy on every step. Each step is authorized by Cedar as it runs, for this agent and the user it acts for.
- Human gates. Sensitive steps pause for approval, and every decision is logged.
What changesModel decisions go through the same controls as any other change.
A10 I am responsible for running models at predictable cost and latency.
depend on a frontier API whose latency, rate limits and price I don’t control, and fine-tuning a model per team is out of reach.
AgentLM is a 4–8B-parameter model that runs on a single GPU, served by vLLM. Session memory per user is fixed in size, so capacity planning is arithmetic. New domains come as small skill adapters stored in agent memory and paged onto the GPU when the gate asks for them, so teams don’t need their own fine-tuned model.
- One GPU per model. No cluster of accelerators per tenant. Start with one GPU and add more as traffic grows.
- Fixed per-session memory. Tens of megabytes per session whatever its length, so a GPU’s capacity is a known number.
- Skills paged in (roadmap). Domain and tenant skills are adapters trained against one frozen core, cached on the GPU and evicted when cold.
- Versioned core. The core model changes rarely and deliberately. On an upgrade, memory’s attention blocks are recomputed from the source data as a background job.
What changesLatency and cost you can plan, on hardware you control, without a model per team.
A11 I am responsible for GPU capacity.
use more GPU memory the longer a conversation runs, so long sessions and many users don’t fit.
Most of AgentLM’s layers are recurrent: they keep a fixed-size state instead of a cache that grows with every token. A few attention layers keep a short sliding window for exact recall of recent text. Per session, memory stays at tens of megabytes however long it runs.
- Fixed-size state. Recurrent layers carry the session forward in constant memory.
- A short exact window. Attention layers keep only the last few thousand tokens verbatim.
- Older knowledge lives in memory. Anything outside the window is read from agent memory through memory attention, not held in GPU cache.
- Capacity is arithmetic. Sessions per GPU is a number you can plan, not one that shrinks as conversations grow.
What changesLong sessions and many concurrent users fit on the GPUs you have.
A12 I am responsible for keeping agent sessions running through restarts and scaling.
lose their session when a GPU node restarts, and I can’t move a session to another node.
After every turn, AgentLM’s session — its fixed-size state, the recent-text window and pointers to the memory it used — is saved to agent memory as a snapshot. The next turn restores it on whichever GPU picks it up.
- Snapshot every turn. The session is written to agent memory after each answer.
- Restore anywhere. Any GPU serving the same model version can load it and continue.
- Survives restarts. A node restart or rescheduling costs one restore, not the conversation.
- Scale freely. Sessions aren’t pinned, so you can add, drain or replace GPUs without stranding users.
What changesGPU nodes become replaceable. Sessions live in memory, not on a machine.
W1 I am responsible for shipping agents that do real work, not just chat.
call the LLM for steps that should be plain code, so every run is slow, costly and a little different.
An A3T agent is three parts working together: a workflow, AgentLM and memory. The workflow carries the known path with typed inputs and deterministic tasks, and its execution is monitored step by step. Only deviations from that path go to AgentLM, which uses the flow execution graph in agent memory to resolve the case and recommend how the workflow should change. If AgentLM can’t resolve it, it escalates to a frontier LLM, and only if policy allows.
- Typed inputs. Every workflow declares its input schema. Unexpected input is caught at the edge, not discovered by a model halfway through a run.
- Deterministic by default. Switches, loops, transforms, MCP tool calls and triggers run as plain tasks on the Rust runtime — no tokens spent, the same result every time.
- Execution is monitored. Each step is compared with the expected path. When a run leaves it — an unknown branch, a schema mismatch, an outcome out of range — only that deviation is handed to AgentLM.
- AgentLM manages the flow. AgentLM reads the flow execution graph in agent memory — past runs, the paths they took and how they ended — to handle the case, then recommends a workflow change. Approved, it becomes the next version.
- Escalate only when stuck. A case AgentLM can’t solve goes to a frontier LLM with the context it needs. Cedar decides whether it may leave your tenant, and the call is recorded.
What changesModel calls shrink to the cases that need judgement, frontier calls shrink further still, and the workflow improves from its own history instead of re-reasoning every run.
W2 I am responsible for agents that finish long, multi-step jobs.
fail halfway through, and I have to rerun everything from the start — including steps that already had side effects.
A3T checkpoints workflow state after every task. When a step fails, the run resumes from that step with its state intact; steps that already finished are not repeated.
- Checkpoint after each task. Inputs, outputs and the run’s position in the flow are saved as it progresses.
- Per-task failure policy. Each task carries its own retries, backoff and timeout, so one slow dependency doesn’t sink the whole run.
- Resume, don’t restart. After a failure or a restart, the run picks up at the failed step. A ticket that was already opened, or a message already sent, stays done.
What changesLong jobs survive failures and restarts without duplicate side effects or wasted compute.
W3 I am responsible for the runtime agents depend on in production.
stall under load, and latency jumps whenever the runtime pauses — not acceptable for bidding, trading or live monitoring.
A3T’s core is written in Rust. There is no garbage collector to pause execution, and tasks are dispatched in microseconds, so latency stays predictable as load grows.
- Any trigger in. Webhooks, schedules and events all feed the same dispatcher.
- Microsecond dispatch, no GC pauses. No stop-the-world pauses, and async I/O keeps workers busy instead of blocked.
- LLM off the hot path. Deterministic tasks and tool calls run directly. The LLM is called only on deviations (see the first question), so a slow model doesn’t set your latency.
What changesTight latency budgets — like an RTB bid window — become something you can plan for, not hope for.
W4 I am responsible for supporting many teams that build agents.
are built in a different framework by every team, and I have to deploy, secure and debug all of them.
Every A3T agent is defined in the open CNCF Serverless Workflow spec and runs on one runtime. Tools, triggers, policy and memory are registered once and shared by every team.
- One definition format. Teams write workflows in CNCF Serverless Workflow — an open, portable spec, not a proprietary DSL.
- One runtime to operate. The same deployment, scaling, logs and upgrade path for every agent.
- Shared building blocks. MCP tools and triggers are registered once and reused. Policy and memory apply the same way to every team.
What changesYou run one platform instead of a framework zoo, and teams ship faster because the building blocks already exist.
W5 I am responsible for what automated systems do in the business.
make decisions through a path nobody can reconstruct when something goes wrong.
Every A3T run is a workflow, so every step is recorded: what came in, what memory was recalled, which policy decision was made, which tool ran and what came out. The run is stored as an execution graph in agent memory and can be queried later.
- Each step recorded. Inputs, outputs and policy decisions are captured per step — not just a final chat transcript.
- Stored as a graph. Runs are linked to the incidents, entities and decisions they touched.
- Ask why. Trace an outcome back through the steps and decisions that produced it, with an AQL query.
What changes“Why did the agent do that?” gets a precise answer in minutes, not a forensic project.
W6 I am responsible for change control on production systems.
change behaviour the moment someone edits a prompt or a flow in production.
In A3T, a workflow change is a new version, not a live edit. It is reviewed as a diff and promoted only after its owner approves it. Inside a flow, approval steps can pause a run before a sensitive action.
- Versioned definitions. Every change creates a new version; production keeps running the approved one.
- Review the diff. Reviewers see exactly what changed — steps, tools, inputs — before it goes live.
- Approval gate. The owner, or your CISO for sensitive agents, approves the promotion.
- Human-in-the-loop steps. A flow can pause for a person to approve before a high-impact action.
What changesProduction agents change on purpose, with a record of who approved what.
M1 I am responsible for agents that people rely on day after day.
forget everything between sessions or deployments, so users keep repeating themselves.
A3T gives every agent durable memory across five types — working, episodic, semantic, procedural and tools. Facts survive restarts and redeploys, keep their history when they change, and are recalled by meaning rather than by scrolling back through recent messages.
- Write as you go. Agents STORE what they learn into the right memory type with AQL.
- Survives everything. Memory is durable: sessions, restarts and redeploys don’t erase it.
- Recall by meaning. RECALL finds what is relevant to the current task, not just the latest messages.
What changesBetter continuity, and agents stop asking for — or reconstructing — the same information.
M2 I am responsible for keeping the agent stack simple to run.
need Postgres for facts, a vector store for recall, Neo4j for relationships, Redis or NATS for coordination, a change-notification mechanism and retention jobs — all stitched together by hand.
A3T memory brings these functions together behind one durable data model and one query language, AQL. For typical agent workloads, that is one component to deploy, secure and understand instead of six plus the glue between them.
- Facts and history. STORE and UPDATE keep current values and how they changed.
- Recall, relationships, coordination. RECALL by meaning, LINK and FOLLOW for graphs, topics and WATCH for coordination and change.
- Retention built in. TTL and FORGET replace custom clean-up jobs.
What changesLess custom engineering, fewer components to deploy, and one place to look when something breaks.
M3 I am responsible for multi-agent applications.
need to share context with each other — but not everything, and not with every agent.
A3T memory is organised by scope and namespace, so each agent or team has its own memory by default. Sharing is explicit: links connect records across scopes, and topics carry the messages agents need to exchange.
- Own namespace by default. Each agent or team writes into its own scope.
- Share on purpose. LINK records into a shared scope, or publish to a topic other agents subscribe to.
- Policy on top. Who can read a shared scope is a Cedar policy, not a convention (see the last Policy question).
What changesA common memory for multi-agent systems, without one undifferentiated conversation history that every agent can see.
M4 I am responsible for data retention and the right to be forgotten.
hold on to stale facts, and deleting data properly is hard.
A3T updates facts with history instead of silently overwriting them, expires records with TTLs, and removes data physically with FORGET — not just by hiding it.
- Updates keep history. You can see what the agent believed, and when that changed.
- TTL at write time. Records can carry an expiry from the moment they are stored.
- Real deletion. FORGET removes data physically, for retention rules and erasure requests.
What changesControl over stale facts, and a retention story you can explain to your DPO.
M5 I am responsible for agents that react to a changing world.
can’t coordinate with each other, or notice when state changes, without custom queues and polling code.
A3T memory includes ordered topics for agent-to-agent communication and watches that notify you when a query’s result changes.
- Ordered, restart-safe topics. Consumers keep their position, so an agent that restarts carries on from where it stopped.
- WATCH a query. Subscribe to a RECALL and get notified when its result changes.
- No glue services. Coordination lives in the same memory layer as the data it is about.
What changesLess custom queue and event-processing code for reactive, multi-agent workflows.
M6 I am responsible for where company data goes.
can’t send memory or embeddings to an external service.
A3T can generate embeddings locally and be self-hosted, so recall works without calling an external embedding service. Memory, vectors and the model that makes them stay inside your boundary.
- Local embeddings. Text is embedded inside your environment.
- Self-hosted memory. Records and vectors are stored where you run A3T.
- No mandatory external calls. Recall doesn’t depend on a third-party API being available — or being allowed.
- Local inference too. AgentLM runs in your tenant, so most requests are answered without any model call leaving it.
What changesMore control over data, fewer external dependencies, and more predictable cost.
P1 I am responsible for access control across the company.
run with the same broad access as whoever deployed them.
Every A3T agent has its own service identity. Before each task, the Cedar policy engine built into the runtime checks who is acting, on whose behalf, which action and which resource. Anything not explicitly allowed is denied.
- Agent as a principal. Each agent is a named identity in your policies, separate from the person who built it.
- On behalf of. When an agent acts for a user, that user’s groups are part of the decision.
- Checked before it runs. Every task and tool call is evaluated first. Denied actions never execute, and are logged.
What changesLeast privilege for agents, written in policy you can read.
P2 I am responsible for joiners, movers and leavers.
either break when the person who built them leaves, or keep acting with that person’s access.
A3T agents run as service accounts owned by groups, not by individuals. Users and groups sync from your identity provider over SCIM, so when someone leaves, their access — and any delegation to agents — is removed, while production agents keep running.
- SCIM sync. Users and groups come from your IdP; there is no second user list to maintain.
- Group-owned service accounts. Agents belong to a team, so ownership survives people changes.
- Delegation follows the person. Acting on someone’s behalf ends when that person’s access ends.
What changesNo orphaned agents, no lingering access, and no outage when someone moves on.
P3 I am responsible for passing audits.
can’t prove what they were allowed to do, or what they actually did.
Every policy decision in A3T is recorded — principal, action, resource, result and the policy that matched. The policies themselves are Cedar: short, readable rules an auditor can check directly.
- Decision records. Every allow and deny is logged with its context.
- Readable policy. Cedar rules state what an agent may do in plain terms.
- Compare the two. “Allowed” versus “done” is a query, not an investigation.
What changesAudit evidence comes from the system itself, not from screenshots and interviews.
P4 I am responsible for getting agents approved and into production.
have permission checks hard-coded in if-statements across the code, so every security review starts from scratch.
In A3T, permissions are Cedar policy, outside your agent code. The runtime checks policy before every task and tool call, so your workflow just does the work — and security reviews read one set of policies, not your codebase.
- No auth code in agents. Tasks call tools; the runtime asks the policy engine first.
- One place to review. Security reads the policies, not every branch of your code.
- Change policy, not code. Updating a policy doesn’t need a new build of the agent.
What changesFaster approvals, and fewer security bugs hiding in agent code.
P5 I am responsible for identity integration.
each connect to our identity provider in their own way.
A3T has pluggable OIDC for sign-in — Keycloak, Microsoft Entra ID, Okta or any standards-compliant provider — plus SCIM for users and groups. You integrate once, and every agent and team uses it.
- Bring your IdP. Any OIDC provider plugs in.
- SCIM for users and groups. Group membership drives policy automatically.
- One integration. New agents inherit identity; nobody wires up auth again.
What changesOne identity integration to own, instead of one per agent.
P6 I am responsible for isolating teams and tenants.
could read memory that belongs to another team or customer.
Memory reads and writes in A3T go through the same Cedar policy check as actions. Access is scoped by tenant, team and agent, and every read and write is logged.
- Policy on memory. RECALL and STORE are checked like any other action.
- Scoped by default. An agent reaches only the scopes its policy allows.
- Logged. Every memory access leaves a record.
What changesMulti-tenant agents without cross-tenant leaks.
Didn’t find your question? Book a demo and ask us directly.