> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentsfleet.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a fleet runner

> Platform-admin read of a single runner. Carries the summary fields, a live-work snapshot, and lifetime counters from durable lease and event rows — never from in-memory metrics. The runner detail page loads from this read.



## OpenAPI

````yaml https://raw.githubusercontent.com/agentsfleet/agentsfleet/main/public/openapi.json get /v1/fleets/runners/{id}
openapi: 3.1.0
info:
  title: agentsfleet Control Plane API
  version: 1.0.0
  description: API for managing workspaces, fleets, triggers, and runs.
  contact:
    name: agentsfleet
    url: https://agentsfleet.net
servers:
  - url: https://api.agentsfleet.net
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Health
    description: System status and readiness probes
    x-mintlify:
      navigation: Health
  - name: Authentication
    description: Command Line Interface (CLI) sign-in sessions and GitHub sign-in
    x-mintlify:
      navigation: Authentication
  - name: Workspaces
    description: Create and manage workspaces
    x-mintlify:
      navigation: Workspaces
  - name: Tenant
    description: Manage tenant provider settings and models
    x-mintlify:
      navigation: Tenant
  - name: auth-identity-events
    description: >-
      Process signed account events from Clerk. This route is not for customer
      fleets.
    x-mintlify:
      navigation: Auth Identity Events
  - name: Fleets
    description: Create, configure, and run fleets
    x-mintlify:
      navigation: Fleets
  - name: Schedules
    description: Manage and receive scheduled Fleet events
    x-mintlify:
      navigation: Schedules
  - name: Memory
    description: Read and search saved fleet memory
    x-mintlify:
      navigation: Memory
  - name: Secrets
    description: Manage named secrets for fleets in a workspace
    x-mintlify:
      navigation: Secrets
  - name: Admin
    description: Manage shared provider keys and models
    x-mintlify:
      navigation: Admin
  - name: Billing
    description: Read tenant balances and charge records
    x-mintlify:
      navigation: Billing
  - name: Integration Grants
    description: Manage fleet access to third-party services
    x-mintlify:
      navigation: Integration Grants
  - name: Connectors
    description: Connect workspaces to third-party providers
    x-mintlify:
      navigation: Connectors
  - name: Fleet Keys
    description: Manage keys that let external clients call a fleet
    x-mintlify:
      navigation: Fleet Keys
  - name: API Keys
    description: Manage tenant admin API keys
    x-mintlify:
      navigation: API Keys
  - name: Webhooks
    description: Receive signed events and approval decisions
    x-mintlify:
      navigation: Webhooks
  - name: Approvals
    description: List, inspect, and resolve pending approvals
    x-mintlify:
      navigation: Approvals
  - name: Fleet
    description: Enroll and manage runners
    x-mintlify:
      navigation: Fleet
  - name: Fleet Bundles
    description: Manage fleet source bundles in a workspace
    x-mintlify:
      navigation: Fleet Bundles
  - name: Fleet library
    description: Browse and add reusable fleet sources
    x-mintlify:
      navigation: Fleet library
  - name: Model Library
    description: List models available to the tenant
    x-mintlify:
      navigation: Model Library
paths:
  /v1/fleets/runners/{id}:
    get:
      tags:
        - Fleet
      summary: Get a fleet runner
      description: >-
        Platform-admin read of a single runner. Carries the summary fields, a
        live-work snapshot, and lifetime counters from durable lease and event
        rows — never from in-memory metrics. The runner detail page loads from
        this read.
      operationId: get_fleet_runner
      parameters:
        - name: id
          in: path
          required: true
          description: Runner id (UUIDv7).
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: The runner.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RunnerDetail'
        '404':
          $ref: '#/components/responses/Error'
          description: No runner with this id (`UZ-RUN-014`).
        default:
          $ref: '#/components/responses/Error'
components:
  schemas:
    RunnerDetail:
      type: object
      description: >-
        A single runner as the operator plane reads it. Carries the summary
        fields (including the assigned-vs-achievable policy pair and the
        degraded verdict), a live-work snapshot, and lifetime counters from
        durable lease and event rows. The auth `token_hash` and stored auth
        state are never returned.
      required:
        - id
        - host_id
        - sandbox_tier
        - admin_state
        - liveness
        - labels
        - last_seen_at
        - created_at
        - degraded
        - active_lease_count
        - active_fleet_count
        - leases_acquired
        - leases_succeeded
        - leases_failed
        - leases_expired
      properties:
        assigned_policy:
          $ref: '#/components/schemas/RunnerAssignedPolicy'
          nullable: true
          description: >-
            The assignment this runner must satisfy. Null only for a runner
            enrolled before policy assignment existed; such a runner reads
            degraded until an operator assigns a policy.
        achievable:
          $ref: '#/components/schemas/RunnerCapabilityReport'
          nullable: true
          description: >-
            The host's last capability report. Null until the runner's first
            report arrives.
        degraded:
          type: boolean
          description: >-
            True when the assigned policy exceeds what the host reported it can
            enforce (or no report has arrived). A degraded runner is issued no
            leases.
        degraded_reason:
          type: string
          nullable: true
          description: >-
            The specific missing mechanism (for example `cgroup controllers not
            delegated`), mapping to a step in the runner bootstrap playbook.
            Null when not degraded.
        id:
          type: string
          format: uuid
        host_id:
          type: string
        sandbox_tier:
          $ref: '#/components/schemas/RunnerSandboxTier'
        admin_state:
          type: string
          description: Operator setting. Only `active` accepts runner requests.
          enum:
            - active
            - cordoned
            - draining
            - drained
            - revoked
        liveness:
          type: string
          description: >-
            Derived runtime liveness. `registered` = minted, never seen; `busy`
            = holds a live lease; `online` = heartbeat fresh; `offline` =
            heartbeat stale.
          enum:
            - registered
            - busy
            - online
            - offline
        labels:
          type: array
          items:
            type: string
        last_seen_at:
          type: integer
          format: int64
          description: Epoch milliseconds of the last heartbeat; 0 if never seen.
        created_at:
          type: integer
          format: int64
          description: Epoch milliseconds the runner was registered.
        active_lease_count:
          type: integer
          format: int64
          description: >-
            Leases currently live (status active and deadline in the future). A
            stale active row past its deadline counts as neither live nor
            expired until reclaim marks it.
        active_fleet_count:
          type: integer
          format: int64
          description: Distinct fleets across the live leases only.
        leases_acquired:
          type: integer
          format: int64
          description: >-
            Every lease this runner has ever been issued (lifetime, from durable
            rows).
        leases_succeeded:
          type: integer
          format: int64
          description: Reported leases whose Fleet event settled processed.
        leases_failed:
          type: integer
          format: int64
          description: Reported leases whose Fleet event settled fleet_error.
        leases_expired:
          type: integer
          format: int64
          description: >-
            Leases the runner stopped renewing; the work was re-leased to
            another runner.
    RunnerAssignedPolicy:
      type: object
      description: >-
        The policy assigned to one runner. agentsfleet delivers it to the host
        on enrollment and on every heartbeat. The host never declares its own
        policy.
      required:
        - sandbox_tier
        - network_policy
        - registry_allowlist
        - worker_count
      properties:
        sandbox_tier:
          $ref: '#/components/schemas/RunnerSandboxTier'
        network_policy:
          $ref: '#/components/schemas/RunnerNetworkPolicy'
        registry_allowlist:
          type: array
          description: >-
            Operator registry baseline merged into each lease's egress
            allowlist. Empty = the runner substitutes its default registry set.
            Entries are `host[:port]` names; at most 32.
          maxItems: 32
          items:
            type: string
        worker_count:
          type: integer
          description: >-
            Concurrent workers on the host. Clamped server-side into [1, 64];
            the stored (clamped) value is echoed back.
          minimum: 1
          maximum: 64
    RunnerCapabilityReport:
      type: object
      description: >-
        What a runner host's kernel can actually enforce, as the host last
        reported it. Unauthenticated self-assertion — agentsfleet reconciles it
        against the assigned policy to compute `degraded`, but a compromised
        host can lie; placement trust stays operator-assigned.
      required:
        - landlock
        - seccomp
        - cgroup_controllers
        - bubblewrap
        - egress_enforcement
      properties:
        landlock:
          type: boolean
          description: The kernel offers Landlock filesystem sandboxing.
        seccomp:
          type: boolean
          description: A seccomp system-call filter can be installed.
        cgroup_controllers:
          type: array
          description: >-
            Controllers present in the delegated cgroup subtree (`cpu`,
            `memory`, `pids` are required for cage-building tiers).
          items:
            type: string
        bubblewrap:
          type: boolean
          description: The bubblewrap sandbox helper is present on the host.
        egress_enforcement:
          type: boolean
          description: >-
            Kernel-enforced egress allowlisting is available in this runner
            build. Always false until that wiring ships; a runner assigned
            `allow_list_egress` reads as degraded rather than silently refusing
            work.
    RunnerSandboxTier:
      type: string
      description: >-
        Isolation strength the operator assigns to a runner. The host applies it
        and reports what it can deliver. A host that cannot meet the assignment
        is marked degraded and receives no work. Only tiers with real
        enforcement are assignable.
      enum:
        - landlock_full
        - container_nested
        - dev_none
    ErrorBody:
      type: object
      description: RFC 7807 problem detail error response (application/problem+json)
      required:
        - docs_uri
        - title
        - detail
        - error_code
        - request_id
      properties:
        docs_uri:
          type: string
          format: uri
          description: Stable link to documentation for this error code
          example: https://docs.agentsfleet.net/api-reference/error-codes#UZ-AGT-009
        title:
          type: string
          description: Short human-readable label, same for every occurrence of this code
          example: Fleet not found
        detail:
          type: string
          description: Instance-specific context describing what went wrong
          example: No fleet with id 'abc123' in this workspace.
        error_code:
          type: string
          description: Machine-readable error code
          example: UZ-AGT-009
        request_id:
          type: string
          description: Correlation ID for this request
        current_state:
          type: string
          description: >-
            Resource state that blocked the requested change. Present only on
            409 responses.
          example: paused
        user_message:
          type: string
          description: >
            Plain message safe to show to a user. Present only when an error
            defines one.


            Use `detail` or `title` when this field is absent.
          example: >-
            We couldn't find that Fleet. It may have been deleted, or the ID
            doesn't match one in this workspace.
        etag:
          type: string
          description: >-
            Resource version returned on 412 responses so the caller can refetch
            and retry.
    RunnerNetworkPolicy:
      type: string
      description: >-
        Network access assigned to a runner's sandboxed work. `allow_all` allows
        all outbound traffic. `deny_all_egress` allows none. `allow_list_egress`
        limits outbound traffic to an approved list. That mode is not available
        yet; a runner assigned it is marked degraded and refuses work.
      enum:
        - allow_all
        - deny_all_egress
        - allow_list_egress
  responses:
    Error:
      description: RFC 7807 problem detail error response
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Obtain a token via the CLI auth flow (POST /v1/auth/sessions) or GitHub
        OAuth

````