> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zavu.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy an eve project

> Run an agent built with the eve framework on Zavu — no code changes, one command.

## Deploy an eve project

[eve](https://eve.dev) 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:

```sh theme={null}
# From GitHub, in one command:
npx zavudev import acme/support-bot --sender sndr_123

# Or from a local checkout:
cd my-eve-agent
npx zavudev deploy --sender sndr_123
```

`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

| eve                               | Zavu                                                                                                                   |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `agent/instructions.md`           | The agent's system prompt                                                                                              |
| `agent/agent.ts` (`model: "..."`) | The agent's model (string models only)                                                                                 |
| `agent/agent.ts` (`name: "..."`)  | The agent's name. Without it, the `package.json` name is used                                                          |
| `agent/tools/*.ts`                | Tools, named by filename — `get_weather.ts` becomes `get_weather`. Each file must `export default defineTool({ ... })` |
| Zod `inputSchema`                 | Converted to JSON Schema automatically                                                                                 |
| `package.json` dependencies       | Installed server-side, exactly like a native function                                                                  |

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:

```sh theme={null}
npx zavudev deploy --sender sndr_123        # inlined at compile time
# or
npx zavudev fn secrets set SENDER_ID sndr_123   # resolved at runtime
```

Without either, the deploy succeeds and the agent stays disconnected until you
connect a sender from the dashboard.

## 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 into `instructions.md` or 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 `approval` gates and `toModelOutput`** — ignored, with a warning per
  tool.
* **A file under `agent/tools/` that does not `export 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:

  ```ts theme={null}
  // Not a tool: nothing registers it, and the agent's prompt will reference
  // something that does not exist.
  export default { description: "...", execute: async () => ({}) }

  // A tool.
  import { defineTool } from "eve/tools"
  export default defineTool({ description: "...", execute: async () => ({}) })
  ```
* **A `voice` block in `agent/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:

```text theme={null}
agent config 'reasoning' is not translated to Zavu and will be ignored
agent config 'voice' is not translated to Zavu and will be ignored — this agent
deploys as TEXT ONLY and will not answer phone calls
```

Tools run on every channel — plain text, voice, and flow tool steps — with up
to 5 tool rounds per reply, exactly as an eve agent expects.

## Importing from GitHub

```sh theme={null}
npx zavudev import owner/repo                # default branch
npx zavudev import owner/repo#staging        # branch, tag, or commit
npx zavudev import owner/repo --root apps/agent   # monorepo subdirectory
```

Private repositories work by setting a `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

```sh theme={null}
npx zavudev agents list                      # find the agent id
npx zavudev agents test <agentId> --message "hi"   # dry-run, nothing delivered
```

Redeploys are just `npx zavudev deploy` from the project directory — edit your
eve files, deploy, and the reconcile summary shows exactly what changed
(`+` created, `~` updated, `=` unchanged, `-` deleted).
