Prerequisites
Before installing Viber, ensure you have the following:Bun (recommended)
Viber uses Bun as the primary runtime and package manager.Install with:
curl -fsSL https://bun.sh/install | bashNode.js 18+
Optional alternative to Bun, though Bun is the recommended path.
Google Gemini API key
Required for code generation. Get yours at Google AI Studio.
Daytona API key
Required for sandbox management. Sign up at Daytona.
Optional prerequisites
ElevenLabs API key
Only required for voice mode. Get started at ElevenLabs.
Unsplash API keys
Required for AI-generated image placement. Register at Unsplash Developers.
Environment variables
Viber uses environment variables for configuration. Create a.env file in the project root:
Variable descriptions
| Variable | Required | Description |
|---|---|---|
GEMINI_API_KEY | Yes | Google Gemini API key for code generation |
DEFAULT_MODEL | No | Gemini model to use (default: gemini-3-pro) |
DAYTONA_API_KEY | Yes | Daytona API key for sandbox management |
UNSPLASH_ACCESS_KEY | Yes | Unsplash access key for image generation |
UNSPLASH_SECRET_KEY | Yes | Unsplash secret key for image generation |
ELEVENLABS_API_KEY | No | ElevenLabs API key (only for voice mode) |
VITE_ELEVENLABS_AGENT_ID | No | ElevenLabs agent ID (only for voice mode) |
IMAGE_CDN_BASE_URL | No | Public URL for image CDN in production |
Local installation
Configure environment
Create a
.env file with your API keys (see environment variables section above).Production build
To build and run Viber in production mode:Docker installation
Build and run with Docker
Remember that
VITE_ELEVENLABS_AGENT_ID must be set at build time in the Dockerfile, not at runtime.Using the convenience script
Viber includes a Docker convenience script:.env file.
Deployment to Google Cloud Run
Deploy Viber to Google Cloud Run for a fully managed, serverless deployment:After deployment, Cloud Run will provide a public URL for your Viber instance.
Available scripts
Viber includes several npm/bun scripts for development and maintenance:| Script | Command | Description |
|---|---|---|
| Development | bun run dev | Start Vite dev server on port 3000 |
| Build | bun run build | Create production build |
| Preview | bun run serve | Preview production build locally |
| Start | bun run start | Run production server |
| Test | bun run test | Run Vitest test suite |
| Daytona Snapshot | bun run daytona:snapshot | Create Daytona sandbox snapshot |
| Daytona Benchmark | bun run daytona:benchmark | Benchmark Daytona performance |
| Test Proxy | bun run daytona:test-proxy | Test Daytona proxy connection |
Configuring ElevenLabs voice agent
To enable voice mode, you need to set up an ElevenLabs Conversational AI agent:Create an ElevenLabs account
Sign up at ElevenLabs and navigate to the Conversational AI section.
Create a new agent
Configure your agent with:
- A system prompt that understands the
vibe_buildandnavigate_uitools - Voice settings for natural conversation
- Tool definitions for the client-side tools
Troubleshooting
Voice mode not working
Voice mode not working
Check that:
ELEVENLABS_API_KEYis set correctlyVITE_ELEVENLABS_AGENT_IDwas set before building- You rebuilt the app after adding the agent ID
- Your browser has microphone permissions
Sandbox creation fails
Sandbox creation fails
Verify:
- Your
DAYTONA_API_KEYis valid - You have sufficient quota in your Daytona account
- Network connectivity to Daytona API
Images not generating
Images not generating
Ensure:
- Both
UNSPLASH_ACCESS_KEYandUNSPLASH_SECRET_KEYare set - Your Unsplash API keys are active
- You haven’t exceeded Unsplash rate limits
Code generation errors
Code generation errors
Check:
GEMINI_API_KEYis valid and active- You have API quota remaining
- The
DEFAULT_MODELis set to a valid Gemini model
Next steps
Quick start guide
Build your first voice-generated app
Architecture overview
Learn how Viber works internally