Skip to content

eve

Use Zavu from an agent built with eve — as an API connection today, or deploy the whole project onto Zavu.

View .md

Zavu + eve

eve is Vercel's open-source agent framework. There are two ways to combine it with Zavu, depending on where you want the agent to run.

Option 1: deploy the eve project on Zavu

If your agent is instructions + tools, deploy it directly — it becomes a first-class Zavu agent answering on your senders:

terminal
npx zavudev import owner/repo --sender sndr_123

See Deploy an eve project for what maps, what doesn't, and the compatibility report.

Option 2: keep the agent on eve, call Zavu as a connection

If your agent relies on eve's own runtime (sandbox, subagents, durable sessions), keep it there and give it Zavu's messaging API as tools. eve's OpenAPI connections turn our spec into one tool per operation:

TypeScript
// agent/connections/zavu.ts import { defineOpenAPIConnection } from "eve/connections" export default defineOpenAPIConnection({ spec: "https://www.zavu.dev/docs/openapi.json", description: "Send SMS, WhatsApp, email, and voice messages via Zavu.", auth: { getToken: async () => ({ token: process.env.ZAVUDEV_API_KEY! }) }, operations: { // Start narrow; every operation is available if you want it. allow: ["sendMessage", "getMessage", "introspectPhone", "introspectEmail"], }, })

The agent then gets tools like zavu__sendMessage. Recommendations:

  • Gate sends behind an approval so the model cannot message people unsupervised: add approval: once() (from eve/tools/approval) to the connection config if your review policy calls for it.
  • Scope the API key: create a key for this agent, and use a sub-account with a spending cap if the agent messages on behalf of a client.
  • sendMessage accepts phone numbers (E.164), email addresses, and chat IDs in the same to field, with channel: "auto" routing — one tool covers every channel.

Which option to pick

Your agent needsRun it on
Messaging channels, voice calls, an inbox, per-message billingZavu (option 1)
Sandboxed compute, subagents, durable multi-day sessionseve, calling Zavu (option 2)

Both directions use the same account, senders, and message history — you can prototype with option 2 and migrate to option 1 (or the reverse) without changing anything else.