kind reflects what the agent actually is — an agent named for voice whose
voice block is missing reads as text, which is usually the thing you wanted
to know.
Test an agent
The command you will use most. It runs the real prompt, model and knowledge base and prints what the agent would reply. Nothing is delivered, nothing is charged, no execution is logged — so it is safe on every edit.
Multi-turn:
Start from a factory agent
pull writes a real TypeScript project: index.ts with the agent and its
skills, a tsconfig.json, and @zavudev/functions as a dependency so your
editor and tsc resolve it. Edit it freely — the code is the source of truth
and zavu deploy reconciles whatever it declares.
Booking agents
Kepler, Hopper and Fermi book meetings. By default they scaffold against a generic webhook — an HTTPS endpoint you build and host that returns open slots and books them. Until it exists the agent cannot book, and says so rather than inventing a time. Point it at Cal.com instead and it works with an API key:pull then lists every secret the agent needs, with a hint for each:
zavu agents init walks the same path interactively: pick or create a sender,
pick an agent, get ready to deploy.
Create one from scratch
--prompt-file for anything longer than a line — terminal paste mangles
newlines. --data / --file take a full JSON body for advanced fields.
An agent is created disabled and answers nobody until you turn it on. Pass
--enabled true on create, or zavu agents update --sender <id> --enabled true
later. The CLI says so when it happens.Connect senders
A sender is the identity a conversation happens on. An agent can answer on several; a sender answers with at most one agent.Tools
defineTool are managed by their function: they
appear here read-only and are changed by redeploying.
To run a handler in isolation, without deploying:
Knowledge bases
agents test — it reports how many chunks the answer used.
Flows
config
object; a tool step resolves its tool through config.toolId, which holds the
tool’s name. A flow naming a tool the agent does not have is rejected at
creation, listing the ones it does have.
Flows are not evaluated by agents test — they run on a real message, and
agents test says so when the agent has any.
Inspect what happened
executions get carries errorMessage and responseText — the place to look
when a live reply went wrong. reset-thread closes the conversation and any
flow session for one contact so the next inbound starts fresh.
Dry runs do not appear in stats or executions; they are not executions.
Calls
calls get prints the conversation including tool calls. It is the only record
of what the agent actually said, and the first place to look after a call went
wrong.
