docs
// Tools

erectl 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
erectl slos # List all SLOs erectl slos <id> # Show SLO details erectl slos --summary # Show summary with overall compliance erectl slos --create --name <n> --metric <m> --target <t> # Create an SLO erectl slos <id> --update --name <n> # Update an SLO erectl slos <id> --delete # Delete an SLO erectl slos <id> --history # Show compliance history erectl slos <id> --calculate # Trigger compliance calculation erectl 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
erectl slos erectl slos --limit 50 erectl 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
erectl slos 11111111-2222-3333-4444-555555555555 erectl 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) erectl slos --create \ --name "Total Latency" \ --metric total_latency_ms \ --target 500 # Error rate SLO with evaluation window (integer days, 1-90) erectl slos --create \ --name "Error Rate" \ --metric error_rate \ --target 0.01 \ --window-days 1 # SLO scoped to a specific endpoint (endpoint UUID, not slug) erectl slos --create \ --name "Endpoint TTFT" \ --metric ttft_ms \ --target 200 \ --window-days 7 \ --endpoint 11111111-2222-3333-4444-555555555555 # Dry run (no changes made) erectl 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 erectl.

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 erectl slos 11111111-2222-3333-4444-555555555555 --update --name "Updated Total Latency" # Tighten the target (milliseconds for latency metrics) erectl slos 11111111-2222-3333-4444-555555555555 --update --target 300 # Change the evaluation window (integer days, 1-90) erectl slos 11111111-2222-3333-4444-555555555555 --update --window-days 7 # Update multiple fields erectl 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 erectl slos 11111111-2222-3333-4444-555555555555 --delete # Skip confirmation erectl slos 11111111-2222-3333-4444-555555555555 --delete --force # Dry run erectl 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
erectl slos 11111111-2222-3333-4444-555555555555 --history erectl slos 11111111-2222-3333-4444-555555555555 --history --limit 20 erectl 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
erectl slos 11111111-2222-3333-4444-555555555555 --calculate erectl 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
erectl slos --summary erectl 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
erectl slos --endpoint 11111111-2222-3333-4444-555555555555 erectl 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 erectl commands. Pass the UUID exactly as returned by erectl 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 EEM execution agent uptime (lease-renewal based) Percentage (0, 100)
exec_duration_ms Per-call EEM tool execution duration Milliseconds
exec_error_rate Fraction of failed EEM 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 erectl 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 erectl 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 erectl slos --endpoint 11111111-2222-3333-4444-555555555555

Monitor Compliance Over Time

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

Adjust a Target

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