SOLWYN
Commands

providers

Recent failover groups — what was requested versus what served — and advisory observations of unmetered provider surfaces

providers has two read-only subcommands. failovers shows where the SDK's router moved traffic and why. untracked shows which provider surfaces your code reached that Solwyn does not meter. Both accept either credential and require a project.

providers failovers

Group the window's failovers by requested identity and served identity.

Terminal
solwyn --project <project_id> providers failovers [--range 24h|7d|30d]
OptionTypeDefaultPurpose
--range24h | 7d | 30d7dAggregation window. Note 24h is available here and 90d is not.
Contract
Authany
Exit codes0 success · 1 generic/API · 2 usage · 3 auth · 5 not found
JSON schemasolwyn.providers.failovers.v1
Terminal
$ solwyn --project proj_0123456789abcdef01234567 providers failovers
Field                                                Value
Project                                      proj_0123456789abcdef01234567
Range                                                   7d
1 route          openai/gpt-5 -> anthropic/claude-sonnet-4
1 reason                                     Primary error
1 error class                                 TimeoutError
1 events                                                 4
1 cost                                           $1.234567
1 first/last   2026-09-01T10:00:00Z / 2026-09-05T12:30:00Z

Each group is the pair of the provider and model you asked for and the one that actually served the call. Known reasons are relabeled for humans — Circuit open, Primary error, Model fallback, Cost routed — and unknown reasons pass through verbatim. The error class is the exception type name, never its message. An unpriced group shows unpriced ($0.000000 reported) instead of a bare zero. A -/- requested identity means the API could not attribute one.

The table shows the top 50 groups, and stderr says so: Showing top 50 groups of an unknown total. The JSON payload lists requested_provider, requested_model, served_provider, served_model, failover_reason, failover_error_class, event_count, total_cost_usd, first_seen, last_seen, and is_unpriced per group. See Provider failover for how the SDK decides to move.

providers untracked

Advisory observations of provider surfaces Solwyn does not meter.

Terminal
solwyn --project <project_id> providers untracked [--range 7d|30d|90d]
OptionTypeDefaultPurpose
--range7d | 30d | 90d7dObservation window, before retention clamping.
Contract
Authany
Exit codes0 success · 1 generic/API · 2 usage · 3 auth · 5 not found
JSON schemasolwyn.providers.untracked.v1

"Untracked" does not mean missing dollars. When the SDK recognizes a client call shape it has no metering rule for, it emits a content-free observation — which provider, client shape, mode, surface, and rule kind — and this command lists them. It tells you where your coverage gap is. The occurrence count is an approximate advisory figure with bounded overcount, and the CLI labels every one as such.

Terminal
$ solwyn --project proj_0123456789abcdef01234567 providers untracked --range 90d
Field                                                               Value
Project                                                     proj_0123456789abcdef01234567
Requested window                                                  90 days
Effective window                                                  30 days
Data retention                                                    30 days
1 identity          openai | chat.completions | sync | responses | direct
1 capability scope                                        responses.write
1 posture                                                     unsupported
1 occurrences                          17 (advisory; never billing truth)
1 first/last                  2026-08-15T10:00:00Z / 2026-09-05T12:30:00Z

The effective window is the requested window clamped to your plan's data retention. The CLI reads the retention from your billing status before the query; if that read fails, both rows show unknown rather than a guess. The table shows the top 25 observations, and stderr says so.

See Surface coverage for how the SDK classifies every provider surface, and for the on_unmetered posture that decides what happens when your code reaches one.

  • status — per-provider circuit state and failover counts, with --failovers to include the top groups
  • costs — filter spend by --failover-reason or --provider-fallback
  • Provider failover — the SDK's routing and circuit breakers

On this page