Duck, advisor, council, orchestrator, routines, namer
Helpers beside the coding agent: a duck to think out loud with, an advisor, a debating council, agent graphs, scheduled routines and the tab namer.
Copy & share
On this page8 sections
For a guided introduction to graphs, model assignments and review loops, see multi-agent workflows.
OverviewLink to this section
Besides the coding agent, Empryo has six smaller helpers. Each one does a single job. Each can use its own model (set in the task router, /router), and each has its own line in your usage costs.
| Helper | What it does for you | How to use it |
|---|---|---|
| Duck | A chat partner that cannot see your code. Good for thinking a problem through | /duck [question], --mode duck |
| Advisor | A second model gives an opinion on the current conversation. It cannot change anything | /advise <question>, the advisor tool, /advice to see past answers |
| Council | 2 to 4 agents with different briefs debate one question and reach a verdict | /council <topic>, the council tool |
| Orchestrator | Runs a graph of agents, with loops, review steps and pauses for your answer | /orchestrate <graph or goal>, /runs, --mode orchestrate |
| Routines | Runs a prompt on a schedule for this repository | /schedule, /routine |
| Namer | Gives each tab a short name based on your first prompt | Automatic, or /tab rename |
The namerLink to this section
A tab called TAB-3 tells you nothing. The namer reads your first prompt and gives the tab a name of two or three words. It has no tools and does not see your code.
When it runs. The first real prompt in a tab names that tab. This works in the terminal UI tab bar, the desktop tab bar, and the title of a saved headless session. It only replaces a placeholder name (TAB-1, new tab, or a mode name). A name you typed yourself is never replaced.
Renaming later. When the work in a tab changes, rename it:
/tab rename auth refactor rename by hand
/tab rename let the namer pick a new nameWith no name given, the namer reads the prompt that opened the tab and your last few prompts, and names what the tab is doing now. The agent in the tab can also rename it with the rename_tab tool when the work changes direction.
Model. The namer uses the router's namer slot. If that is not set, it uses the duck slot, then default, then the tab's own chat model. A name is a few words, so this is a very cheap call. If the model starts answering your prompt instead of naming it, the tab takes a name made from your prompt's own words.
Switching it off. Set tabNaming: false in your config. Tabs are no longer named automatically, but /tab rename <name> and renaming in the tab bar still work.
{
"tabNaming": true,
"taskRouter": { "namer": "subscriptions/claude-haiku-4-5-20251001" }
}DuckLink to this section
The duck is a "rubber duck": someone to talk a problem through with. /duck opens a new tab in duck mode, and /duck <question> asks your question straight away.
A duck tab cannot see your repository. It can search the web (web_search, fetch_page), ask the advisor, look up models (find_model), and send messages to other tabs (link). It has no file reading, search or shell. If you ask it to read a file, it tells you to use a coding tab, and it can pass the work to one for you.
AdvisorLink to this section
/advise <question> sends a short, cleaned-up summary of the current conversation to a second model. That model has no tools and no part in the work. It answers your question and does nothing else.
The advisor keeps its own thread for each tab, so follow-up questions have context. Add --fresh to start over. Every answer is saved, and /advice lists them.
If the advisor returns an empty answer, Empryo reports the consult as failed instead of pretending it worked.
CouncilLink to this section
/council <topic> gives 2 to 4 agents a brief each and puts them in one shared room. Each agent sees what the others say, and they keep going until they agree or you close the room. A final verdict sums up the result.
Use a council when a decision has several reasonable answers, for example a design trade-off. Do not use it for routine work: every round costs one model call per seat.
OrchestratorLink to this section
An orchestration is a graph of steps (nodes) joined by edges. The node types are agent, judge, parallel, council, advisor, shell, gate, set, link, graph, join and end.
- An agent node runs a subagent on a task.
- A judge node reviews the work and ends with PASS, FAIL or PARTIAL.
- A gate node pauses and asks you a question.
- A shell node runs a command.
Each edge can have a when condition, so the next step depends on the result: ok, fail, a judge's PASS/FAIL/PARTIAL, your answer at a gate (answer=), or a value stored earlier. An edge that points back to an earlier node makes a loop, and max limits how many times it can repeat.
/orchestrate nightly-sweep run a saved graph
/orchestrate 5 agents to sweep core describe a goal: the agent designs the graph, then runs it
/runs watch every run live (terminal UI)When the agent builds a graph, it can pass it as an object or as JSON text. A graph saved to disk must have its own id.
RoutinesLink to this section
A routine runs a prompt on a schedule, for example /schedule add <cron> <prompt>. It runs as a headless agent while Empryo is open on the repository. See Routines for the full guide.
Where the models come fromLink to this section
Each helper has its own slot in the task router. If you leave a slot empty, it falls back to another slot, so an existing config keeps working:
| Slot | Used by | If empty, uses |
|---|---|---|
advisor | the advisor tool, /advise | the model of the tab that asked |
duck | duck tabs | default |
council | council seats | spark |
orchestrate | the agent in orchestrate mode | default |
node | agent nodes in an orchestration | the normal routing (ember for code work, spark otherwise) |
judge | judge nodes in an orchestration | review, then goalReview |
routine | scheduled headless runs | default |
namer | tab names | duck, then default, then the tab's model |
Set them with /router in the terminal UI or the desktop app, or in your config:
{
"taskRouter": {
"namer": "subscriptions/claude-haiku-4-5-20251001",
"advisor": "anthropic/claude-opus-4-5",
"council": "openai/gpt-5.6"
}
}