Skip to content

Introduction to Zavu

Build and deploy AI agents that answer on WhatsApp, SMS, voice, email, Telegram and Messenger. One API, one webhook contract, one bill.

View .md

What Zavu is

Zavu is the communication layer for humans and agents.

You get two things, and they are the same platform:

  • An API for messages. Send and receive on WhatsApp, SMS, voice, email, Telegram, Instagram and Messenger through one integration.
  • A runtime for agents. Declare an agent in TypeScript, deploy it with one command, and it answers on those same channels. Including phone calls.

Most teams start with one and end up using both. The agent that answers a WhatsApp thread is the same object that answers the phone, and the message you send by hand goes out the same pipe.

Three ways to build

There is no wrong entry point. Pick the one that matches where your code lives, or skip the code entirely.

Ship an agent

TypeScript
import { defineAgent, defineTool } from "@zavudev/functions" defineAgent({ senderId: process.env.SENDER_ID!, name: "Bella", provider: "zavu", model: "openai/gpt-4o-mini", prompt: "You are Bella, host at the pizzeria. Keep it short.", channels: ["whatsapp"], }) defineTool({ name: "check_availability", description: "Get free reservation slots for a date and party size.", parameters: { type: "object", properties: { date: { type: "string" }, partySize: { type: "number" }, }, required: ["date", "partySize"], }, handler: async ({ date, partySize }) => { // your real booking logic: DB, POS, external API, whatever return { available: true, slots: ["19:00", "21:00"] } }, })
terminal
npx zavudev deploy

Your code is the source of truth. Every deploy reconciles the live agent to match what the file declares, so an agent you delete from the code is deleted for real. See How agents work.

Not starting from scratch? npx zavudev agents pull fermi drops a ready-made agent into your project as editable code. Seven of them ship today, for sales, support, and front desk. See Factory agents.

Send a message

TypeScript
import Zavudev from '@zavudev/sdk'; const zavu = new Zavudev(); await zavu.messages.send({ to: "+14155551234", text: "Your order #1234 has shipped!" });

No channel specified means auto: Zavu scores the channels your sender can reach the recipient on and sends through the one that wins on cost and deliverability, with fallback if it fails. See Smart routing.

Channels

ChannelBest forAgents
WhatsAppRich media, templates, high engagementYes
SMSUniversal reach, alerts, OTP, no internet requiredYes
VoiceTwo-way phone calls, text-to-speech alertsYes
EmailTransactional and marketing mail, attachments, repliesYes
TelegramBot messaging, large file sharingYes
MessengerFacebook Page and Marketplace conversationsYes
InstagramDirect messages on a Business accountYes

Every channel shares one send contract, one set of webhook events, and one bill.

Build with your coding agent

Zavu is designed to be operated by the agent you already code with. Give it the skills and it writes correct Zavu code on the first try, instead of guessing at endpoints.

terminal
npx skills add zavudev/zavu-skills

Fifteen skills cover agents, functions, voice, channels, conversations, memory, webhooks, templates, broadcasts, contacts, phone numbers and API v2. The agent acts on your account through the CLI: skills decide what to do, the CLI does it.

Next steps