Skip to content

Project map

The Starter generates this application shape:

my-voicebot/
├── .env.example
├── backend/
│   ├── environments/
│   │   ├── development-options@1.toml
│   │   ├── development@1.toml
│   │   └── production@1.toml
│   ├── src/my_voicebot/
│   │   ├── assistant.py
│   │   ├── prompts.py
│   │   ├── tools.py
│   │   ├── call_context.py
│   │   ├── api.py
│   │   └── cli.py
│   ├── pyproject.toml
│   ├── uv.lock
│   └── vaani-release.json
├── frontend/app/
└── scripts/
    ├── setup
    ├── check
    └── dev
You want to change Edit
assistant name, greeting, preparation, tool/prompt registration assistant.py
base or call-aware instructions prompts.py
business API actions tools.py
optional browser-safe test-call fields call_context.py
token API and server-owned readiness response api.py
worker/API commands cli.py
default development preset environments/development@1.toml
development STT/LLM/TTS choices environments/development-options@1.toml
locked production deployment environments/production@1.toml
local secret values .env, copied from .env.example
browser layout and call controls frontend/app/
exact runtime artifact pyproject.toml, uv.lock, and vaani-release.json

VAANI is the installed voice-runtime layer. Do not copy provider clients, LiveKit worker code, audio streaming, transcripts, VAD, or lifecycle handling into the bot.

The deployment layer owns the processes, domains, TLS, secret injection, LiveKit project and dispatch, phone numbers, trunks, SIP routes, and monitoring. Those are not frontend settings and do not belong in prompts.

After an environment change, review and validate both alternatives:

git diff -- backend/environments/
./scripts/check
VAANI_ENVIRONMENT=production ./scripts/check

Next: Assistant basics.