Health Monitoring API
Section titled “Health Monitoring API”The Health Monitoring API exposes lightweight endpoints for inspecting the runtime state of a Hoody Code container. Use the health endpoint for liveness and readiness probes, the version endpoint to report what is currently running (the orchestrator binary and the packaged editor tree are built and deployed independently, so they are reported as two independent figures), and the status endpoint to inspect orchestrator configuration and the list of running instances.
Health
Section titled “Health”GET /api/v1/code/health
Section titled “GET /api/v1/code/health”Returns a standardized health payload including process, memory, and connection metadata. The endpoint is safe to call from external monitoring systems.
This endpoint takes no parameters.
curl -X GET "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/health" \ -H "Authorization: Bearer <token>"import { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com', token: process.env.HOODY_TOKEN });
await client.code.kit.getHealth();Status: 200 OK
{ "status": "ok", "service": "hoody-code", "built": "2026-04-13T14:30:00Z", "started": "2026-04-13T15:00:00Z", "memory": { "rss": 134217728, "heap": 67108864 }, "fds": 47, "pid": 1, "ip": "198.51.100.42", "userAgent": "curl/8.4.0"}| Field | Type | Description |
|---|---|---|
status | string | Service status. Always "ok" for a healthy response. |
service | string | Service identifier. Always "hoody-code". |
built | string | null | ISO 8601 build timestamp (mtime of the compiled entry file), or null if unavailable. |
started | string | ISO 8601 timestamp when the process started. |
memory | object | null | Process memory snapshot. null when unavailable. |
memory.rss | integer | Resident set size in bytes. |
memory.heap | integer | null | V8 heap used in bytes. |
fds | integer | null | Open file descriptor count from /proc/self/fd, or null if unavailable. |
pid | integer | Process ID. |
ip | string | Remote peer IP from req.socket.remoteAddress. Never derived from X-Forwarded-For. |
userAgent | string | null | Request User-Agent header. |
Version
Section titled “Version”GET /api/v1/code/version
Section titled “GET /api/v1/code/version”Reports what is actually running, as two independent figures.
The orchestrator binary and the packaged editor tree it spawns are built and deployed separately: a deployment can rebuild the orchestrator while keeping the committed editor tree, so a single “version” would describe one and imply the other.
This replaces the former /api/v1/code/update/check, which promised an update check against a release feed. The editor is vendored and pinned in-repo, so there is no feed to check and no latest to report. That operation is retired, not renamed; the editor instance still serves the editor tree it was shipped with. Update checking has since been removed from the editor instance as well, so no route on either process performs one.
Never contacts the network.
This endpoint takes no parameters.
curl -X GET "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/version" \ -H "Authorization: Bearer <token>"import { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com', token: process.env.HOODY_TOKEN });
await client.code.kit.getVersion();Status: 200 OK
Both orchestrator and editor are readable:
{ "orchestrator": { "version": "1.0.0" }, "editor": { "path": "/opt/hoody-code/bin/src", "version": "0.0.0", "commit": "a255a57d21a1bed6b62378204076ca28c800ba47", "vscodeVersion": "1.137.0", "status": "ok" }}Configured editor tree is not present:
{ "orchestrator": { "version": "1.0.0" }, "editor": { "path": "/opt/hoody-code/bin/src", "version": null, "commit": null, "vscodeVersion": null, "status": "missing" }}| Field | Type | Description |
|---|---|---|
orchestrator | object | Running orchestrator build. |
orchestrator.version | string | null | Version of the running orchestrator build, or null if undeterminable. |
editor | object | Figures about the packaged editor tree. |
editor.path | string | Absolute path of the packaged editor tree these figures came from. |
editor.version | string | null | Wrapper version from the packaged tree. 0.0.0 in normal builds. |
editor.commit | string | null | Build commit stamped into the packaged wrapper. The meaningful identifier. |
editor.vscodeVersion | string | null | Vendored VS Code version. |
editor.status | string | Why the figures above are null, when they are. missing (no such tree) and unreadable (a tree that could not be read) are different operational problems and are not collapsed together. One of "ok", "partial", "missing", "unreadable". |
The version lookup failed:
{ "message": "Version lookup failed"}| Field | Type | Description |
|---|---|---|
message | string | Human-readable error message. |
Status
Section titled “Status”GET /status
Section titled “GET /status”Returns detailed status information including:
- Orchestrator configuration (port, base port, data directory)
- List of all running instances
- Instance metadata (id, port, folder, uptime)
Use this endpoint for:
- Debugging instance state
- Monitoring running instances
- Capacity planning
This endpoint takes no parameters.
curl -X GET "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/status" \ -H "Authorization: Bearer <token>"import { HoodyClient } from 'hoody-sdk';
const client = new HoodyClient({ baseURL: 'https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com', token: process.env.HOODY_TOKEN });
await client.code.kit.getStatus();Status: 200 OK
No running instances:
{ "orchestrator": { "port": 8080, "basePort": 7000, "dataDir": "./data/instances" }, "instances": []}Multiple running instances:
{ "orchestrator": { "port": 8080, "basePort": 7000, "dataDir": "/opt/data/instances" }, "instances": [ { "id": 1, "port": 7001, "folder": "/home/user/project-a", "startedAt": "2024-01-15T10:00:00.000Z", "uptime": 7200000 }, { "id": 5, "port": 7005, "folder": "/home/user/project-b", "startedAt": "2024-01-15T11:30:00.000Z", "uptime": 1800000 } ]}| Field | Type | Description |
|---|---|---|
orchestrator | object | Orchestrator configuration. |
orchestrator.port | integer | Orchestrator server port. |
orchestrator.basePort | integer | Base port for child instances. |
orchestrator.dataDir | string | Root data directory for instances. |
instances | array | List of currently running instances. |
instances[].id | integer | Instance ID. |
instances[].port | integer | TCP port where the instance is listening. |
instances[].folder | string | Absolute path to the folder opened in the instance. |
instances[].startedAt | string | ISO 8601 timestamp when the instance was spawned. |
instances[].uptime | integer | Instance uptime in milliseconds. |