Skip to main content

How to run locally

Prerequisites

1. Install CLI

dart pub global activate dart_frog_cli

2. Install dependencies

dart pub get

3. Create .env

cp .env.example .env

Fill in at minimum GEMINI_API_KEY and FIREBASE_PROJECT_ID:

PORT=8282
HOST=localhost
VM_SERVICE_PORT=8183

FIREBASE_PROJECT_ID=your-firebase-project-id

GEMINI_API_KEY=your-gemini-api-key
GEMINI_MODEL=gemini-2.5-flash
GEMINI_CONNECT_TIMEOUT_SECONDS=30
GEMINI_RECEIVE_TIMEOUT_SECONDS=30

RATE_LIMIT_MAX_REQUESTS=10
RATE_LIMIT_WINDOW_SECONDS=60
VariableRequiredDescription
FIREBASE_PROJECT_IDFirebase project ID for JWT verification
GEMINI_API_KEYGoogle AI Studio API key
GEMINI_MODELDefault: gemini-2.5-flash
PORTDefault: 8080
RATE_LIMIT_MAX_REQUESTSDefault: 10
RATE_LIMIT_WINDOW_SECONDSDefault: 60

4. Run

dart_frog dev

Server starts at http://localhost:8282.

5. Test

# Health check (no auth required)
curl http://localhost:8282/health

# Chat (requires a real Firebase ID token)
curl -X POST http://localhost:8282/chat \
-H "Authorization: Bearer <ID_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Hello!"}]}'