Self-Hosting Bossa
Run Bossa on your own infrastructure. For most users, the managed service is simpler — no Postgres, migrations, or deployment to manage.
When self-hosting: CLI users must set BOSSA_API_URL to your deployment URL and SUPABASE_URL + SUPABASE_ANON_KEY (your Supabase project) so the CLI can authenticate.
Quick Start (Local)
One-liner (Postgres + migrations + seed + server):
Or step by step:
1. Start Postgres
2. Run migrations
3. Start the server
4. Seed demo data
Server is live at http://localhost:8000. Health at /health, MCP at /mcp, REST at /api/v1.
5. Run tests
Deploy to Supabase + Vercel
Hosted deployment path. API keys are required for all data endpoints (REST and MCP); only /health is public.
1. Create a Supabase project
Use the project Postgres connection string as DATABASE_URL. The app connects directly over Postgres, so no Supabase client setup is required.
2. Run migrations on Supabase
Apply all SQL migrations in order:
Run them with the Supabase SQL editor or psql against the Supabase Postgres endpoint.
3. Set Vercel environment variables
In your Vercel project settings, add:
For CLI auth (signup/login) to work against your deployment:
The CLI fetches SUPABASE_URL and SUPABASE_ANON_KEY from GET /auth/config when users point at your deployment. Users who self-host must set these env vars when running their own backend.
4. Deploy
For local Vercel-style verification:
5. Smoke test
Verify RLS (Supabase): anon key should return empty, not full data:
sk-default is blocked in production. Create keys with the CLI or python backend/scripts/create_workspace.py.
MCP endpoint: https://your-deployment-url.vercel.app/mcp (pass Authorization: Bearer YOUR_API_KEY or X-API-Key: YOUR_API_KEY in client headers).
Usage limits
Tiers and limits are enforced via account_tiers and usage_daily (migrations 005, 006). To bypass limits for core developers, set OWNER_USER_IDS=uuid1,uuid2 (comma-separated user UUIDs). See Pricing & Limits for tier details.Last modified on March 15, 2026