This is internal infrastructure inventory. It is the live picture, not a generic shape. Where a detail is not pinned in a repo CLAUDE.md, it is described at the granularity the source supports and not fabricated (notably raw IPs that are not confirmed).

Inventory

Vox runs as several independent, single-tenant deployments. Each has its own VoxBridge API, VoxUI app, VoxCore fleet, MongoDB, and brand. Fleets can span multiple hosts behind an HAProxy ingress.
ClientBrandAPIAppFleet hostsMongoDBStorage
Aetherixaetherixapi.vohci.comapp.vohci.comfleet.vohci.com + fleet2.vohci.com, fronted by HAProxy ingress calls.vohci.commongo.vohci.comShared DigitalOcean Spaces (SGP1)
Orioriserveapi-voice-agent.oriserve.comapp-voice-agent.oriserve.comfleet-1-voice-agent.oriserve.com, fleet-2-voice-agent.oriserve.commongo-voice-agent.oriserve.comPer-fleet local MinIO (localhost:9000, bucket recordings, insecure)
Tata AIGoriserve (Ori theme)tata-aig.oriserve.com (separate 3-box AWS deployment)tata-aig.oriserve.comDedicated AWS boxesDedicatedPer-deployment
CX Bridgecxbridgeapi.cxbridge.ioapp.cxbridge.ioSingle-node DigitalOcean (root@139.59.32.128), 8 workersSame nodePer-deployment
Pelocalpelocalapi.pelocal.netapp.pelocal.netGCP India (fleet + api + mongo + sip on this footprint)mongo.pelocal.netPer-deployment
Novusnovusnovus.vohci.comnovus.vohci.comSingle-node 168.144.125.78, shares the CX-DN fleet/LiveKitShared with CX-DN footprintPer-deployment
Credgenicsoriserve (reuses Ori theme)under oriserve.comunder oriserve.comAWS Mumbai: vox-box-1 + vox-box-2 + 4 fleet hostsDedicatedPer-deployment
The CLAUDE.md “Current deployments” table may still show CX Bridge and Pelocal as “Needs ledger.” That note is stale — both are deployed. Treat this page as the authoritative inventory.

Fleet topology notes

  • Aetherix is the only deployment confirmed to run a multi-fleet HAProxy ingress today. The two fleets (fleet.vohci.com, fleet2.vohci.com) sit behind calls.vohci.com; the API runs on the fleet-1 box. The HAProxy config is brand-portable via render.sh / add-fleet.sh. See Fleet capacity.
  • Ori runs two fleet hosts (fleet-1, fleet-2).
  • Credgenics runs two control boxes (vox-box-1, vox-box-2) plus four fleet hosts under oriserve.com in AWS Mumbai, reusing the Ori brand theme.
  • Tata AIG is a separate 3-box AWS deployment that reuses the Ori theme.
  • CX Bridge and Novus are single-node deployments; Novus shares the CX-DN fleet/LiveKit.
  • Each fleet host keeps the standard one-call-per-worker shape (nginx least_conn + max_conns=1, VOXCORE_WORKERS workers on Unix sockets).

Recording storage split

Recording storage mode differs by deployment, and getting it wrong breaks dashboard playback:
ModeUsed byBehavior
Shared object storage (DigitalOcean Spaces)AetherixAny host can serve any recording; playback is host-independent.
Per-fleet local MinIO (localhost:9000, bucket recordings, secure false)OriRecording lives on the fleet host that handled the call; playback is proxied through VoxBridge/VoxCore and depends on the originating host.
For local-MinIO deployments, the endpoint must be exactly localhost:9000. Private IPs break dashboard playback. Before Ori demos, verify VoxBridge system_settings.minio, fleet-1 /opt/voxcore/.env, and fleet-2 /opt/voxcore/.env agree. The long-term target for Ori is shared object storage so playback no longer depends on the originating fleet host.

Dialler hosts

VoxDialler runs as a separate long-running process per deployment that uses it. Confirmed hosts:
ClientVoxDialler host
Oriubuntu@api-voice-agent.oriserve.com:/opt/voxdialler/
Tata AIGubuntu@3.109.53.131:/opt/voxdialler/
Pelocaltanuj@sip.pelocal.net:/opt/voxdialler/
CX Bridgeroot@139.59.32.128:/opt/voxdialler/
See VoxDialler overview for the dialling engine itself.

Per-deployment checklist

When standing up or auditing a deployment, the high-leverage items are:
ItemWhy
Fleet nginx uses map $http_upgradeHardcoded Connection "upgrade" breaks HTTP POST dialout.
Fleet nginx retries 429 for /attach, /livekit/dialout, /livekit/widgetShort async POSTs spawn background calls; nginx can route to a logically busy worker otherwise.
Storage mode matches realityShared Spaces vs localhost:9000 local MinIO; mismatched config breaks playback.
Brand has its own favicon/logoNever reuse another brand’s assets as placeholders.
Only voxcore@*.service runs on fleetsNo legacy multi-worker voxcore.service / port 8000.