Skip to content
2nd Place

Zeppy

Voice calling agent that will make a call on our behalf and inquire about details in any language.

Core trick

Places an outbound SIP call through LiveKit to a business, runs a Gemini Live conversation, then extracts structured answers to a schema.

Tags

Description

Voice calling agent that will make a call on our behalf and inquire about details in any language.
lokeswaran-aj/zeppy★ 20 forksTypeScriptCreated Feb 14, 2026 · last push Feb 14, 2026

README excerpt

# CallAgent

AI-powered phone investigation assistant that calls contacts, investigates requirements, streams live progress/transcripts, and recommends the best option with action items.

## Tech Stack

- Next.js 16 App Router + shadcn/ui
- Next.js API routes (Node runtime)
- SSE for live updates
- LiveKit SIP outbound calls (Twilio SIP trunk setup expected)
- Google Gemini Live API + structured extraction
- PostgreSQL (Docker) + Prisma

## Local Setup

1) Install dependencies

```bash
npm install
```

2) Configure environment variables

```bash
cp .env.example .env
```

Fill all required telephony and AI keys in `.env`:
- `LIVEKIT_URL`
- `LIVEKIT_API_KEY`
- `LIVEKIT_API_SECRET`
- `LIVEKIT_AGENT_NAME` (agent worker dispatch target)
- `LIVEKIT_SIP_TRUNK_ID`
- `TWILIO_ACCOUNT_SID`
- `TWILIO_AUTH_TOKEN`
- `TWILIO_SIP_TRUNK_SID`
- `GEMINI_API_KEY`
- `GEMINI_REALTIME_MODEL` (defaults to native audio realtime model)
- `GEMINI_REALTIME_VOICE`
- `CALL_SESSION_TIMEOUT_SECONDS`
- `CALLAGENT_LOG_LEVEL` (optional: `debug`, `info`, `warn`, `error`; default `info`)

Optional recording vars (LiveKit Egress -> GCP):
- `RECORDING_PROVIDER` (`gcp`)
- `RECORDING_GCP_BUCKET`
- `RECORDING_GCP_PREFIX` (optional, defaults to `zeppy/recordings`)
- `RECORDING_GCP_CREDENTIALS_B64` (base64 of service-account JSON file)

3) Start Postgres and migrate

```bash
npm run db:up
npm run db:migrate
npm run db:generate
```

4) Run the app + voice agent worker

```bash
npm run dev:all
```

Open `http://localhost

Team