Deploy an eve project
eve is Vercel’s open-source agent framework. If you built an agent with eve’s filesystem layout, Zavu deploys it as a first-class Zavu agent — same inbox, same executions log, same billing as an agent written with@zavudev/functions — without editing a single file of your project.
Two ways in:
deploy recognizes the eve layout by agent/instructions.md. import
downloads the repo, detects the framework (eve or Zavu native), registers the
function, installs dependencies, and deploys.
What maps to what
Your tool handlers run unmodified inside the function. The
eve package
itself is compiled away — it is not installed or executed on Zavu.
The sender
An eve project has no concept of a sender, and the agent needs one to answer messages. Provide it either way:What does not run on Zavu
The deploy prints a compatibility report before anything ships. Every eve capability without a Zavu equivalent is listed there — nothing is dropped silently:-
agent/channels/— not needed: your Zavu senders are the channels. Messages arrive without any channel file. -
agent/schedules/— use a Zavu cron trigger instead:npx zavudev fn triggers add --events cron --cron '0 9 * * 1-5'. -
agent/skills/— skill files are not loaded at runtime. Fold critical content intoinstructions.mdor a knowledge base. -
agent/subagents/,agent/sandbox/— not supported. If your agent depends on them, run it on eve’s own runtime and connect Zavu as a channel instead. -
evals/— keep running them locally with eve; they do not run on Zavu. -
Tool
approvalgates andtoModelOutput— ignored, with a warning per tool. -
A file under
agent/tools/that does notexport default defineTool(...)— it is not a tool and is reported by name. The tool count in the report is always the number of tools that will actually be created: -
A
voiceblock inagent/agent.ts— not translated. The agent deploys as text only and will not answer phone calls. To give it a voice, declare it on a Zavu-native agent (defineAgent({ voice: { ... } })) or turn voice on from the dashboard.
agent/agent.ts is read against a fixed list of keys: model and name.
Every other key it declares is reported by name, whether or not Zavu has
heard of it, so a capability eve adds tomorrow cannot slip through unmentioned:
Importing from GitHub
GITHUB_TOKEN environment variable.
The token is sent only to GitHub to download the archive — never to Zavu.
import works for Zavu-native projects too: a repo with a root index.ts is
registered and deployed exactly like npx zavudev init + deploy would.
After the first deploy
npx zavudev deploy from the project directory — edit your
eve files, deploy, and the reconcile summary shows exactly what changed
(+ created, ~ updated, = unchanged, - deleted).