ProvaraDocs
Getting started

Quick start

Docker or local dev in 5 minutes.

git clone https://github.com/syndicalt/provara.git
cd provara

# Set up environment
cp .env.example .env
# Edit .env: set PROVARA_MASTER_KEY and at least one provider API key

docker compose up -d

Local development

git clone https://github.com/syndicalt/provara.git
cd provara
npm install

cp .env.example .env
# Edit .env

npx turbo dev

Same ports as Docker. Both the gateway (Hono on 4000) and the dashboard (Next.js on 3000) hot-reload.

Generate a master key

PROVARA_MASTER_KEY encrypts provider API keys stored via the dashboard UI. Generate a 32-byte hex key:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Paste into your .env. Rotation procedure lives in the master-key rotation runbook.

Your first completion

The gateway is OpenAI-compatible. Point any SDK at http://localhost:4000/v1/chat/completions:

curl -X POST http://localhost:4000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-token" \
  -d '{
    "model": "",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Passing "model": "" lets the router pick. Pass a specific model (e.g. "claude-sonnet-4-6") to pin.

Next steps

  • Add more providers via the dashboard at /dashboard/api-keys — their keys are AES-256-GCM encrypted with PROVARA_MASTER_KEY
  • Enable adaptive routing by submitting quality feedback from the Playground
  • Turn on silent-regression detection and auto cost migration once you have ~30 days of traffic