---
title: "Get host resource capacity and allocations"
method: GET
path: "/resources"
---

# Get host resource capacity and allocations

`GET /resources`

Returns current host resource capacity, allocation status, and per-instance breakdown.
Resources include CPU, memory, disk, and network. Oversubscription ratios are applied
to calculate effective limits.

## Response `200`

Resource status

- Resources
  - `cpu` ResourceStatus, required
    - `type` string, required — Resource type
    - `capacity` integer, required — Raw host capacity
    - `effective_limit` integer, required — Capacity after oversubscription (capacity * ratio)
    - `allocated` integer, required — Currently allocated resources
    - `available` integer, required — Available for allocation (effective_limit - allocated)
    - `oversub_ratio` number, double, required — Oversubscription ratio applied
    - `source` string — How capacity was determined (detected, configured)
  - `memory` ResourceStatus, required
    - `type` string, required — Resource type
    - `capacity` integer, required — Raw host capacity
    - `effective_limit` integer, required — Capacity after oversubscription (capacity * ratio)
    - `allocated` integer, required — Currently allocated resources
    - `available` integer, required — Available for allocation (effective_limit - allocated)
    - `oversub_ratio` number, double, required — Oversubscription ratio applied
    - `source` string — How capacity was determined (detected, configured)
  - `disk` ResourceStatus, required
    - `type` string, required — Resource type
    - `capacity` integer, required — Raw host capacity
    - `effective_limit` integer, required — Capacity after oversubscription (capacity * ratio)
    - `allocated` integer, required — Currently allocated resources
    - `available` integer, required — Available for allocation (effective_limit - allocated)
    - `oversub_ratio` number, double, required — Oversubscription ratio applied
    - `source` string — How capacity was determined (detected, configured)
  - `network` ResourceStatus, required
    - `type` string, required — Resource type
    - `capacity` integer, required — Raw host capacity
    - `effective_limit` integer, required — Capacity after oversubscription (capacity * ratio)
    - `allocated` integer, required — Currently allocated resources
    - `available` integer, required — Available for allocation (effective_limit - allocated)
    - `oversub_ratio` number, double, required — Oversubscription ratio applied
    - `source` string — How capacity was determined (detected, configured)
  - `disk_io` ResourceStatus
    - `type` string, required — Resource type
    - `capacity` integer, required — Raw host capacity
    - `effective_limit` integer, required — Capacity after oversubscription (capacity * ratio)
    - `allocated` integer, required — Currently allocated resources
    - `available` integer, required — Available for allocation (effective_limit - allocated)
    - `oversub_ratio` number, double, required — Oversubscription ratio applied
    - `source` string — How capacity was determined (detected, configured)
  - `disk_breakdown` DiskBreakdown
    - `images_bytes` integer — Disk used by exported rootfs images
    - `oci_cache_bytes` integer — Disk used by OCI layer cache (shared blobs)
    - `volumes_bytes` integer — Disk used by volumes
    - `overlays_bytes` integer — Disk used by instance overlays (rootfs + volume overlays)
  - `gpu` GPUResourceStatus, nullable — GPU resource status. Null if no GPUs available.
    - `mode` 'vgpu' | 'passthrough', required — GPU mode (vgpu for SR-IOV/mdev, passthrough for whole GPU)
    - `total_slots` integer, required — Total slots (VFs for vGPU, physical GPUs for passthrough)
    - `used_slots` integer, required — Slots currently in use
    - `profiles` GPUProfile[] — Available vGPU profiles (only in vGPU mode)
      - `name` string, required — Profile name (user-facing)
      - `framebuffer_mb` integer, required — Frame buffer size in MB
      - `available` integer, required — Number of instances that can be created with this profile
    - `devices` PassthroughDevice[] — Physical GPUs (only in passthrough mode)
      - `name` string, required — GPU name
      - `available` boolean, required — Whether this GPU is available (not attached to an instance)
  - `allocations` ResourceAllocation[], required
    - `instance_id` string — Instance identifier
    - `instance_name` string — Instance name
    - `cpu` integer — vCPUs allocated
    - `memory_bytes` integer — Memory allocated in bytes
    - `disk_bytes` integer — Disk allocated in bytes (overlay + volumes)
    - `network_download_bps` integer — Download bandwidth limit in bytes/sec (external→VM)
    - `network_upload_bps` integer — Upload bandwidth limit in bytes/sec (VM→external)
    - `disk_io_bps` integer — Disk I/O bandwidth limit in bytes/sec

## Other responses

- `500` — Internal server error

---

[API](https://skmtc.net/kernel/apis/hypeman-api.md) · [All operations](https://skmtc.net/kernel/apis/hypeman-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kernel/hypeman-api/versions/b4642bb950dc/schema)
