Agents

The Agents page at Dashboard → Agents is your view of the agent roster — every named Claude principal the runtime knows about, with the tool budget, persona, and recent run history for each. This is where you go to invoke an agent ad-hoc, inspect its config, or read the persona file driving its behaviour.

The roster

Catentio ships with 19 named agents covering content production, code work, research, and orchestration. The core lineup:

Agent Persona Typical work
cimi Hachimi — the orchestrator General orchestration, "what should I do next", routing
tora The implementer Shipping code
sai Scene worker Per-scene content production
ren Research operator Web + repository research
fumi Storyboard / planning Multi-step plan composition
iro Taste-learning runner Pipelines that learn from approve/reject

Plus a long tail of project-specific agents the runtime registers at startup. The dashboard always reflects the live roster — not the hard-coded list above.

The portal lists every agent with:

  • The agent's slug (e.g., cimi, tora).
  • A short persona summary pulled from agents/<slug>/CLAUDE.md in the runtime.
  • The tool budget the agent has access to.
  • The last run, with status and timestamp.
  • Total cost for the agent over the trailing 30 days.

Invoking an agent

Click any agent to open its detail page, then click Invoke. The dialog has one field by default:

  • Message — the prompt to send. Free-form markdown; the agent receives it as the initial user message.

Optional fields, exposed via the Advanced disclosure:

  • Attached context — URLs or file paths the agent should read first.
  • Run modeinteractive (subtasks wait for approval) or autonomous (taste rules decide).
  • Model override — pin a specific Claude model rather than the agent's default.

Submitting creates a run. The portal switches to the run page and live-streams output as the agent works.

The same call via the SDK:

const run = await catentio.agents.invoke('cimi', {
  message: 'Summarise the project board in three bullets.',
});

Or the CLI:

catentio-saas agents invoke cimi --message "Summarise the project board in three bullets."

The detail page

Beyond the invoke button, each agent's detail page shows:

  • Persona — rendered markdown from the agent's CLAUDE.md. Read-only here; edits go through the runtime repo (PR flow).
  • Tool budget — the list of tools this agent is allowed to call, with their schemas. Linked to Tools for editing.
  • Heartbeat config — if a heartbeat is bound to this agent, its schedule + prompt template.
  • Voice config — for agents wired to Discord VC (cimi, sai), the ElevenLabs voice ID, model, and pitch knobs.
  • Recent runs — the last 20 runs, click-through to detail.
  • Cost — trailing 7-day, 30-day, and lifetime totals.

Editing the roster

Adding, removing, or reconfiguring agents is a runtime repo change, not a portal action. The portal exposes a PR-flow link — click Propose change, edit the agent config in the diff editor, and the portal opens a pull request against the runtime repo. You merge manually.

This is by design. Agent config is load-bearing (persona, tool budget, voice) and we want it tracked in git history alongside the prompts.

Heartbeats

If an agent is wired to a heartbeat, the portal shows the schedule at the top of the detail page. Click Configure to change the cron expression or the prompt template. Heartbeats are saved live (no PR-flow); the runtime picks up the new schedule on its next config refresh.

See Heartbeats for the full surface.

Memory

Agents read and write to the runtime's memory layer during runs. The portal links from the agent detail page to Memory filtered to that agent's namespace — useful for inspecting what an agent has been writing.

Memory mutations are OTP-gated (see Concepts → Memory).

Voice agents

A subset of agents (currently cimi, sai) are wired to ElevenLabs voices for Discord VC integration. The voice config lives in the runtime per-agent and is editable from the agent detail page. Voice playback in the portal is preview-only — actual VC routing happens in the runtime's Discord bot.

Coming features

  • Bulk-invoke (kick off N parallel runs against an agent).
  • Per-agent rate limits.
  • Approval queue for autonomous runs paused on taste-rule uncertainty.

Next