What an Agent is (and isn’t)
An agent is a name. Pick a string, pass it todecimalai.init(agent_name="support-agent") (or your framework adapter’s equivalent), and every subsequent trace is bucketed under that name.
That name is the join key for six things at once — sever it, and every spoke loses its history:
It is not a string you should change casually. Renaming an agent is fine; you just lose continuity if you do it.
Naming agents — what to pick
Three rules:- Lowercase, hyphenated, no spaces.
support-agent, notSupport AgentorSupportAgent. Names appear in URLs (/agents/support-agent), CLI commands, and webhook payloads. - Describe the role, not the implementation.
support-agentis good.langchain-react-botis bad — when you switch frameworks next year, the name lies. - Use a stable prefix if you’ll have many.
triage-frontline,triage-escalation,triage-billingmake filtering, ACLs, and dashboards easier than three unrelated names.
agent,bot,assistant(collide with default examples)- Anything containing your company name (you’ll never type it consistently)
- Anything containing the model name (gets stale on every model swap)
When to use one agent vs. multiple
This is the most consequential decision because it affects every other concept downstream. Two questions:Q1: Do they share the same manifest surfaces (tools, system prompt, model)?
Q1: Do they share the same manifest surfaces (tools, system prompt, model)?
Q2: Would you ever want a different regression policy for them?
Q2: Would you ever want a different regression policy for them?
Example: a
support-agent serving customers needs strict pre-deploy regression checks; an internal-research-agent you and three engineers use can deploy looser changes.If they need different policies → split them. Evaluators and compatibility policies are per-agent.If they share the policy → keeping them as one agent is fine.When NOT to split
| Scenario | Split? | Do instead |
|---|---|---|
| Different prompts for different users | No | Same agent — vary the prompt via the rendered_input. |
| A/B testing two variants | No | Same agent — log both via manifest_id (the active variant is the baseline; run a regression check on the experimental variant). |
| Multiple tools sometimes called sequentially | No | Same agent — tools are part of the manifest, not separate agents. |
Renaming an agent without losing history
Agent names are stable identifiers — they aren’t first-class entities you rename in place. To rebrand:Choose the new name
Pick a name that follows the naming rules. Confirm it doesn’t already exist — check the Agents list in the dashboard or
GET /api/v1/agents.Pass it via `decimalai.init()` in your next deploy
Update your initialization code. The next trace ingested under the new name creates the agent fresh.
Rename the agent record
Call
POST /api/v1/agents/<old-name>/rename with {"new_name": "<new-name>"}. Because it’s the same agent record, all existing manifests, traces, and datasets stay attached — nothing is copied or merged. The old name keeps resolving via a forwarding alias, so existing URLs and agent_name= filters don’t break.This renames in place; it is not a merge. To fold two distinct agents together, re-ingest under the surviving name instead.
Per-agent evaluation
How strictly an agent’s traces are scored is controlled by the evaluators attached to it, not a standalone policy object. Create and manage them via the evaluators surface:EvalPolicy (and the /api/v1/agents/{name}/eval-policy route) is deprecated — configure evaluators via /api/v1/evaluators instead.
See Evaluations for how built-ins, @eval functions, and LLM judges combine, and Compatibility Policies for the separate per-manifest compatibility rules.
Sub-agents and orchestrators
If your system has an orchestrator that delegates to specialist sub-agents, register each one as its own DecimalAI agent. The orchestrator gets one manifest (tracking which sub-agents it can call); each sub-agent gets its own (tracking what each does). Cross-agent traces are linked viaparent_trace_id, so the dashboard shows the full call graph.
This is covered in depth in the Multi-agent guide.
What’s next
Tracing
Instrument your agent code so traces start landing under the agent’s name.
Manifests
How agent versions are tracked and what gets hashed into a manifest.
Multi-agent
Orchestrator / sub-agent patterns and how cross-agent traces link up.
Evaluations
Define what “good” means for each agent — built-ins, @eval functions, and LLM judges.