Skip to content

Quick Start

Pre-requirements:

  • Docker (Compose)
  • just
  • The Rust toolchain pinned in rust-toolchain.toml
  • Node 20+
  • pnpm 9.12+
  • buf
  • protoc

Clone with the shared-crates submodule and bring up the stack:

Terminal window
git clone --recursive https://gitlab.com/vortexaq/nexus.git && cd nexus
# Configure local dev defaults; set OPENAI_API_KEY / ANTHROPIC_API_KEY for live providers.
# On Apple Silicon, set DOCKER_PLATFORM=linux/arm64 before the first Docker build.
cp .env.example .env
# Bring up the dev stack: gateway on :14450, console on :14449, plus the data plane.
just dev
# Optional: one-shot health summary once the first build settles.
just status

Open the console at http://127.0.0.1:14449/sign-up and create the first user. Sign-up provisions a personal workspace with a default organization and default project. Then mint an API key, register a provider key, and send a request:

Terminal window
# Find the org created by sign-up.
just cli orgs list
# Create a Nexus API key. This prints the nxs_... key once.
just cli credentials api-keys create --org <org_slug> --project default --name local-dev
# Register a BYOK provider key (the secret is read from stdin, never from argv).
# The connection name defaults to `primary`, which is what the gateway resolves.
set -a; source .env; set +a
printf '%s' "$OPENAI_API_KEY" | just cli credentials provider-keys create \
--org <org_slug> --project default --provider openai --secret-stdin
# Seed operator-managed platform provider keys from `.env` (registry sync
# resolves its upstream credential from the tenant-scope platform key).
just load-provider-keys
# Sync the model registry from provider APIs.
# Restart the gateway afterwards so it picks up the new registry snapshot.
just models-sync
just compose restart gateway
# Send an OpenAI-compatible request through the gateway.
curl http://localhost:14450/v1/chat/completions \
-H "Authorization: Bearer <nexus_api_key>" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5.4-mini","messages":[{"role":"user","content":"hello"}]}'

Open the console to see the request, session, trace, cost, and audit record for that call.