stella telemetry
Check, send, or delete the managed Oxagen Enterprise data queue. Off by default; needs a signed org enrollment to turn on.
stella telemetry controls the managed Oxagen Enterprise operational spool. This is a queue on your machine that holds content-free summaries of your runs, waiting to be sent to your organization.
It is off by default. If your machine has not been signed up through a managed org enrollment, every subcommand just prints enterprise telemetry: disabled (no managed enrollment) and exits with success. It makes no network calls and does not even build an HTTP client.
To learn what the managed export can and cannot contain, and how enrollment works, see Enterprise telemetry. This page only covers the command itself.
This page is not about your local telemetry. That data lives in .stella/private/store.db. It never leaves your machine on its own. You can read it with stella stats or the Observatory.
Synopsis
stella telemetry <status|flush|rollover-discard>None of the three subcommands need a model provider or an API key. Managed export works independently of your model setup.
Subcommands
stella telemetry status
Shows whether you are enrolled, what is queued, and every loss counter.
stella telemetry statusIf you are not enrolled, it says so. If you are enrolled, it prints one line covering:
pendingRows and bytes waiting to be sent to the current sink.
strandedRows and bytes left over from an old sink. These will never be sent to the new sink. See rollover is not delivery below.
quarantineRows that could not be read. stella keeps some diagnostic details about them.
ledger_skippedRows skipped from the export ledger, split by reason: missing_rollup, malformed_nonce,
malformed_rollup.
physicalHow big the spool file is on disk. This is reported separately from the payload size because SQLite's own overhead (pages, indexes, WAL/SHM files, quarantine data) makes the file bigger than the data it holds.
dropped / corrupt_dropped / rollover_discardedThree running counts of lost rows: rows dropped for running out of space, rows dropped for being corrupt, and rows discarded on purpose during a rollover. Each count only ever goes up.
If your enrollment is invalid or expired, the command fails with a clear error instead of pretending you are still enrolled. This command exists partly to catch a seat that has quietly stopped sending data.
The loss counters are why you should read the full status output, not just glance at it. A pending count of zero can mean "everything was delivered" or "everything was lost." Only dropped, corrupt_dropped, and rollover_discarded tell you which one happened.
stella telemetry flush
Tries to send one batch of data right now, then reports what happened.
stella telemetry flushIt prints how many rows were sent, plus the pending and dropped counts afterward. Every batch has limits:
≤ 50 eventsThe most events allowed in one batch.
≤ 256 KiBThe most data allowed in one request.
30-second leaseRows are checked out, not deleted right away. If the flush crashes, the rows go back in the queue instead of being lost.
Delivery is at least once, and each row only goes to the sink it belongs to. A row is only marked as sent after a successful HTTPS response, and redirects are never followed. If sending fails for any reason (bad credentials, network trouble, server error), the row goes back in the queue and stella waits before trying again. The wait grows each time, from one second up to five minutes, with some randomness added (up to 25%) so retries do not pile up all at once.
stella already starts a quiet, best-effort flush on its own right after your enrollment is verified when it starts up. That attempt never slows down the agent, and stella does not wait for it to finish before shutting down. Run flush yourself when you need a delivery attempt that finishes before you move on, for example before taking a machine down for maintenance, or to check that a change to your org's intake worked.
stella telemetry rollover-discard
Permanently deletes rows left over from an old sink.
stella telemetry rollover-discardThis is the only destructive subcommand. It deletes the leftover rows for good and adds their count to the rollover_discarded total. There is no undo, and these rows were never delivered anywhere.
Rollover is not delivery
When your organization's sink changes, rows that were queued for the old sink are not automatically moved to the new one. Sending an organization's data to a sink it never approved would quietly reroute that data, so instead those rows become stranded. They stay stranded until you either restore the old enrollment, at which point they deliver as normal, or run rollover-discard to remove them.
Deleting stranded rows is always something you choose to do, and it is always counted. Rows lost to running out of space, rows lost to corruption, and rows lost to a rollover each get their own counter, so none of them can be mistaken for a successful delivery.
Exit behavior
Not being enrolled is not an error. All three subcommands print the disabled message and exit with code 0. That makes it safe to call this command from a script on any machine, whether or not it has a seat. A broken or expired enrollment is different: that is an error. The difference is between "this machine has no seat" and "this machine has a seat that stopped working."
See also
- Enterprise telemetry boundary — what enrollment does, what gets exported, and what it can never contain.
stella stats— your local, unmanaged cost and token numbers.stella cloud— the separatedrainpipe, with its own format and endpoint.