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 — but if you have to, the agent record can be renamed in place and keeps its history. See Renaming an agent without losing history.
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 API 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: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
Renaming an agent without losing history
Agent names are stable identifiers, but the record behind one can be renamed in place. Do it in this order:1
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.2
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.
3
Pass it via `decimalai.init()` in your next deploy
Update your initialization code so new traces carry the new name. The record already exists from the previous step — traces attach to it rather than creating a second agent.
4
Update references
Search your repo + workflow files for the old name. Common places:
.github/workflows/decimal.yml (the regression-check action), evaluator names, dataset filters.decimalai.init() before calling the rename endpoint, the new name gets claimed by a fresh agent and the rename returns 400 — rename that new record out of the way, then re-run the rename on the original.
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.