// Tools

xeroctl slos

Define numeric reliability and latency targets per endpoint, then read live compliance back from the router. Create, update, list, delete, and pull the current breach state from one command surface.

Overview

Service Level Objectives define measurable reliability and performance targets for your inference endpoints. Each SLO specifies a metric, a numeric target value, and an optional evaluation window. The platform continuously evaluates compliance and stores a history of results.

The slos command uses a unified flag-based interface. The action is determined by which flag is present (--create, --update, --delete, --history, --calculate, --summary). Only one action flag may be specified at a time.

Usage Pattern

bash
xeroctl slos # List all SLOs xeroctl slos <id> # Show SLO details xeroctl slos --summary # Show summary with overall compliance xeroctl slos --create --name <n> --metric <m> --target <t> # Create an SLO xeroctl slos <id> --update --name <n> # Update an SLO xeroctl slos <id> --delete # Delete an SLO xeroctl slos <id> --history # Show compliance history xeroctl slos <id> --calculate # Trigger compliance calculation xeroctl slos --endpoint <endpoint-uuid> # List SLOs for an endpoint (UUID)

list

List all SLOs for the project. This is the default action when no ID, --summary, or --endpoint flag is given.

bash
xeroctl slos xeroctl slos --limit 50 xeroctl slos --after 11111111-2222-3333-4444-555555555555

Options

Option Description
--limit <n> Maximum number of results
--after <cursor> Pagination cursor: SLO UUID to start after (e.g., 11111111-2222-3333-4444-555555555555)

Output columns: ID, NAME, METRIC, TARGET, COMPLIANCE, STATUS. COMPLIANCE renders as a percentage in tabular output; the JSON variant exposes a 0.0-1.0 fraction under compliance and a 0-100 value under compliance_percentage. STATUS uses the three values listed in the summary legend.

get

Show full details of a specific SLO including metric, target, evaluation window, endpoint association, compliance percentage, and status.

bash
xeroctl slos 11111111-2222-3333-4444-555555555555 xeroctl slos 11111111-2222-3333-4444-555555555555 -o json

create

Create a new SLO. The --name, --metric, and --target options are all required.

bash
# Total-latency SLO (target in milliseconds, 500 ms here) xeroctl slos --create \ --name "Total Latency" \ --metric total_latency_ms \ --target 500 # Error rate SLO with evaluation window (integer days, 1-90) xeroctl slos --create \ --name "Error Rate" \ --metric error_rate \ --target 0.01 \ --window-days 1 # SLO scoped to a specific endpoint (endpoint UUID, not slug) xeroctl slos --create \ --name "Endpoint TTFT" \ --metric ttft_ms \ --target 200 \ --window-days 7 \ --endpoint 11111111-2222-3333-4444-555555555555 # Dry run (no changes made) xeroctl slos --create \ --name "Test SLO" \ --metric error_rate \ --target 0.05 \ --dry-run

Options

Option Description
--name <name> SLO display name (required)
--metric <metric> Metric to track (required). See Metric Reference.
--target <value> Target value for the metric (required). Numeric. Latency metrics (ttft_ms, tpot_ms, total_latency_ms, exec_duration_ms, exec_approval_latency_ms) are expressed in milliseconds (e.g., 500 for 500 ms). Ratio metrics (error_rate, exec_error_rate) take a 0.0-1.0 fraction (e.g., 0.01 for 1%). Percentage metrics (availability, exec_availability) take a 0-100 value. Throughput (throughput_rps) takes requests/second.
--window-days <days> Rolling evaluation window in whole days, integer between 1 and 90 (optional, defaults to a server-side window). The server rejects any other shape.
--endpoint <endpoint-uuid> Scope SLO to a specific endpoint (optional). On this command the value is the endpoint UUID, not the slug or external id accepted elsewhere in xeroctl.

Note: The router API also requires a comparison operator (one of less_than, less_than_or_equal, greater_than, greater_than_or_equal) on every create. The CLI currently does not expose a flag for it; if your create call is rejected for a missing comparison field, use the HTTP API directly via POST /v1/slos until the CLI is updated.

update

Update an existing SLO. At least one of --name, --target, or --window-days must be provided. The metric of an SLO is immutable after creation; to change the tracked metric, delete the SLO and create a new one.

bash
# Rename xeroctl slos 11111111-2222-3333-4444-555555555555 --update --name "Updated Total Latency" # Tighten the target (milliseconds for latency metrics) xeroctl slos 11111111-2222-3333-4444-555555555555 --update --target 300 # Change the evaluation window (integer days, 1-90) xeroctl slos 11111111-2222-3333-4444-555555555555 --update --window-days 7 # Update multiple fields xeroctl slos 11111111-2222-3333-4444-555555555555 --update --name "Strict Latency" --target 200 --window-days 1

Options

Option Description
--name <name> New SLO display name
--target <value> New target value. Unit follows the SLO's existing metric (milliseconds, ratio, percentage, or requests/second).
--window-days <days> New rolling evaluation window in whole days (1-90)

delete

Delete an SLO and its compliance history. A confirmation prompt is shown by default.

bash
# With confirmation prompt xeroctl slos 11111111-2222-3333-4444-555555555555 --delete # Skip confirmation xeroctl slos 11111111-2222-3333-4444-555555555555 --delete --force # Dry run xeroctl slos 11111111-2222-3333-4444-555555555555 --delete --dry-run

Options

Option Description
--force Skip the confirmation prompt
--dry-run Show what would be deleted without making changes

history

Show the compliance evaluation history for a specific SLO. Each entry represents a single evaluation period with a compliance percentage and pass/fail indicator.

bash
xeroctl slos 11111111-2222-3333-4444-555555555555 --history xeroctl slos 11111111-2222-3333-4444-555555555555 --history --limit 20 xeroctl slos 11111111-2222-3333-4444-555555555555 --history --after aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

Options

Option Description
--limit <n> Maximum number of history entries to return
--after <cursor> Pagination cursor: history entry UUID to start after

Output columns: ID, COMPLIANCE (percentage), IN_COMPLIANCE (yes/no color-coded), EVALUATED_AT.

calculate

Trigger an on-demand compliance calculation for a specific SLO. Returns the current compliance percentage and evaluation timestamp.

bash
xeroctl slos 11111111-2222-3333-4444-555555555555 --calculate xeroctl slos 11111111-2222-3333-4444-555555555555 --calculate -o json

Note: The router may run compliance evaluations in the background for active SLOs; the cadence is not contractually guaranteed. Use --calculate to force an immediate evaluation any time you need a current reading.

summary

Show a summary view of all SLOs in the project, with per-SLO status (met, not_met, or unevaluated). Useful for a quick health check across all defined objectives.

bash
xeroctl slos --summary xeroctl slos --summary -o json

The summary lists every active SLO in the project together with its latest compliance reading. The router-side response also exposes aggregate counts (total_active, total_met, total_not_met, total_unevaluated) via the JSON output.

  • metcompliance equal to or above the target on the latest evaluation
  • not_metcompliance below the target on the latest evaluation
  • unevaluatedno evaluation has run yet, or the window has no data

Endpoint Filter

Filter the SLO list to show only SLOs associated with a specific endpoint.

bash
xeroctl slos --endpoint 11111111-2222-3333-4444-555555555555 xeroctl slos --endpoint 11111111-2222-3333-4444-555555555555 --limit 20

When --endpoint is passed without any other action flag, the command lists all SLOs scoped to that endpoint rather than the full project list.

Flag overload: On the slos command, --endpoint takes an endpoint UUID, not the slug or external id accepted by other xeroctl commands. Pass the UUID exactly as returned by xeroctl endpoints (the id field).

Metric Reference

The --metric option specifies which signal to evaluate. Common metric identifiers:

Metric Description Target Unit
ttft_ms Time to first token, per request Milliseconds
tpot_ms Time per output token, averaged over the response Milliseconds
total_latency_ms Total end-to-end request latency Milliseconds
availability Percentage of successful (non-5xx) responses Percentage (0, 100)
error_rate Fraction of error responses (inverse of availability) Ratio (0.0, 1.0)
throughput_rps Average requests per second over the evaluation window Requests/second
exec_availability XEM execution agent uptime (lease-renewal based) Percentage (0, 100)
exec_duration_ms Per-call XEM tool execution duration Milliseconds
exec_error_rate Fraction of failed XEM executions over total executions Ratio (0.0, 1.0)
exec_approval_latency_ms Time from exec.approval_requested to the terminal exec.approved or exec.rejected transition Milliseconds

Identifiers are case-sensitive. Any value outside the table above is rejected at create time.

Examples

Create a Comprehensive SLO Set

bash
# Total latency SLO, under 500 ms xeroctl slos --create \ --name "Total Latency" \ --metric total_latency_ms \ --target 500 \ --window-days 1 \ --endpoint 11111111-2222-3333-4444-555555555555 # Error rate SLO, less than 1% errors xeroctl slos --create \ --name "Error Rate" \ --metric error_rate \ --target 0.01 \ --window-days 7 \ --endpoint 11111111-2222-3333-4444-555555555555 # List SLOs scoped to that endpoint xeroctl slos --endpoint 11111111-2222-3333-4444-555555555555

Monitor Compliance Over Time

bash
# Project-wide summary xeroctl slos --summary # History for a specific SLO xeroctl slos 11111111-2222-3333-4444-555555555555 --history --limit 30 # On-demand recalculation xeroctl slos 11111111-2222-3333-4444-555555555555 --calculate

Adjust a Target

bash
# Tighten the latency target after infrastructure upgrade xeroctl slos 11111111-2222-3333-4444-555555555555 --update --target 300 # Extend the evaluation window to 30 days xeroctl slos 11111111-2222-3333-4444-555555555555 --update --window-days 30