Docs
Search docs

Report the runner's display name and machine facts

PUT/api/runners/{runner_id}/machine

reportRunnerMachine

Called by the runner agent on every start. Untrusted input: a well-typed value is never rejected for its content — strings are trimmed, stripped of control and invisible formatting characters and truncated, counts clamped; a value of the wrong JSON type is a 4xx like any malformed body. A `null` name keeps the stored one; every other field is replaced.

Requires authentication using a bearer token — see tokens and scopes.

curl

curl -X PUT 'https://neosource.dev/api/runners/RUNNER_ID/machine' \
  -H 'Authorization: Bearer $NEOSOURCE_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{}'

fetch

fetch("https://neosource.dev/api/runners/RUNNER_ID/machine", {
  method: "PUT",
  headers: {
    Authorization: "Bearer $NEOSOURCE_TOKEN",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({}),
});

Path parameters

runner_idrequired

string

Request bodyrequired

application/json

RunnerMachineInfo

object

What a runner agent reports about the machine it runs on (issue #777): `POST /api/runners` (`machine`) and `PUT /api/runners/{runner_id}/machine`. Every field is optional. A value of the wrong JSON type (a string for `cpu_cores`, a negative `memory_bytes`) fails request extraction like any other malformed body; a well-typed value is never rejected for its content — strings are trimmed, stripped of control and invisible formatting characters and truncated, and counts are clamped — since this is untrusted tenant-hardware input.

agent_version

string | null

Agent build that reported, e.g. `neo 0.1.0 (abc1234)`.

arch

string | null

CPU architecture as Rust's `std::env::consts::ARCH` spells it (`x86_64`, `aarch64`, …). Open vocabulary — render, don't match.

cpu_cores

integer | nullint32

Logical CPUs available to the agent.

cpu_model

string | null

CPU model string, e.g. `AMD Ryzen 9 7950X 16-Core Processor`.

memory_bytes

integer | nullint64

Total physical memory in bytes.

name

string | null

Display name shown in the web UI and `neo runner list`. Defaults to the machine's hostname agent-side. On a report, `null` keeps the name already stored.

os

string | null

Operating system as Rust's `std::env::consts::OS` spells it (`linux`, `macos`, `windows`, …). Open vocabulary — render, don't match.

Responses

204Recorded

Standard errors

Bodies documented once for the whole API — see standard errors.

  • 400Bad Request — one of: invalid_input
  • 401Authentication required
  • 403Forbidden — one of: forbidden
  • 404Not Found — one of: not_found
  • 409Conflict — one of: conflict
  • 429Rate limited — retry after the `Retry-After` header
  • 500Internal server error
  • 503Service temporarily unavailable / at capacity — retry after the `Retry-After` header
  • 504Gateway timeout — the request exceeded the server's handling budget