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.

Watch Getting Started with the Brutor Free Trial: downloading the trial bundle, running the setup script and logging into the Admin Console and the User Portal.

Watch Getting Started with the Brutor Free Trial walks through everything on this page: downloading the trial, running the setup script and its questions, and logging into the Admin Console and the User Portal.

  • 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. The download unpacks to a brutor-ai-trial folder.

    Terminal window
    cd brutor-ai-trial
  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, mints any missing secrets into .env, and then asks a few questions. Each one switches an optional part of the trial on or off. The default (just press Enter) is always the lightweight choice, and everything you need to follow this documentation works with the defaults. You can re-run the script later and answer differently.

    • Install Ollama and run a LOCAL embeddings model?
      • Default N: embeddings use OpenAI text-embedding-3-small once you set an OpenAI key (Admin Console → AI Models → text-embedding-3-small → Edit → API Key). Until then only the knowledge base and the semantic cache wait; chat, MCP and all governance work.
      • Answer y for a fully self-hosted stack with no external key. It downloads a ~4 GB Ollama image and a ~274 MB model on first run (10+ minutes on slow broadband) and needs ~4 GB of free RAM.
    • Enable enterprise KMS / BYOK demo?
      • Default N: the ENCRYPTION_KEY in .env is the master key, with no extra containers.
      • Answer y to see envelope encryption with a key that never leaves a KMS. It starts LocalStack (an AWS KMS emulator) and a HashiCorp Vault dev server, then asks Which KMS backend? [A/v]: A for AWS KMS (the default) or V for Vault Transit.
    • Enable Microsoft Presidio?
      • Default N: the built-in regex PII detector (cards, SSNs, IBANs, API keys and more) still runs.
      • Answer y for machine-learning PII detection (people, places, organisations) on top of the regex set. It adds ~500 MB RAM. After boot, add a Presidio provider in the Admin Console with endpoint http://presidio-analyzer:3000.
    • Enable the Anthropic Enterprise mock?
      • Default N.
      • Answer y to try Traffic Data Import without a real Claude Enterprise contract. The mock simulates Claude usage and grows it every few minutes.
    • Enable the MCP Registry?
      • Default N: the gateway proxies MCP servers without it.
      • Answer y for the standalone MCP Registry on port 5001, to publish and discover MCP servers.

    When every service reports ready, the script prints the access points: Admin Console http://localhost:3002, User Portal http://localhost:3001, Core http://localhost:8100 and Control Plane http://localhost:5050.

  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": {
    "background_writes": {
    "scheduled": 0, "completed": 0, "failed": 0, "dropped": 0,
    "audit_spooled": 0, "audit_lost": 0, "usage_spooled": 0, "usage_dead_lettered": 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