Skip to content

Quickstart

This guide gets the complete platform — core proxy, control plane, Admin Console, User Portal, PostgreSQL, Redis, Qdrant and MinIO — running on your machine in about ten minutes, most of which is image pulls.

  • Docker with the Compose plugin (docker compose version works). Allow at least 4 CPUs / 8 GB RAM in Docker Desktop.
  • The Brutor trial bundle — download it from brutor.ai. The bundle ships with a .env that is pre-populated with your license key (BRUTOR_LICENSE_KEY) and a unique set of secrets minted for your download. The core proxy refuses to start without a valid license key.
  • An OpenAI API key (recommended) — the trial seeds OpenAI models as enabled, so pasting a key into the Admin Console is the fastest way to a working chat. Alternatively the bundle can run a local embedding model via Ollama.
  1. Unpack the bundle and enter it.

    Terminal window
    cd trial_bundle
  2. Check the .env. The download already contains a working configuration — license key, unique JWT_SECRET, ENCRYPTION_KEY and admin passwords. You don’t need to change anything for a local trial, but it’s worth knowing where these live. See the configuration reference for every variable.

  3. Start everything.

    Terminal window
    ./docker-start.sh

    The script checks Docker and your license key, then asks one question: whether to run a local embedding model (Ollama + nomic-embed-text, a ~4 GB image) or use OpenAI embeddings (the default — just needs your OpenAI key later). Pick OpenAI unless you specifically want a fully offline stack.

    Non-interactive alternative:

    Terminal window
    docker compose up -d
  4. Verify the gateway is healthy.

    Terminal window
    curl http://localhost:8100/health
    {
    "status": "healthy",
    "service": "brutor-gateway-core",
    "components": {
    "database": "up",
    "redis": "up"
    },
    "stats": {
    "active_mcp_sessions": 0,
    "background_writes": { "scheduled": 0, "completed": 0, "failed": 0, "dropped": 0 }
    }
    }

    "status": "healthy" means the proxy is up and can reach the shared database. The control plane runs its Alembic migrations and seeds the default tenant on first boot, so allow a minute or two after docker compose up before everything reports healthy.

  5. Log into the Admin Console at http://localhost:3002 with the seeded tenant admin:

    • Username: admin
    • Password: Admin123!
    • Tenant: default

    Then paste your OpenAI API key into the seeded OpenAI models under AI Models so the enabled models can actually reach the provider.

  6. Log into the User Portal at http://localhost:3001 with the seeded end user:

    • Username: trial
    • Password: Trial123!

Success moment: open the portal, pick a model and send a chat message — you get a streamed answer, and the request appears in the Admin Console under Mission Control with its cost and latency. Everything you just sent went through guardrails, budget checks and the usage ledger.

Terminal window
docker compose down # stop, keep data volumes
./docker-cleanup.sh # full teardown including volumes