Docker, source, or Compose

Run the binary. Provision a tenant.

Dashboard on :8000. RESP on :6380. Your existing RESP clients work once you AUTH.

Pick a path

Install

shell
export DBX_KEK="$(python -c "import secrets; print(secrets.token_hex(32))")"

docker run --rm -p 8000:8000 -p 6380:6380 \
  -e DBX_ADMIN_PASSWORD='replace-with-12-plus-characters' \
  -e DBX_JWT_SECRET='replace-with-at-least-32-random-characters' \
  -e DBX_INTERNAL_API_TOKEN='replace-with-a-random-service-token' \
  -e DBX_KEK \
  -e DBX_NODE_MEMORY_BUDGET=8gb \
  ghcr.io/vanshjain-0702/dbx-orchestrator:v1.1.0

Open the dashboard at http://localhost:8000 and log in with admin / your password. Mint a writer key on Tenant keys. The published image defaults to DBX_ISOLATION_MODE=strict, so DBX_KEK (64 hex characters) is required or the process exits. :latest tracks GitHub Releases. PowerShell: $env:DBX_KEK = python -c "import secrets; print(secrets.token_hex(32))" then the same docker run (line continuations are backticks). To build the same Dockerfile: docker build -t dbx:dev -f deploy/Dockerfile . then run dbx:dev with the same -e flags. For a laptop try without envelope encryption, add -e DBX_ISOLATION_MODE=inprocess and omit DBX_KEK (directory isolation only, not the security USP).

AUTH, then talk

The first RESP command must be AUTH <tenantID>:<keyID> <secret>. Scoped credentials are per tenant. HTTP /t/{tenantID}/query is operator tooling, not the public tenant API.

From the clone: pip install -e sdk/python. from dbx import DBXClient fails from the repo root without that (or a PYTHONPATH into sdk/python). Replace key_id and secret with a writer key from Tenant keys (shown once).

python
from dbx import DBXClient

db = DBXClient(
    host="localhost",
    port=6380,
    tenant="acme-corp",
    key_id="key-id",
    secret="one-time-key-secret",
)

# Working state for this customer's agent
db.set("session:42", '{"thread": "onboarding", "step": 3}')

# Semantic memory for the same customer, same engine, same backup
db.vadd("memories", "doc:1", [0.1, 0.2, 0.9])
results = db.vsearch("memories", [0.1, 0.2, 0.8], top_k=5)

Provision a customer

Bearer token from POST /api/login (JSON body, Content-Type: application/json). Then create a live isolated engine:

HTTP
curl -s -X POST http://localhost:8000/api/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"YOUR_ADMIN_PASSWORD"}'
# Response: {"token":"..."}  — export it as DBX_TOKEN

curl -X POST http://localhost:8000/api/provision \
  -H "Authorization: Bearer $DBX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id": "acme-corp", "name": "Acme Corp"}'

Backup, restore, export/import, hibernate/wake, and delete take the same token and a tenant id. Meter a customer with GET /api/v1/tenants/{id}/usage. Full sequence on Features. The 15-minute path in Python is examples/quickstart.py (login, provision, AUTH, SET, VADD, usage, export, purge). LangChain session memory is examples/langchain-rag. Next.js SETEX is examples/nextjs-cache.

API reference →