Managers
A manager is a multi-agent orchestrator: instructions, a model, and a set of sub-agents it delegates to. Where an agent calls tools, a manager calls agents. You configure and publish one from the terminal exactly as you would an agent — but you cannot run one here, which is the single most important thing to know about this namespace.
managers execute. Managers are run only by hosted apps and end-user clients. The conversations and statistics you read here reflect those external runs, never a run you started from the CLI. Attempting it fails with Unknown command 'managers execute'.Key concepts
The delegation hierarchy
manager instructions + model + sub-agents
│ delegates to
▼
agent instructions + model + tools
│ calls
▼
tool one capability (LLM_CALL, AUTESSADB_QUERY_TABLE, …)
Each layer attaches the one below it by id, and each has its own draft/published lifecycle. Build bottom-up: tools first, then the agents that use them, then the manager that routes between those agents.
Draft and published
A manager has a draft (your working copy) and a published version. create and update write the draft; publish snapshots it as a new live version. Because managers are only ever invoked externally, publishing is what makes your changes reachable at all — an unpublished manager is inert.
The SDK creates SIMPLE managers only
managerType is required on create and must be SIMPLE. As with agents, the CLI can read, update, share and manage managers of any type that already exists.
Sub-agents must exist and be published
Every agent you reference must exist in the same company. Changing the agents list rebuilds the manager's agent set wholesale — it is not additive.
How to create a manager
autessa managers create \
--managerType SIMPLE \
--managerName "Support Router" \
--managerDescription "Routes an inbound support request to the right specialist agent."
{
"manager": {
"managerId": "oXfsm9U2z4a",
"managerType": "SIMPLE",
"name": "Support Router",
"description": "Routes an inbound support request to the right specialist agent.",
"instructions": "Coordinate and manage the agents to accomplish the task",
"model": "SMALL_INSTRUCTION_FOLLOWING",
"maxIterations": 30,
"agents": [],
"voiceConfig": { "voiceModel": "SMALL", "voiceName": "FEMALE" },
"promptTemplateVariables": {},
"evaluationNotes": "",
"tags": []
}
}
Like an agent, a fresh manager arrives with placeholder instructions, a default model, no sub-agents, and maxIterations: 30.
managerDescription is required, unlike an agent's description. Write it as a real statement of what the manager routes — it is what a human picks it by in the manager list.How to attach sub-agents
managers update takes the complete desired configuration in --updatedManager, so read-modify-submit rather than sending a patch. Sub-agents attach by id alone — the server hydrates the rest:
autessa managers update --managerId oXfsm9U2z4a --updatedManager '{
"managerId": "oXfsm9U2z4a",
"managerType": "SIMPLE",
"name": "Support Router",
"description": "Routes an inbound support request to the right specialist agent.",
"instructions": "Read the request and delegate: billing questions to billing_agent, technical faults to triage_agent. Return the specialist'"'"'s answer without rewriting it.",
"model": "SMALL_INSTRUCTION_FOLLOWING",
"maxIterations": 10,
"agents": [
{ "agentId": "ykWFTe6UF56h" },
{ "agentId": "K2UYSwk3Yy4i" }
]
}'
The response echoes each sub-agent fully expanded — its instructions, model, and its own attached tools — so you can confirm the routing set is what you intended:
{
"updatedManager": {
"managerId": "oXfsm9U2z4a",
"maxIterations": 10,
"agents": [
{
"agentId": "ykWFTe6UF56h",
"agentType": "SIMPLE",
"name": "billing_agent",
"description": "Answers billing questions.",
"agentInstructions": "You are a professional agent who does as asked.",
"model": "SMALL_INSTRUCTION_FOLLOWING",
"tools": [],
"maxIterations": 30
}
],
"instructions": "Read the request and delegate: billing questions to billing_agent, ...",
"model": "SMALL_INSTRUCTION_FOLLOWING"
}
}
The fields worth deliberate thought:
| Field | What it controls |
|---|---|
instructions | The orchestration prompt — how it decides which sub-agent handles what. Name the agents explicitly. |
agents | The sub-agents it may delegate to, by id. Replaces the whole set. |
model | The tier the manager reasons with when routing. Sub-agents keep their own models. |
maxIterations | Orchestration rounds per turn. A router that hands off once needs far fewer than 30. |
promptTemplateVariables | Named slots the instructions reference |
voiceConfig | Voice model and name, when voice-enabled |
name and description drive routing quality the way a tool's name and description drive an agent's tool choice. If a manager delegates to the wrong agent, fix that agent's description before rewriting the manager's instructions.Voice options
managers get returns the voice choices valid for the manager's model alongside the configuration, so you do not have to guess a voiceName:
autessa managers get --managerId oXfsm9U2z4a
{
"manager": { "...": "..." },
"permission": "ADMIN",
"voiceOptionsList": [
{
"voiceModel": "SMALL",
"voices": { "builtInVoiceNames": ["FEMALE", "MALE"], "customVoiceNames": [] }
}
]
}
customVoiceNames lists your company's voice clones — see Custom voices.
How to publish
autessa managers publish --managerId oXfsm9U2z4a
{ "publishedManagerVersion": 1 }
autessa managers versions --managerId oXfsm9U2z4a
autessa managers rollback --managerId oXfsm9U2z4a --json '{...}'
versions lists the published version (null if never published) and every archived one; rollback re-publishes an archived version, archiving the current one in its place. See Versions.
How to read what happened
Since you cannot start a run here, this is where most of your time in the namespace goes.
autessa managers conversations --managerId oXfsm9U2z4a --page 0
{
"conversations": [],
"totalElements": 0,
"totalPages": 0,
"currentPage": 0,
"pageSize": 50,
"hasNext": false,
"hasPrevious": false
}
An empty result on a working manager usually means one of two things: nobody has run it yet through an app or client, or the runs that exist are your own sandbox sessions from the web UI. Two flags matter here:
| Flag | Effect |
|---|---|
--includeMySandboxConversations | Include your own UI/sandbox conversations alongside API-key ones. Reach for this first when the list looks empty. |
--expandAgents | Inline each sub-agent's full context into the orchestration log, so you can see what the delegate actually did rather than just that it was called. |
Listings are trimmed by default so a page stays under the response size limit — --full returns complete transcripts instead of metadata.
autessa managers conversations --managerId oXfsm9U2z4a \
--includeMySandboxConversations --expandAgents --full
For one conversation with its complete orchestration log:
autessa managers conversation --managerId oXfsm9U2z4a --conversationId <id>
The same data backs Manager history in the web app. Tool calls made by sub-agents during a manager run also land in tool history tagged source: "AGENT" — see Tools.
How to evaluate
autessa managers submit-evaluation \
--managerId oXfsm9U2z4a \
--conversationId <id> \
--humanEvaluation '{"status":"SUCCESSFUL","notes":"Routed to the right specialist."}'
autessa managers statistics \
--managerId oXfsm9U2z4a \
--startDate 2026-09-01T00:00:00 \
--endDate 2026-09-30T23:59:59
yyyy-MM-ddTHH:mm:ss with no zone. A trailing Z, a numeric offset, or a bare date are all rejected with a schema error. The value is interpreted as UTC. Agent statistics take the same form.How to share and delete
autessa managers get-sharing-details --managerId oXfsm9U2z4a
autessa managers share --managerId oXfsm9U2z4a --level COMPANY --accessLevel READ
autessa managers share --managerId oXfsm9U2z4a --level SPECIFIC_MEMBER \
--usersToAdd '[{"userEmail":"teammate@example.com","accessLevel":"WRITE"}]'
Same sharing model as agents, tools and tables.
autessa managers delete --managerId oXfsm9U2z4a
Deletion is permanent and also revokes the manager's API-key permission — any app or client invoking it stops working immediately. The sub-agents themselves are untouched.
Full command reference
| Command | What it does |
|---|---|
| autessa managers conversation | Fetch one closed manager conversation by conversationId, including its full orchestration log and evaluations. |
| autessa managers conversations | List a manager's closed conversations, newest first, one fixed-size page at a time (page is 0-based). |
| autessa managers create | Create a new draft manager with a name and description. |
| autessa managers delete | Permanently delete a manager and revoke its API-key permission. |
| autessa managers generate-audio-upload-link | Generate a presigned S3 PUT URL for uploading a WAV audio file to reference in a manager conversation. |
| autessa managers generate-file-upload-link | Generate a presigned S3 PUT URL for a transient document attachment to reference in a manager conversation. |
| autessa managers generate-image-upload-link | Generate a presigned S3 PUT URL for uploading an image (png, jpg, jpeg) to reference in a manager conversation. |
| autessa managers get | Fetch a single manager by id, including its full configuration (sub-agents, instructions, model, voice), your access level, and the voice options for its model. |
| autessa managers get-all | List every manager you can access in the current company, split into three buckets — managers you own, managers shared company-wide, and managers shared specifically with you. |
| autessa managers get-sharing-details | Get a manager's sharing configuration — sharing level, company-wide permission, per-user grants, and your own access level. |
| autessa managers publish | Publish the manager's current draft as a new live version. |
| autessa managers rollback | Re-publish a previously archived manager version, archiving the currently published version in its place. |
| autessa managers share | Set a manager's sharing mode — PRIVATE, COMPANY-wide at one access level, or SPECIFIC_MEMBER with per-user grants via usersToAdd/usersToRemove. |
| autessa managers statistics | Compute aggregate evaluation statistics for a manager's conversations closed within a date range. |
| autessa managers submit-evaluation | Record a HUMAN evaluation — a human-in-the-loop verdict plus notes — on a stored manager conversation, looked up by conversationId. |
| autessa managers update | Update a manager by submitting its modified configuration in updatedManager. |
| autessa managers versions | List a manager's version numbers — the currently published version (null if never published) and all archived versions. |
Related
- Agents — the sub-agents a manager delegates to
- Tools — what those agents call
- Managers in the builder
- Manager history
- Autessa CLI