How to run locally
Prerequisites
- Dart SDK ≥ 3.0.0
- Dart Frog CLI
- A Google Gemini API key — get one here
- A Firebase project — needed for JWT verification
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
| Variable | Required | Description |
|---|---|---|
FIREBASE_PROJECT_ID | ✅ | Firebase project ID for JWT verification |
GEMINI_API_KEY | ✅ | Google AI Studio API key |
GEMINI_MODEL | ❌ | Default: gemini-2.5-flash |
PORT | ❌ | Default: 8080 |
RATE_LIMIT_MAX_REQUESTS | ❌ | Default: 10 |
RATE_LIMIT_WINDOW_SECONDS | ❌ | Default: 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!"}]}'