Agentic platform

The whole agentic platform on one page - who starts a run, the one boundary every run passes, how the work executes, and what comes back.

1 min read Updated Sep 4, 2026

Agentic platform

This page is the map. It shows every core component and the whole path from a request to a result. It hides the classes, the tables and the contracts. Each layer page below carries those.

Read this page first. Then read the layer page for the part you must change.

One box carries a TODO. The MCP server is planned and not built, and agent access records what works today.

AgencyCore agentic platform · how one request becomes one run
a person, a machine, or an agent · one run boundary · one runtime · two planes
AgencyCore agentic platform · how one request becomes one runa person, a machine, or an agent · one run boundary · one runtime · two planes
0 · PRODUCTS
each product is definitions plus product data, never new infrastructure
0 · PRODUCTSeach product is definitions plus product data, never new infrastructure
Agentic CRM
the lead generation loop
Agentic CRMthe lead generation loop
Signals Search
companies · signals · people
Signals Searchcompanies · signals · people
Email sequence
Envoy durable outreach
Email sequenceEnvoy durable outreach
Builder chat
conversational authoring
Builder chatconversational authoring
1 · WHO STARTS THE WORK
a person, a machine, or an agent working for a person
1 · WHO STARTS THE WORKa person, a machine, or an agent working for a person
A person, in a conversation
A person, in a conversation
Web chat
Web chat
Slack
Slack
WhatsApp
WhatsApp
Telegram
Telegram
A person, in the product UI
A person, in the product UI
Approval
inbox
Approvalinbox
Agent
builder
Agentbuilder
Run
explorer
Runexplorer
An AI agent, working for a person
An AI agent, working for a person
Claude Code
and other CLI agents
Claude Codeand other CLI agents
Claude
and other MCP clients
Claudeand other MCP clients
A machine reports
A machine reports
Nylas
mail arrives
Nylasmail arrives
Vendor
webhook
Vendorwebhook
Schedule
fires
Schedulefires
CRM row
changes
CRM rowchanges
CHANNEL GATEWAY
verify · identify · normalize
keep the session · render the reply
CHANNEL GATEWAYverify · identify · normalizekeep the session · render the reply
PRODUCT APIs
these surfaces already speak our own schema
read a run · resolve an approval · publish a definition
PRODUCT APIsthese surfaces already speak our own schemaread a run · resolve an approval · publish a definition
THE ac CLI
it signs in as a user
it works today
THE ac CLIit signs in as a userit works today
MCP SERVER
one capability is one run
planned, and not built
MCP SERVERone capability is one runplanned, and not built
TODO
TODO
TRIGGERS
one event meets one rule
a new source is a new producer plus a row, never a new way in
TRIGGERSone event meets one rulea new source is a new producer plus a row, never a new way in
FRONT DOOR
ONE model call · answer, clarify, delegate or steer a run
it picks the capability, it never does the work
FRONT DOORONE model call · answer, clarify, delegate or steer a runit picks the capability, it never does the work
2 · ONE DOOR INTO EXECUTION
every run starts here, or nowhere
2 · ONE DOOR INTO EXECUTIONevery run starts here, or nowhere
Customise Agent/Workflow
Customise Agent/Workflow
draft
it may be incomplete, it cannot run
draftit may be incomplete, it cannot run
validate
deterministic, by kind
validatedeterministic, by kind
published
what a new run may use
publishedwhat a new run may use
Agent/Workflow Definition
Agent/Workflow Definition
Agents
built in, or forked
Agentsbuilt in, or forked
Workflows
built in, or forked
Workflowsbuilt in, or forked
Skills
built in, or your own
Skillsbuilt in, or your own
Tools
built in, or connected
Toolsbuilt in, or connected
AN ORGANIZATION ADDS ITS OWN
fork a template agent or workflow · write a new skill · connect an MCP server for new tools
publishing is still the safety boundary
AN ORGANIZATION ADDS ITS OWNfork a template agent or workflow · write a new skill · connect an MCP server for new toolspublishing is still the safety boundary
RUN MANAGER
freeze what this run will use, then ask policy
RUN MANAGERfreeze what this run will use, then ask policy
POLICY
may this run start?
POLICYmay this run start?
deny
no dispatch, and it stays on the record
denyno dispatch, and it stays on the record
allow
dispatch it
allowdispatch it
require approval
the run waits
require approvalthe run waits
APPROVALS
a person decides in the approval inbox
APPROVALSa person decides in the approval inbox
INNGEST · durable execution
INNGEST · durable execution
retry
a step that failed runs again, from where it stopped
retrya step that failed runs again, fromwhere it stopped
wait
for a reply, an event, an approval, or a date
waitfor a reply, an event, an approval, or adate
time out
a wait that never resolves ends the run
time outa wait that never resolves ends the run
publish
publish
delegate
delegate
planned
planned
approved, the run resumes
approved, the run resumes
3 · THE WORK
an agent decides its own steps, a workflow follows the steps we wrote
3 · THE WORKan agent decides its own steps, a workflow follows the steps we wrote
What the run may read
What the run may read
Memory
what was said before
Memorywhat was said before
Knowledge
what is true
Knowledgewhat is true
CRM data
lists · activities
CRM datalists · activities
Product state
prospects · sequences
Product stateprospects · sequences
CONTEXT BUILDER
no model call, always scoped to the organization
CONTEXT BUILDERno model call, always scoped to the organization
AGENTIC RUNTIME · it executes the frozen snapshot
the run executor claims the run and dispatches it by kind
AGENTIC RUNTIME · it executes the frozen snapshotthe run executor claims the run and dispatches it by kind
AGENT
one framework-neutral loop
Agno is the only implementation
it picks its own steps, and a skill
teaches it how to use a tool
AGENTone framework-neutral loopAgno is the only implementationit picks its own steps, and a skillteaches it how to use a tool
WORKFLOW · the steps we wrote, and no model is in charge
step kinds: agent · tool · approval · wait · branch · parallel · subworkflow
for example, one email sequence:
WORKFLOW · the steps we wrote, and no model is in chargestep kinds: agent · tool · approval · wait · branch · parallel · subworkflowfor example, one email sequence:
agent step
draft the email
it follows a skill: how we write outreach
agent stepdraft the emailit follows a skill: how we write outreach
tool step
email.send
the tool invoker asks policy first
tool stepemail.sendthe tool invoker asks policy first
approval
a person decides
the run waits, and holds no worker
approvala person decidesthe run waits, and holds no worker
wait and branch
a reply, or three days
a reply drafts a reply, silence drafts a nudge
wait and brancha reply, or three daysa reply drafts a reply, silence drafts a nudge
TOOLS
one call, one effect, the only way to the world
TOOLSone call, one effect, the only way to the world
Where a tool lands
Where a tool lands
Our own API
never the database
Our own APInever the database
Nylas
mail out
Nylasmail out
Exa · Parallel
web research
Exa · Parallelweb research
Firecrawl
page fetch
Firecrawlpage fetch
MCP servers
approved only
MCP serversapproved only
4 · WHAT COMES BACK
one record, one answer, one bill
4 · WHAT COMES BACKone record, one answer, one bill
The execution record
The execution record
Run row
one per execution
Run rowone per execution
Spans
one per unit of work
Spansone per unit of work
Cost meter
written once
Cost meterwritten once
The product result
The product result
Global intelligence
what we learned
Global intelligencewhat we learned
Organization prospect
is it interesting?
Organization prospectis it interesting?
CRM
do we manage it?
CRMdo we manage it?
The review inbox · one page for everything that needs a person
The review inbox · one page for everything that needs a person
TODO
TODO
an email
waiting to send
an emailwaiting to send
a new signal
waiting for review
a new signalwaiting for review
a run
waiting for approval
a runwaiting for approval
What we sell
What we sell
Four products. Each one is a set of definitions plus its own product data.

None of them brings its own scheduler, queue, run table or policy engine.
Four products. Each one is a set of definitions plus its own product data.None of them brings its own scheduler, queue, run table or policy engine.
Who may ask
Who may ask
Four kinds of caller, and three doors.

A person in a chat enters through the gateway, which turns any channel into one message shape. The front door then makes ONE model call. It chooses what should happen, and it does none of it.

A person in the product UI, and an AI agent on that person's seat, both speak our schema already, so they call the API directly.

A machine sends an event, and a trigger matches it to one rule.

An MCP server would be the fourth door. It is not built.
Four kinds of caller, and three doors.A person in a chat enters through the gateway, which turns any channel into one message shape. The front door thenmakes ONE model call. It chooses what should happen, and it does none of it.A person in the product UI, and an AI agent on that person's seat, both speak our schema already, so they call the APIdirectly.A machine sends an event, and a trigger matches it to one rule.An MCP server would be the fourth door. It is not built.
The gate
The gate
Every run is born here. Nothing runs around it.

A definition is built in or authored by the organization. Fork a template agent or workflow, write a new skill, connect an MCP server for new tools. Whatever the source, it must be published before a run may use it.

The run manager freezes what the run may use, so a later edit cannot change work already in flight.

Policy then answers once: allow, deny, or ask a person. Anything not granted is denied.

Retry, wait and time out are what make a long workflow possible. A run may sit for days waiting on a reply or an approval, and it resumes exactly where it stopped.
Every run is born here. Nothing runs around it.A definition is built in or authored by the organization. Fork a template agent or workflow, write a new skill, connect anMCP server for new tools. Whatever the source, it must be published before a run may use it.The run manager freezes what the run may use, so a later edit cannot change work already in flight.Policy then answers once: allow, deny, or ask a person. Anything not granted is denied.Retry, wait and time out are what make a long workflow possible. A run may sit for days waiting on a reply or an approval,and it resumes exactly where it stopped.
Doing the work
Doing the work
Context is rebuilt fresh for every run, and it is always scoped to one organization. No model call happens while it is built.

The runtime claims the run and dispatches it by kind. An agent reasons its own way to the answer. A workflow follows steps we wrote. That is the only difference between them.

The agent loop sits behind a framework-neutral interface. Agno is the only implementation, and no Agno type is allowed to leak into policy, tools, definitions or surfaces. That is what keeps it replaceable.

Either way, the one door to the outside world is a tool. No credentials, no raw SQL and no free API access ever reach the model.
Context is rebuilt fresh for every run, and it is always scoped to one organization. No model call happens while it is built.The runtime claims the run and dispatches it by kind. An agent reasons its own way to the answer. A workflow followssteps we wrote. That is the only difference between them.The agent loop sits behind a framework-neutral interface. Agno is the only implementation, and no Agno type is allowedto leak into policy, tools, definitions or surfaces. That is what keeps it replaceable.Either way, the one door to the outside world is a tool. No credentials, no raw SQL and no free API access ever reach themodel.
Proof, and result
Proof, and result
Every run leaves a row, a span for each unit of work, and one cost figure.

Discovery also leaves product state. It moves from what we learned, to what is interesting to us, to what we chose to manage.

Anything that needs a person collects in one review inbox. Today those queues are scattered: an email approval lives in the CRM, and a prospect is reviewed where it was found. One page is the intent, not the state.
Every run leaves a row, a span for each unit of work, and one cost figure.Discovery also leaves product state. It moves from what we learned, to what is interesting to us, to what we chose tomanage.Anything that needs a person collects in one review inbox. Today those queues are scattered: an email approval lives inthe CRM, and a prospect is reviewed where it was found. One page is the intent, not the state.
POLICY · it decides, before the work
POLICY · it decides, before the work
1 · admission
before dispatch
1 · admissionbefore dispatch
2 · action
every tool call
2 · actionevery tool call
3 · accrual
as the cost grows
3 · accrualas the cost grows
allow
the work goes ahead
allowthe work goes ahead
require approval
a person decides
require approvala person decides
deny
nothing runs
denynothing runs
Anything not granted is denied. deny > require approval > allow. A rule change applies at the next checkpoint, not the next run.
Anything not granted is denied. deny > require approval > allow. A rule change applies at the next checkpoint, not the next run.
OBSERVABILITY · it records, beside the work
OBSERVABILITY · it records, beside the work
run row
one per execution
run rowone per execution
spans
one per unit of work
spansone per unit of work
cost meter
written once
cost meterwritten once
the durable span is written first
it is the record
the durable span is written firstit is the record
then the live event
best effort; a client that misses it refetches
then the live eventbest effort; a client that misses it refetches
A metric is a query over runs and spans. An alert is a cron that runs the query.
A metric is a query over runs and spans. An alert is a cron that runs the query.
IDEMPOTENCY · it protects the effect
IDEMPOTENCY · it protects the effect
run.start
a client request, or the source message id
run.starta client request, or the source message id
webhook.<provider>
the delivery id they gave us
webhook.<provider>the delivery id they gave us
tool.<name>
run id, plus the model tool call id
tool.<name>run id, plus the model tool call id
ONE CLAIM TABLE, in Postgres
claimed -> done, with the stored result
ONE CLAIM TABLE, in Postgresclaimed -> done, with the stored result
A repeat returns the stored result. Inngest may retry safely only because the effect underneath is idempotent.
A repeat returns the stored result. Inngest may retry safely only because the effect underneath is idempotent.
Always on
Always on
These three apply at every stage above, so they need no arrows of their own.

Policy decides before the work. Observability records beside it. Idempotency sits under both, so a retry cannot double an effect.

Draw an arrow from a plane to a stage and you have said what the panel already says.
These three apply at every stage above, so they need no arrows of their own.Policy decides before the work. Observability records beside it. Idempotency sits under both, so a retry cannot double aneffect.Draw an arrow from a plane to a stage and you have said what the panel already says.
LEGEND
LEGEND
a person starts it here
a person starts it here
an event or a queue hop
an event or a queue hop
it costs a model call
it costs a model call
the one branch point
the one branch point
ordinary work
ordinary work
deterministic plumbing
deterministic plumbing
the allowed path
the allowed path
it waits for a person
it waits for a person
it stops here
it stops here
a container, not a component
a container, not a component
A dashed box is not ours to run, or not durable.
Every arrow is the main path; position carries the rest.
A dashed box is not ours to run, or not durable.Every arrow is the main path; position carries the rest.
Text is not SVG - cannot display
AgencyCore agentic platform · how one request becomes one run
a person, a machine, or an agent · one run boundary · one runtime · two planes
AgencyCore agentic platform · how one request becomes one runa person, a machine, or an agent · one run boundary · one runtime · two planes
0 · PRODUCTS
each product is definitions plus product data, never new infrastructure
0 · PRODUCTSeach product is definitions plus product data, never new infrastructure
Agentic CRM
the lead generation loop
Agentic CRMthe lead generation loop
Signals Search
companies · signals · people
Signals Searchcompanies · signals · people
Email sequence
Envoy durable outreach
Email sequenceEnvoy durable outreach
Builder chat
conversational authoring
Builder chatconversational authoring
1 · WHO STARTS THE WORK
a person, a machine, or an agent working for a person
1 · WHO STARTS THE WORKa person, a machine, or an agent working for a person
A person, in a conversation
A person, in a conversation
Web chat
Web chat
Slack
Slack
WhatsApp
WhatsApp
Telegram
Telegram
A person, in the product UI
A person, in the product UI
Approval
inbox
Approvalinbox
Agent
builder
Agentbuilder
Run
explorer
Runexplorer
An AI agent, working for a person
An AI agent, working for a person
Claude Code
and other CLI agents
Claude Codeand other CLI agents
Claude
and other MCP clients
Claudeand other MCP clients
A machine reports
A machine reports
Nylas
mail arrives
Nylasmail arrives
Vendor
webhook
Vendorwebhook
Schedule
fires
Schedulefires
CRM row
changes
CRM rowchanges
CHANNEL GATEWAY
verify · identify · normalize
keep the session · render the reply
CHANNEL GATEWAYverify · identify · normalizekeep the session · render the reply
PRODUCT APIs
these surfaces already speak our own schema
read a run · resolve an approval · publish a definition
PRODUCT APIsthese surfaces already speak our own schemaread a run · resolve an approval · publish a definition
THE ac CLI
it signs in as a user
it works today
THE ac CLIit signs in as a userit works today
MCP SERVER
one capability is one run
planned, and not built
MCP SERVERone capability is one runplanned, and not built
TODO
TODO
TRIGGERS
one event meets one rule
a new source is a new producer plus a row, never a new way in
TRIGGERSone event meets one rulea new source is a new producer plus a row, never a new way in
FRONT DOOR
ONE model call · answer, clarify, delegate or steer a run
it picks the capability, it never does the work
FRONT DOORONE model call · answer, clarify, delegate or steer a runit picks the capability, it never does the work
2 · ONE DOOR INTO EXECUTION
every run starts here, or nowhere
2 · ONE DOOR INTO EXECUTIONevery run starts here, or nowhere
Customise Agent/Workflow
Customise Agent/Workflow
draft
it may be incomplete, it cannot run
draftit may be incomplete, it cannot run
validate
deterministic, by kind
validatedeterministic, by kind
published
what a new run may use
publishedwhat a new run may use
Agent/Workflow Definition
Agent/Workflow Definition
Agents
built in, or forked
Agentsbuilt in, or forked
Workflows
built in, or forked
Workflowsbuilt in, or forked
Skills
built in, or your own
Skillsbuilt in, or your own
Tools
built in, or connected
Toolsbuilt in, or connected
AN ORGANIZATION ADDS ITS OWN
fork a template agent or workflow · write a new skill · connect an MCP server for new tools
publishing is still the safety boundary
AN ORGANIZATION ADDS ITS OWNfork a template agent or workflow · write a new skill · connect an MCP server for new toolspublishing is still the safety boundary
RUN MANAGER
freeze what this run will use, then ask policy
RUN MANAGERfreeze what this run will use, then ask policy
POLICY
may this run start?
POLICYmay this run start?
deny
no dispatch, and it stays on the record
denyno dispatch, and it stays on the record
allow
dispatch it
allowdispatch it
require approval
the run waits
require approvalthe run waits
APPROVALS
a person decides in the approval inbox
APPROVALSa person decides in the approval inbox
INNGEST · durable execution
INNGEST · durable execution
retry
a step that failed runs again, from where it stopped
retrya step that failed runs again, fromwhere it stopped
wait
for a reply, an event, an approval, or a date
waitfor a reply, an event, an approval, or adate
time out
a wait that never resolves ends the run
time outa wait that never resolves ends the run
publish
publish
delegate
delegate
planned
planned
approved, the run resumes
approved, the run resumes
3 · THE WORK
an agent decides its own steps, a workflow follows the steps we wrote
3 · THE WORKan agent decides its own steps, a workflow follows the steps we wrote
What the run may read
What the run may read
Memory
what was said before
Memorywhat was said before
Knowledge
what is true
Knowledgewhat is true
CRM data
lists · activities
CRM datalists · activities
Product state
prospects · sequences
Product stateprospects · sequences
CONTEXT BUILDER
no model call, always scoped to the organization
CONTEXT BUILDERno model call, always scoped to the organization
AGENTIC RUNTIME · it executes the frozen snapshot
the run executor claims the run and dispatches it by kind
AGENTIC RUNTIME · it executes the frozen snapshotthe run executor claims the run and dispatches it by kind
AGENT
one framework-neutral loop
Agno is the only implementation
it picks its own steps, and a skill
teaches it how to use a tool
AGENTone framework-neutral loopAgno is the only implementationit picks its own steps, and a skillteaches it how to use a tool
WORKFLOW · the steps we wrote, and no model is in charge
step kinds: agent · tool · approval · wait · branch · parallel · subworkflow
for example, one email sequence:
WORKFLOW · the steps we wrote, and no model is in chargestep kinds: agent · tool · approval · wait · branch · parallel · subworkflowfor example, one email sequence:
agent step
draft the email
it follows a skill: how we write outreach
agent stepdraft the emailit follows a skill: how we write outreach
tool step
email.send
the tool invoker asks policy first
tool stepemail.sendthe tool invoker asks policy first
approval
a person decides
the run waits, and holds no worker
approvala person decidesthe run waits, and holds no worker
wait and branch
a reply, or three days
a reply drafts a reply, silence drafts a nudge
wait and brancha reply, or three daysa reply drafts a reply, silence drafts a nudge
TOOLS
one call, one effect, the only way to the world
TOOLSone call, one effect, the only way to the world
Where a tool lands
Where a tool lands
Our own API
never the database
Our own APInever the database
Nylas
mail out
Nylasmail out
Exa · Parallel
web research
Exa · Parallelweb research
Firecrawl
page fetch
Firecrawlpage fetch
MCP servers
approved only
MCP serversapproved only
4 · WHAT COMES BACK
one record, one answer, one bill
4 · WHAT COMES BACKone record, one answer, one bill
The execution record
The execution record
Run row
one per execution
Run rowone per execution
Spans
one per unit of work
Spansone per unit of work
Cost meter
written once
Cost meterwritten once
The product result
The product result
Global intelligence
what we learned
Global intelligencewhat we learned
Organization prospect
is it interesting?
Organization prospectis it interesting?
CRM
do we manage it?
CRMdo we manage it?
The review inbox · one page for everything that needs a person
The review inbox · one page for everything that needs a person
TODO
TODO
an email
waiting to send
an emailwaiting to send
a new signal
waiting for review
a new signalwaiting for review
a run
waiting for approval
a runwaiting for approval
What we sell
What we sell
Four products. Each one is a set of definitions plus its own product data.

None of them brings its own scheduler, queue, run table or policy engine.
Four products. Each one is a set of definitions plus its own product data.None of them brings its own scheduler, queue, run table or policy engine.
Who may ask
Who may ask
Four kinds of caller, and three doors.

A person in a chat enters through the gateway, which turns any channel into one message shape. The front door then makes ONE model call. It chooses what should happen, and it does none of it.

A person in the product UI, and an AI agent on that person's seat, both speak our schema already, so they call the API directly.

A machine sends an event, and a trigger matches it to one rule.

An MCP server would be the fourth door. It is not built.
Four kinds of caller, and three doors.A person in a chat enters through the gateway, which turns any channel into one message shape. The front door thenmakes ONE model call. It chooses what should happen, and it does none of it.A person in the product UI, and an AI agent on that person's seat, both speak our schema already, so they call the APIdirectly.A machine sends an event, and a trigger matches it to one rule.An MCP server would be the fourth door. It is not built.
The gate
The gate
Every run is born here. Nothing runs around it.

A definition is built in or authored by the organization. Fork a template agent or workflow, write a new skill, connect an MCP server for new tools. Whatever the source, it must be published before a run may use it.

The run manager freezes what the run may use, so a later edit cannot change work already in flight.

Policy then answers once: allow, deny, or ask a person. Anything not granted is denied.

Retry, wait and time out are what make a long workflow possible. A run may sit for days waiting on a reply or an approval, and it resumes exactly where it stopped.
Every run is born here. Nothing runs around it.A definition is built in or authored by the organization. Fork a template agent or workflow, write a new skill, connect anMCP server for new tools. Whatever the source, it must be published before a run may use it.The run manager freezes what the run may use, so a later edit cannot change work already in flight.Policy then answers once: allow, deny, or ask a person. Anything not granted is denied.Retry, wait and time out are what make a long workflow possible. A run may sit for days waiting on a reply or an approval,and it resumes exactly where it stopped.
Doing the work
Doing the work
Context is rebuilt fresh for every run, and it is always scoped to one organization. No model call happens while it is built.

The runtime claims the run and dispatches it by kind. An agent reasons its own way to the answer. A workflow follows steps we wrote. That is the only difference between them.

The agent loop sits behind a framework-neutral interface. Agno is the only implementation, and no Agno type is allowed to leak into policy, tools, definitions or surfaces. That is what keeps it replaceable.

Either way, the one door to the outside world is a tool. No credentials, no raw SQL and no free API access ever reach the model.
Context is rebuilt fresh for every run, and it is always scoped to one organization. No model call happens while it is built.The runtime claims the run and dispatches it by kind. An agent reasons its own way to the answer. A workflow followssteps we wrote. That is the only difference between them.The agent loop sits behind a framework-neutral interface. Agno is the only implementation, and no Agno type is allowedto leak into policy, tools, definitions or surfaces. That is what keeps it replaceable.Either way, the one door to the outside world is a tool. No credentials, no raw SQL and no free API access ever reach themodel.
Proof, and result
Proof, and result
Every run leaves a row, a span for each unit of work, and one cost figure.

Discovery also leaves product state. It moves from what we learned, to what is interesting to us, to what we chose to manage.

Anything that needs a person collects in one review inbox. Today those queues are scattered: an email approval lives in the CRM, and a prospect is reviewed where it was found. One page is the intent, not the state.
Every run leaves a row, a span for each unit of work, and one cost figure.Discovery also leaves product state. It moves from what we learned, to what is interesting to us, to what we chose tomanage.Anything that needs a person collects in one review inbox. Today those queues are scattered: an email approval lives inthe CRM, and a prospect is reviewed where it was found. One page is the intent, not the state.
POLICY · it decides, before the work
POLICY · it decides, before the work
1 · admission
before dispatch
1 · admissionbefore dispatch
2 · action
every tool call
2 · actionevery tool call
3 · accrual
as the cost grows
3 · accrualas the cost grows
allow
the work goes ahead
allowthe work goes ahead
require approval
a person decides
require approvala person decides
deny
nothing runs
denynothing runs
Anything not granted is denied. deny > require approval > allow. A rule change applies at the next checkpoint, not the next run.
Anything not granted is denied. deny > require approval > allow. A rule change applies at the next checkpoint, not the next run.
OBSERVABILITY · it records, beside the work
OBSERVABILITY · it records, beside the work
run row
one per execution
run rowone per execution
spans
one per unit of work
spansone per unit of work
cost meter
written once
cost meterwritten once
the durable span is written first
it is the record
the durable span is written firstit is the record
then the live event
best effort; a client that misses it refetches
then the live eventbest effort; a client that misses it refetches
A metric is a query over runs and spans. An alert is a cron that runs the query.
A metric is a query over runs and spans. An alert is a cron that runs the query.
IDEMPOTENCY · it protects the effect
IDEMPOTENCY · it protects the effect
run.start
a client request, or the source message id
run.starta client request, or the source message id
webhook.<provider>
the delivery id they gave us
webhook.<provider>the delivery id they gave us
tool.<name>
run id, plus the model tool call id
tool.<name>run id, plus the model tool call id
ONE CLAIM TABLE, in Postgres
claimed -> done, with the stored result
ONE CLAIM TABLE, in Postgresclaimed -> done, with the stored result
A repeat returns the stored result. Inngest may retry safely only because the effect underneath is idempotent.
A repeat returns the stored result. Inngest may retry safely only because the effect underneath is idempotent.
Always on
Always on
These three apply at every stage above, so they need no arrows of their own.

Policy decides before the work. Observability records beside it. Idempotency sits under both, so a retry cannot double an effect.

Draw an arrow from a plane to a stage and you have said what the panel already says.
These three apply at every stage above, so they need no arrows of their own.Policy decides before the work. Observability records beside it. Idempotency sits under both, so a retry cannot double aneffect.Draw an arrow from a plane to a stage and you have said what the panel already says.
LEGEND
LEGEND
a person starts it here
a person starts it here
an event or a queue hop
an event or a queue hop
it costs a model call
it costs a model call
the one branch point
the one branch point
ordinary work
ordinary work
deterministic plumbing
deterministic plumbing
the allowed path
the allowed path
it waits for a person
it waits for a person
it stops here
it stops here
a container, not a component
a container, not a component
A dashed box is not ours to run, or not durable.
Every arrow is the main path; position carries the rest.
A dashed box is not ours to run, or not durable.Every arrow is the main path; position carries the rest.
Text is not SVG - cannot display
A person, a machine, or an AI agent working for a person. All of them meet at one run boundary, and one runtime executes the work. Products sit on top as definitions plus product data, and nothing reaches the world except through a tool. The MCP server is marked TODO because it is planned and not built.

Code and naming

TermMeaningExample
CapabilityAn action the user can requestcompany.search
WorkflowThe steps that perform an actionResolve identities, remove duplicates, apply filters
ToolOne operation that a step can callRead company data

A product is a user-facing area, such as Companies. Its actions are capabilities. The Front Door selects work. The runtime executes it and checks permissions.

In the API, src/agentic/capabilities/ holds business actions and their workflows. src/agentic/services/ holds shared tools, context, memory and data access. The API onboarding guide shows the request flow and where to change code.

The Front Door selects the five stable product IDs. It keeps the published Agent and Workflow UUID path for custom definitions.

The four stages

StageWhat happensThe rule it obeys
1 · Who starts the workA person speaks to a conversational surface, or works in the product UI. A machine reports an event, and a trigger matches it to one rule. An AI agent works for a person, and drives the ac CLI on that person's seat.Whoever calls, the call ends at the same boundary.
2 · One door into executionEvery caller reaches the same run start. The run manager freezes the published definition, the skills, the tool contracts, the context policy and the principal. Policy answers: allow, deny, or require approval. Inngest then owns retry, wait and time out.Every run starts here, or nowhere.
3 · The workThe runtime rebuilds fresh, scoped context, then claims the run and dispatches it by kind. An agent runs a model loop; a workflow follows the steps we wrote. Either one reaches the world only through a tool.One agentic hop. One runtime.
4 · What comes backThe run row, its spans and its cost are the durable record. Discovery work also lands in product state: global intelligence, then organization prospect, then CRM. Anything needing a person collects in the approval inbox.One record, one answer, one bill.

Three planes run across all four stages, so they need no arrows of their own:

  • Policy decides at admission, at every tool call, and as cost accrues.
  • Observability writes one run row, one span for each unit of work, and one cost meter. The durable span is written before the live event.
  • Idempotency makes the same message, webhook or tool call take effect only once.

What a long workflow needs

Inngest is not just a queue. Three of its guarantees are what make a multi-day workflow possible at all:

  • Retry. A step that failed runs again from where it stopped, not from the top of the run.
  • Wait. A run can park on a reply, an event, an approval, or a date, and hold no worker while it waits.
  • Time out. A wait that never resolves ends the run, instead of leaking it.

The email sequence is the clearest case, and the diagram opens it up: an agent step drafts the email and follows a skill, a tool step calls email.send where the tool invoker asks policy first, an approval step parks the run until a person decides, and a wait holds for a reply or three days. That is one run, not a chain of cron jobs.

A workflow has eight node types. Two are containers, sequence and parallel. Six are steps: agent, tool, approval, wait, branch, subworkflow. There are no loops and no expression engine. The node set is fixed at publish time, so bounded fan out over runtime data lives inside one step.

What an organization can add

Platform templates are read-only, and an organization extends the platform by adding its own definitions:

| To add | How | |---|---|---| | An agent or a workflow | Fork a platform template, then edit and publish the fork | | A skill | Write one. A skill teaches an agent how to use the tools it already has | | A tool | Use a platform tool or approved vendor integration. MCP servers are deferred |

Writing new executable tool code is deliberately deferred. Use platform tools, vendor integrations, and organization-authored skills first. MCP expands the tool source later, after the web-first interface slice is working. Whatever the source, publishing stays the safety boundary: a draft cannot run.

One page for every decision a run waits on

A run that stops for a person always stops for the same reason: it proposes an exact action, and somebody must authorize it. Every one of those collects in the approval inbox, whatever created it.

Three things create one:

  • policy at admission, before a run executes anything;
  • policy at a tool call, such as an email waiting to send;
  • an approval node, because the workflow author asked for a gate there.

The approval inbox is the guaranteed floor for all three. A channel may render buttons, but every presentation resolves the same approval row, and silence is never consent. The human review inbox is the product page for it.

Curation is not authorization. A new prospect waiting to be watched, dismissed or promoted is business judgement, not permission to act, and it stays in Signals Search. Folding it into the approval inbox would mix a queue a person may ignore with a queue that blocks a run.

Why it has this shape

  1. One product execution substrate. One run model, one status model, one event surface.
  2. One agent framework. Agno runs the reasoning loop, behind AgentRuntime. There is no backend selector and no runtime registry.
  3. One agentic hop. The front door picks one agent or one workflow. Coordinating a workflow is not a second reasoning hop.
  4. The runtime is one layer, and Agno sits behind it. The run executor dispatches by kind. The agent loop lives behind a framework-neutral interface, and no Agno type reaches policy, tools, definitions or surfaces. That is what keeps the framework replaceable.
  5. An agent reaches the world only through a tool. No credentials, no raw SQL, and no arbitrary API access in model context.
  6. Publishing is a safety boundary. A draft cannot run. A run freezes the published configuration, and reads policy and tool state live at each checkpoint.

One request, end to end

A user writes in web chat: "find UK fintech companies with recent funding signals and marketing decision makers."

  1. The web adapter authenticates the user and normalizes the message.
  2. The Front Door builds scoped context and an eligible capability shortlist.
  3. The model selects signals.search with its version and validated input.
  4. The capability service resolves the tenant executor and calls RunManager.start() with the message's stable key.
  5. RunManager freezes the definition tree and capability metadata. Policy admits, denies or requests approval.
  6. The workflow performs bounded research and calls its published Company/People child workflows.
  7. Tool calls pass action policy. Enrichment writes canonical Intelligence; Signals writes organization prospects.
  8. The Run and conversation streams report progress. The user reviews the resulting prospects.
  9. CRM promotion remains an explicit action. Email sequence execution belongs to a separate Phase 8 action.

A compound request with no single matching published capability produces a clarification. The Front Door does not start an implicit search/enrich/outreach plan.

Delivery phases

PhaseScope
7Company, People and Signals capability products
8Email sequence execution
9Remaining legacy cutover and removal

The capability contracts define the Phase 7 boundary. The design scenarios define its normal, failure and recovery cases.

How these pages are organized

The four stages above tell the story of one request. The pages cover five areas. Existing article URLs remain stable and do not define Python package names.

  • Interfaces - who starts a run, and how the request reaches us.
  • Runtime - how the work executes.
  • Services - shared tools, context, memory and data access.
  • Planes - what crosses every stage.
  • Products - the platform applied to one product.

Policy and observability belong to a tier and to a stage at the same time. That is what a plane means. It crosses every stage, so it takes no place in the sequence.

Where to read more

TierBox in the diagramPage
InterfacesWeb chat · Approval inbox · Agent builder · Run explorerSurfaces
InterfacesChannel gatewayChannel gateway
InterfacesFront doorFront door
InterfacesTriggersTriggers
InterfacesClaude Code · MCP clients · the ac CLI · MCP serverAgent access (CLI and MCP) - a stub, not a design
RuntimeAgentic runtime · Agent · WorkflowAgentic runtime
RuntimeAuthoring · DefinitionsRuntime definitions
RuntimeRun manager · Inngest · ApprovalsRuntime execution
ServicesTools · where a tool landsTools and integrations
ServicesWhat the run may read · Context builderState and knowledge
PlanesPolicyPolicy and governance
PlanesRun row · Spans · Cost meterObservability and operations
PlanesIdempotencyIdempotency
ProductsGlobal intelligence · Organization prospect · CRMAgentic CRM
ProductsDefault chat answers from contextFront door general chat
ProductsApproval inbox, as a product pageHuman review inbox
ProductsWorkflow graph, in the builder and in a RunWorkflow visualizer

The platform contract holds the layer ownership table, the shared contracts, the data model, and the list of what we are not building.