Sign in
Docs
API referenceCoordinator

API reference

Runner heartbeat

Have a token? Manage tokens in the console
POST
/v1/coordinator/runners/{runner_id}/heartbeat

A runner says it is online; the answer lists the leases offered to it, the heartbeat interval (20 s) and the lease time (90 s).

Needs scope coordinator:runner.

Authorization

bearer
headerAuthorizationBearer <JWT>

An access token from the identity provider: a person's, or a customer's from the client credentials grant with an API key (developers.inorbit.hr). The gateway verifies it; the audience is iohr-api.

Path Parameters

runner_id*string

The runner's id, rnr_ and a ULID.

Request Body

iohr.coordinator.v1.RunnerHeartbeatRequest; path variables override their fields

application/json
  1. body

iohr.coordinator.v1.RunnerHeartbeatRequest

account_id?string
capabilities?

iohr.coordinator.v1.RunnerCapabilities

capacity?integer
Formatint32
kinds?array<string>
providers?array<>
runner_id?string
signals?

iohr.coordinator.v1.HostSignals

version?string
wait_seconds?integer
Formatint32

Response Body

iohr.coordinator.v1.RunnerHeartbeatResponse

application/json
  1. response

iohr.coordinator.v1.RunnerHeartbeatResponse

heartbeat_interval_seconds*integer
Formatint32
lease_seconds*integer
Formatint32
offered*array<>
runner?

iohr.coordinator.v1.Runner

waited_seconds*integer
Formatint32
import { ApiError, Public } from "@inorbithr/sdk";// Reads INORBIT_TOKEN, or INORBIT_KEY_ID and INORBIT_KEY_SECRET.const api = Public.fromEnv();try {  const { value } = await api.coordinator.runnerHeartbeat("<runner_id>", {    kinds: ["<kinds>"],    version: "<version>",  });  console.log(value);} catch (e) {  if (!(e instanceof ApiError)) throw e;  console.error(`${e.code}: ${e.problem} (request id ${e.raw.requestId})`);  process.exitCode = 1;}

npm install @inorbithr/sdk. Calls the package's public surface; an operation newer than your package needs the next release or a client generated for your account. The SDKs.

Example Response
{  "heartbeat_interval_seconds": 0,  "lease_seconds": 0,  "offered": [    {      "accepted_at": "string",      "expired_at": "string",      "expires_at": "string",      "fencing_token": "string",      "heartbeat_at": "string",      "job_id": "string",      "lease_id": "string",      "progress_tool": "string",      "progress_turns": 0,      "released_at": "string",      "runner_id": "string",      "taken_at": "string",      "turn_id": "string"    }  ],  "runner": {    "account_id": "string",    "always_on": true,    "arch": "string",    "capacity": 0,    "created_at": "string",    "effective_capacity": 0,    "holder_subject": "string",    "image_digest": "string",    "kinds": [      "string"    ],    "labels": [      "string"    ],    "last_seen_at": "string",    "machine_provider": "string",    "name": "string",    "os": "string",    "pool_id": "string",    "providers": [      {        "method": "string",        "plan_window_until": "string",        "provider": "string",        "signed_in": true      }    ],    "public_key": "string",    "region": "string",    "resources": {      "cpu_cores": 0,      "disk_bytes": "string",      "memory_bytes": "string"    },    "runner_id": "string",    "shed_reason": "string",    "signals": {      "cache_hit_rate": 0.1,      "cpu_throttle_pct": 0.1,      "disks": [        {          "free_bytes": "string",          "mount": "string",          "total_bytes": "string"        }      ],      "load_1m": 0.1,      "psi_cpu": 0.1,      "psi_io": 0.1,      "psi_memory": 0.1,      "temperatures": [        {          "celsius": 0.1,          "limit_celsius": 0.1,          "sensor": "string"        }      ]    },    "signals_at": "string",    "slots_used": 0,    "status": "string",    "trust_tier": "string",    "user": "string",    "version": "string"  },  "waited_seconds": 0}