tools

Duck, advisor, council, orchestrator, routines, namer

Six agents that are not the coding agent: a repo-blind duck, a tool-less advisor, a council, orchestration graphs, cron routines, and the tab namer.

Copy & share

Loading sections…

Connect MCP or install the Empryo skill

Section exports contain only that heading’s content. Markdown and text links fetch the selected content directly, without the rest of the page.

Overview

Six things in Empryo are agents that are NOT the coding agent. Each has its own model slot in the task router, its own command on every surface, and its own cost line in the ledger.

FeatureWhat it isReach it with
DuckA repo-blind conversation partner. No read, no grep, no shell - the web and the agent link only/duck [question], --mode duck
AdvisorA tool-less second opinion over THIS conversation/advise <question>, the advisor tool, /advice for the ledger
Council2-4 seats with different briefs debate one topic in a shared room, a verdict closes it/council <topic>, the council tool
OrchestratorA graph of agents with loops, gates and verdicts/orchestrate <graph or goal>, /runs, --mode orchestrate
RoutinesCron-scheduled headless runs, scoped to the repo/schedule, /routine
NamerLabels a tab in 2-3 words from its first promptAutomatic; /tab rename

The namer

A tab called TAB-3 tells you nothing. The namer is the smallest agent in the engine - no tools, no repo, no transcript - and its whole job is two or three words.

When it runs. The first real prompt on a tab names that tab, on every surface: the TUI tab strip, the desktop tab bar, and the title of a saved headless session. It only replaces a placeholder (TAB-1, new tab, a mode name); a label you typed yourself is never overwritten.

Renaming later. The work moves. Two ways to follow it:

/tab rename auth refactor    rename by hand
/tab rename                  the namer writes one

Given no name, the namer reads the prompt that OPENED the lane plus the last few things you asked for (later prompts and steering messages) and names what the tab is doing now. The agent working in the tab can do the same for itself with the deferred rename_tab tool - it is told to use it when the work changes fundamentally, not every turn.

Model. The router's namer slot, then duck, then default; with none of them set it runs on the tab's own chat model. A name is four words, so this is the cheapest call the engine makes.

Switching it off. tabNaming: false in config. Auto-naming stops; /tab rename <name> and the tab bar's inline rename keep working.

{
  "tabNaming": true,
  "taskRouter": { "namer": "subscriptions/claude-haiku-4-5-20251001" }
}

Duck

A duck tab is repo-blind by construction: the belt is web_search, fetch_page, link, advisor, find_model and nothing else, and the engine skips the Genome, the exploration digest, memory recall and cross-tab claims for that lane. Ask it to read a file and it will tell you to hand the work to a coding tab - which it can do itself, over the agent link.

Advisor

/advise <question> sends a bounded, redacted snapshot of the current conversation to a second model that has no tools and no stake in the work. It answers; it never acts. The advisor keeps its own thread per tab (--fresh starts over), and every consult lands in /advice.

An empty answer is a FAILED consult, not a successful one: the tool says so instead of reporting a silent success.

Council

/council <topic> seats 2-4 resident agents, each with a brief, in one room. Every reply is relayed to the whole room, so the seats hear each other; rounds continue until they converge or you close the room. Use it where a fork has several defensible answers - not for routine work, since each round costs one call per seat.

Orchestrator

An orchestration is nodes (agent, judge, parallel, council, advisor, shell, gate, set, link, graph, join, end) plus edges. An edge's when routes on the outcome (ok, fail, a judge's PASS/FAIL/PARTIAL, a gate's answer=, a state comparison), and a back-edge IS a loop, bounded by max.

/orchestrate nightly-sweep            run a saved graph
/orchestrate 5 agents to sweep core   a GOAL - the agent designs the graph, then runs it
/runs                                 the live board (TUI)

The tool takes the graph as an object; JSON text is parsed for you, a parallel's branches may be written inline, and a graph saved to disk must carry its own id.

Routines

See Routines for the cron side: /schedule add <cron> <prompt> arms a headless run of the same binary while Empryo is open on the repo.

Where the models come from

Every one of these lanes has a task-router slot, and each falls back to the closest older slot so an existing config keeps working:

SlotRunsUnset falls back to
advisorthe advisor tool, /advisethe asking tab's model
duckduck tabsdefault
councilcouncil seatsspark
orchestratethe orchestrate-mode agentdefault
nodeorchestration agent nodesthe registry's normal routing
judgeorchestration judgesreview -> goalReview
routinescheduled headless runsdefault
namertab namingduck -> default -> the tab's model

Set them in /router on any surface, or in config:

{
  "taskRouter": {
    "namer": "subscriptions/claude-haiku-4-5-20251001",
    "advisor": "anthropic/claude-opus-4-5",
    "council": "openai/gpt-5.6"
  }
}
Documentation