co obs — Observability
Service catalog / log search / trace search / single trace view
co obs inspects your workspace's observability signals from the terminal — the service catalog with health, log search, distributed trace search, and the span tree of a single trace. It uses the same filters as the web Observability pages, and every command accepts --web to open the matching page in the browser instead. co observability is an alias.
Query window (shared options)
services / logs / traces all take the same query-window options. The default is the last hour; giving --from / --to switches to an absolute window and --since is ignored.
co obs logs --since 15m
co obs traces --from 2026-09-21T09:00:00Z --to 2026-09-21T10:00:00Zco obs services
Lists the services seen in the window as a table, with their health.
co obs services
co obs services --since 24h
co obs services --env production
co obs services --web| Option | Description |
|---|---|
| --env <env> | Filter by deployment environment |
| --since <dur> | Relative window ending now (e.g. 15m, 1h, 24h, 7d). Default 1h |
| --from <RFC3339> | Absolute window start; overrides --since |
| --to <RFC3339> | Absolute window end; defaults to now |
| --web | Open the matching web page in the browser instead of printing |
| -W, --workspace <slug> | Workspace slug for this run instead of the saved default (global option) |
co obs logs
Searches logs across all services. Levels are not a fixed list — they carry whatever SeverityText each SDK emitted (info · INFO · Information), so --level values are matched as the server stored them.
co obs logs
co obs logs --level ERROR --since 15m
co obs logs --service api-service --grep timeout
co obs logs --level ERROR,WARN -l 200
co obs logs --web| Option | Description |
|---|---|
| --level <l1,l2> | Filter by level (comma-separated, e.g. ERROR,WARN) |
| --service <name> | Filter by service name |
| --grep <text> | Filter by log body substring (server-side) |
| -l, --limit <n> | Maximum log lines to fetch across pages. Default 100 |
| --since <dur> | Relative window ending now (e.g. 15m, 1h, 24h, 7d). Default 1h |
| --from <RFC3339> | Absolute window start; overrides --since |
| --to <RFC3339> | Absolute window end; defaults to now |
| --web | Open the matching web page in the browser instead of printing |
| -W, --workspace <slug> | Workspace slug for this run instead of the saved default (global option) |
co obs traces
Searches distributed traces. Narrow by service, environment, error presence and duration, and pick a sort order.
co obs traces
co obs traces --error --since 15m
co obs traces --service api-service --sort slowest
co obs traces --min-ms 500 --env production
co obs traces --web| Option | Description |
|---|---|
| --service <name> | Filter by service name |
| --env <e1,e2> | Filter by deployment environment (comma-separated) |
| --error | Only traces containing an error span |
| --min-ms <n> | Minimum trace duration in milliseconds |
| --max-ms <n> | Maximum trace duration in milliseconds |
| --sort <order> | Sort order: recent (default) |
| -l, --limit <n> | Maximum traces to fetch across pages. Default 20 |
| --since <dur> | Relative window ending now (e.g. 15m, 1h, 24h, 7d). Default 1h |
| --from <RFC3339> | Absolute window start; overrides --since |
| --to <RFC3339> | Absolute window end; defaults to now |
| --web | Open the matching web page in the browser instead of printing |
| -W, --workspace <slug> | Workspace slug for this run instead of the saved default (global option) |
co obs trace <trace-id>
Shows one trace in detail — summary, per-service self time, and the span tree. Take the trace ID from a co obs traces result.
co obs trace 4bf92f3577b34da6a3ce929d0e0e4736
co obs trace 4bf92f3577b34da6a3ce929d0e0e4736 --web| Option | Description |
|---|---|
| --web | Open the matching web page in the browser instead of printing |
| -W, --workspace <slug> | Workspace slug for this run instead of the saved default (global option) |
Data only appears in workspaces with observability enabled. In environments where observability is not supported yet, the command ends with an error.