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:
Next: Assistant basics.