VoxCore exposes two health endpoints: one per-worker and one fleet-wide aggregated view.

Per-worker health

GET /health
Returns the calling status of the individual worker that handles the request.
{
  "status": "ok",
  "worker_calls": 2,
  "worker_max": 5,
  "total_capacity": 20,
  "total_available": 18,
  "workers": 4,
  "worker_port": 8001,
  "worker_pid": 12345
}
FieldTypeDescription
statusstringAlways "ok" if the worker is responding
worker_callsintActive calls on this worker
worker_maxintMAX_CONCURRENT_CALLS setting
total_capacityintworker_max × workers (estimated fleet total)
total_availableinttotal_capacity - worker_calls (estimated)
workersintVOXCORE_WORKERS setting
worker_portintPort this worker listens on
worker_pidintOS process ID
When called through nginx, total_capacity and total_available are estimates — they assume all workers have the same load as the responding worker. Use /health/fleet for accurate totals.

Fleet health

GET /health/fleet
Queries all workers on the local server and aggregates their status.
{
  "status": "ok",
  "fleet_calls": 8,
  "fleet_max": 20,
  "fleet_available": 12,
  "workers": [
    {"port": 8001, "calls": 3, "pid": 12345},
    {"port": 8002, "calls": 2, "pid": 12346},
    {"port": 8003, "calls": 3, "pid": 12347},
    {"port": 8004, "calls": 0, "pid": 12348}
  ]
}
FieldTypeDescription
fleet_callsintTotal active calls across all workers
fleet_maxintTotal capacity across all workers
fleet_availableintAvailable call slots
workerslistPer-worker breakdown
If a worker is unreachable, its entry shows {"port": N, "status": "unreachable"}.

Monitoring commands

Check all workers from the server:
for p in 8001 8002 8003 8004; do
  curl -s http://localhost:$p/health | python3 -c \
    'import sys,json; d=json.load(sys.stdin); print(f":{d[\"worker_port\"]} calls:{d[\"worker_calls\"]}/{d[\"worker_max\"]}")'
done
Check via nginx (from anywhere):
curl -s https://fleet.vohci.com/health | python3 -m json.tool
Fleet-wide view:
curl -s https://fleet.vohci.com/health/fleet | python3 -m json.tool