Skip to content

Self-Host (Business tier)

Business-tier subscribers can run ACECode on their own infrastructure. Your code, your embeddings, and your LLM keys stay inside your perimeter — ACE talks to your chosen LLM providers directly, never to our cloud.

A single Linux VPS or container can run the entire stack. Minimum specs:

ComponentSpecNotes
CPU4 vCPUIndexing parallelism scales linearly
RAM8 GBPostgres + Redis + Node.js
Disk50 GB SSDChunks + embeddings + KB; scales with indexed lines
OSUbuntu 22.04 / 24.04, Debian 12, or Docker-capable host

Production recommended: 6 vCPU / 12 GB RAM / 100 GB SSD. This matches our hosted instance and handles ~5M indexed chunks comfortably.

┌─────────────────────────────────────────┐
│ Caddy (reverse proxy) │
│ TLS termination, HTTP/2, automatic LE │
└────────────────────┬────────────────────┘
┌─────────────────────────────────────────┐
│ @ace/api (Hono on Node 22+) │
│ MCP server + REST API + indexer │
└─────┬─────────────────────────┬─────────┘
↓ ↓
┌─────────────┐ ┌──────────────┐
│ PostgreSQL │ │ Redis 7 │
│ + pgvector │ │ │
│ (all data) │ │ (cache) │
└─────────────┘ └──────────────┘
┌─────────────────────────────────────────┐
│ External LLM + Embedding providers │
│ Voyage (embed) + your choice of LLM │
└─────────────────────────────────────────┘
  1. Get the Docker Compose bundle

    Business tier customers receive a private Compose bundle. The bundle ships:

    • docker-compose.yml — services: api, postgres, redis, caddy
    • Caddyfile — TLS-terminated reverse proxy
    • .env.example — required env vars
    • init.sql — pgvector extension + initial migrations
  2. Provide LLM keys

    ACE doesn’t ship LLM credentials. Add your own to .env:

    Terminal window
    # Required: embedding provider
    VOYAGE_API_KEY=pa-...
    # At least one LLM provider (more = better fallback)
    XAI_API_KEY=xai-...
    GOOGLE_API_KEY=...
    OPENAI_API_KEY=sk-... # or any OpenAI-compatible endpoint
    NINEROUTER_BASE_URL=http://... # if using 9router gateway
  3. Set your domain + license key

    Terminal window
    ACE_DOMAIN=ace.your-company.com
    ACE_LICENSE_KEY=<provided-with-subscription>
  4. Start the stack

    Terminal window
    docker compose up -d
    docker compose exec api pnpm db:push # apply schema
    docker compose exec api pnpm seed:admin # create first admin user
  5. Verify

    Terminal window
    curl https://ace.your-company.com/v1/health
    # → { "status": "ok", "version": "x.y.z" }
  6. Connect the CLI

    Terminal window
    export ACE_API_URL=https://ace.your-company.com
    export ACE_API_KEY=<from-admin-dashboard>
    ace init
    ace index
FeatureHosted (api.acecode.dev)Self-host (Business)
Latency from your regionDepends — US-east originWherever you put it
Code privacyHosted on our infraStays inside your perimeter
LLM provider keysWe provide + poolYou provide + manage
Indexed-chunk limitTier-cappedBounded by your disk
UpgradesAutomaticgit pull && docker compose up -d
BackupAutomatic snapshots, off by defaultYour responsibility
SSONot yetSAML 2.0 / OIDC (Business only)
Audit logNot surfacedPostgres admin_activity_log table
Support SLABest-effort24h response (Business)

If you started on hosted and want to move on-premises:

  1. Exportace export --project=<slug> produces a tarball with files + chunks + embeddings + memories. Embeddings are portable (same Voyage model on both sides).
  2. Restore — on your self-hosted instance: ace import <tarball> re-creates the project with all data.
  3. Switch endpoint — point your CLI / VS Code extension at the new host: ACE_API_URL=https://ace.your-company.com.

Embeddings re-importing avoids re-billing Voyage tokens. Expect ~5 minutes per 100K chunks for the import step.

  • Postgres on a private network, not bound to public IP
  • Redis bound to 127.0.0.1 only (it does not need network access)
  • Caddy auto-HTTPS, force HTTPS redirect
  • LLM provider keys in a secrets manager, not in .env on disk
  • Daily pg_dump to off-host storage
  • OS auto-updates enabled (unattended-upgrades on Debian/Ubuntu)
  • Firewall: only ports 80 + 443 open inbound

Business-tier self-host comes with:

  • Private support channel (Slack Connect or Discord)
  • 24h response SLA on infra issues
  • Direct line to the founding team for architectural questions
  • Pre-release access to new MCP tools

Email support@acecode.dev for self-host onboarding.