Operator JWT
Control-plane Bearer tokens from POST /api/login. Dashboard and lifecycle APIs sit behind them. HTTP /t/{id}/query is operator tooling, not the public tenant API.
What is true in the binary
Security page for diligence, not a compliance badge wall. We are not SOC 2 certified. If your questionnaire needs that line, say so — do not infer it from this site.
Intended inbox: hello@dbxdb.io / security@dbxdb.io. dbxdb.io has no MX yet, so those addresses do not receive mail. Do not file security reports as public GitHub issues. Preferred language: English. See also security.txt.
Control-plane Bearer tokens from POST /api/login. Dashboard and lifecycle APIs sit behind them. HTTP /t/{id}/query is operator tooling, not the public tenant API.
256-bit secrets, stored only as hashes. Create, list metadata, revoke immediately — including live RESP connections. Secrets are never returned after mint. A reader key can GET, VSEARCH, VSIM, and VFUSE and cannot SET or VADD. Mint from Tenant keys in the dashboard.
reader, writer, and tenant-admin, with optional key-pattern scopes. AUTH is tenantID:keyID plus secret. The key is re-resolved on every command.
Per-IP brute-force protection on /api/login: five failures, sixty-second lockout. Admin passwords are bcrypt, never plaintext.
Length-framed, sequenced, CRC-protected state-image transactions. CRC corruption is fatal. Checkpoints are sequence-bearing KV snapshots.
A maintenance lock writes a versioned SHA-256 manifest for KV and vector files. Restore validates into a sibling directory and swaps with rollback.
Control plane TLS by default. -insecure-http is local development only. RESP ingress can require mTLS when configured.
Orchestrator GET /metrics is open only with -insecure-http. In production scrape with Authorization: Bearer — operator JWT or DBX_INTERNAL_API_TOKEN. Do not expose :8000 to the internet without TLS.
Provision, backup, restore, and purge operate on one tenant directory. There is no cluster-wide keyscan to “delete my data.” purge=true returns a forget receipt (DEK shred + directory erase). That is an operator artifact, not a compliance badge.
SQ8 mmap rows stay plaintext so idle tenants live in page cache. DBX encrypts ids, the graph, WAL, and checkpoints. For embedding confidentiality at rest, put DBX_DATA_DIR on LUKS or fscrypt and set DBX_REQUIRE_DISK_ENCRYPTION=1. Details in positioning and the isolation doc in the repo.
Forget receipt
Isolation Kernel encrypts WAL, checkpoints, vector ids, and the HNSW graph. SQ8 rows stay mmap plaintext unless the volume is LUKS/fscrypt. Browser sketch, not a live shred.
WAL frames, sequenced, CRC, encrypted under the tenant DEK.
Checkpoints and vector ids sealed with the same key.
HNSW graph ciphertext. Neighbors without a key are noise.
SQ8 .vec rows. mmap plaintext so idle tenants sit in page cache.
v1 is a single-node profile. Raft and cluster mode fail closed. Optional async WAL replicas ack on the primary; replica lag is possible. Details in architecture.
v1.3.0 · Deployment boundary
Linux strict workers now apply Landlock and no_new_privs across worker threads, with seccomp restrictions on socket creation and syscall paths. Build standalone strict workers with CGO_ENABLED=0. WAL replication uses mutual authentication and per-connection AES-256-GCM encryption with tamper and replay rejection.
The optional support API uses separate read and wake credentials with exact tenant allowlists. A wake requires a durable pre-action audit, is rate-limited, and is checked by the client. Support credentials grant no restore, deletion, key rotation, or configuration capability.