What an agent is
An agent is a name. Pick a string, pass it to your framework’sagent_config("support-agent"), and every run of that agent is traced under that name and gets that agent’s prompt and skills. Code that only traces names it with decimalai.init(agent_name="support-agent") or DECIMAL_AGENT_NAME, and that name reaches every adapter, start_trace(), @decimalai.trace and SkillRouter.
An agent comes into being in one of two ways:
- Create it in the dashboard, with a system prompt and skills, from scratch or from a skill pack.
decimalai init <agent-name>then writes the code that runs it. The Quickstart walks through it. - Send a trace from your existing code under a new name, and the agent appears on its own.
Saved prompt and setup versions
An agent’s page opens on Prompt & skills: the saved prompt and skill listagent_config() hands your code. Each change is reviewed before it goes live and recorded as a numbered setup version, which you can compare and roll back. Prompt & skills, versions and roll back covers all of it.
Two histories sit side by side:
Naming agents
- 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.
langchain-react-botstops being true when you switch frameworks. - Use a stable prefix if you’ll have many.
triage-frontline,triage-escalationandtriage-billingare easier to filter than three unrelated names.
agent, bot and assistant, which collide with default examples, and model names, which go stale on every swap.
When to use one agent vs. multiple
Would you ever want a different regression policy for them?
Would you ever want a different regression policy for them?
A customer-facing
support-agent needs strict checks before each deploy, and an internal-research-agent can ship looser changes. If they need different policies, split them: evaluators and compatibility policies are per agent.When NOT to split
Renaming an agent without losing history
1
Choose the new name
Follow the naming rules, and confirm the name isn’t taken on the Agents page or with
GET /api/v1/agents.2
Rename the agent record
Call
POST /api/v1/agents/<old-name>/rename with {"new_name": "<new-name>"}. Manifests, traces and datasets stay attached, and the old name keeps resolving through a forwarding alias, so existing URLs and agent_name= filters don’t break. To fold two agents together, re-ingest under the surviving name: a rename isn’t a merge.3
Use the new name in your next deploy
Update the name your code passes:
agent_config()’s argument, or decimalai.init(agent_name=...) and DECIMAL_AGENT_NAME in code that only traces.4
Update references
Search your repo and workflow files for the old name, such as
.github/workflows/decimal.yml, evaluator names and dataset filters.Per-agent evaluation
The evaluators attached to an agent control how strictly its traces are scored:@eval functions and LLM judges combine. Compatibility Policies covers the separate per-agent rules for what a manifest change does to old traces.
Sub-agents and orchestrators
A sub-agent that runs as its own traced run is its own agent, linked to its orchestrator byparent_trace_id, with its own manifest. A handoff inside one run stays in the orchestrator’s trace. Multi-agent systems shows what each gives you.
What’s next
Manifests
How code versions are tracked and what gets hashed.
Evaluations
Define what “good” means for each agent.