Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cirron.com/llms.txt

Use this file to discover all available pages before exploring further.

cirron spool

Manage the local spool directory where the Cirron Python SDK writes trace batches while ci.profile() is active. Spool files accumulate in ./.cirron/spool/ and contain JSON batches of spans and marks produced by your training or inference code. The spool command group is the setup path for external runs — laptops, notebooks, or customer servers that aren’t on platform-managed compute. It lets you see what the SDK has buffered locally, push those batches to the platform, or reclaim disk by clearing them.

Subcommands

  • cirron spool inspect — List spool files with sizes and timestamps
  • cirron spool flush — Upload buffered batches to the platform
  • cirron spool clear — Delete local spool files

Usage

cirron spool inspect [--dir <path>] [--json]
cirron spool flush   [--dir <path>]
cirron spool clear   [--dir <path>] [--force]

Options

OptionDescriptionDefault
--dir <path>Override the spool directory./.cirron/spool (current working directory)
--jsonEmit machine-readable JSON (inspect only)
--forceSkip the confirmation prompt (clear only)

Subcommand Details

Inspect the Spool

List every batch file in the spool with its timestamp and size, plus a header summary and oldest/newest footer.
# Inspect the default ./.cirron/spool directory
cirron spool inspect

# Inspect a custom directory (e.g. a saved-off run)
cirron spool inspect --dir /path/to/runs/run-42/.cirron/spool

# Machine-readable JSON output
cirron spool inspect --json

Example Output

Spool: /Users/alice/projects/resnet50/.cirron/spool  (3 files, 2.51 MB)
┌──────────────────────────┬─────────┬────────────────────────────────────────────────────────────┐
│ Timestamp                │    Size │ File                                                       │
├──────────────────────────┼─────────┼────────────────────────────────────────────────────────────┤
│ 2026-04-18T04:29:58.051Z │ 2.50 MB │ 01776486598051509000-446a507b2456443f923f85774a0854e3.json │
│ 2026-04-18T04:29:58.073Z │    6 KB │ 01776486598073663000-b38212eb3835460ab6f2345a7ee3fd4c.json │
│ 2026-04-18T04:30:01.204Z │    9 KB │ 01776486601204118000-ff11aa22cc334455667788999aabbccdd.json │
└──────────────────────────┴─────────┴────────────────────────────────────────────────────────────┘
Oldest: 2026-04-18T04:29:58.051Z   Newest: 2026-04-18T04:30:01.204Z

Empty Spool Output

No spool files found in /Users/alice/projects/resnet50/.cirron/spool

JSON Output

{
  "dir": "/Users/alice/projects/resnet50/.cirron/spool",
  "files": 2,
  "totalBytes": 2633547,
  "oldest": {
    "name": "01776486598051509000-446a507b2456443f923f85774a0854e3.json",
    "createdNs": "1776486598051509000",
    "iso": "2026-04-18T04:29:58.051Z"
  },
  "newest": {
    "name": "01776486598073663000-b38212eb3835460ab6f2345a7ee3fd4c.json",
    "createdNs": "1776486598073663000",
    "iso": "2026-04-18T04:29:58.073Z"
  },
  "entries": [
    { "name": "01776486598051509000-446a507b2456443f923f85774a0854e3.json", "size": 2633103, "createdNs": "1776486598051509000", "iso": "2026-04-18T04:29:58.051Z" },
    { "name": "01776486598073663000-b38212eb3835460ab6f2345a7ee3fd4c.json", "size": 444,     "createdNs": "1776486598073663000", "iso": "2026-04-18T04:29:58.073Z" }
  ]
}

Flush the Spool

Upload every batch file to the platform’s trace ingest endpoint, then delete each file after it’s acknowledged. Files are sent in oldest-first order. Batches are gzip-compressed when larger than 1 KB.
# Flush the default directory
cirron spool flush

# Flush a saved directory after travelling between networks
cirron spool flush --dir ./archive/.cirron/spool
Flush uses the credentials stored by cirron auth login (~/.cirron/config.json). Before sending any batch, the CLI verifies your token is still valid and transparently refreshes it if it’s close to expiry. If verification returns 401/403, the flush is aborted with a prompt to re-authenticate. Each upload has a request timeout (governed by config.timeout) and retries up to three times on transient failures (5xx, 429, network errors) with exponential backoff. Rate-limited responses respect the Retry-After header.

Example Output

Uploaded: 2  Failed: 0  Skipped: 0

Partial Failure

If a fatal error occurs mid-flush (e.g. an authentication issue or an unrecoverable 4xx), remaining batches stay in the spool and can be retried on the next run:
Error: Auth rejected (401) for 01776486598051509000-446a507b2456443f923f85774a0854e3.json. Run cirron auth login.
Warning: Stopping flush; 1 batch left in spool.
Uploaded: 0  Failed: 1  Skipped: 1

Missing Ingest Route

If the platform you’re pointing at doesn’t expose /api/traces yet, flush fails fast with a clear message and leaves your spool intact:
Error: Ingest route /api/traces not available on https://app.cirron.com (404). Platform may not have shipped the route yet.

Clear the Spool

Delete every batch file in the spool directory. By default you’re shown a summary and asked to confirm; use --force to skip the prompt (useful in scripts).
# Interactive clear
cirron spool clear

# Non-interactive clear
cirron spool clear --force

# Clear a specific directory
cirron spool clear --dir ./archive/.cirron/spool

Confirmation Prompt

? Delete 3 spool files (2.51 MB) from /Users/alice/projects/resnet50/.cirron/spool? (y/N)

Example Output

Success: Deleted 3 spool files.

How It Works

The Python SDK writes spool files when ci.profile() is active. Each file is a JSON batch containing spans and marks from one flush interval (roughly 1 second of runtime). File names encode a nanosecond-precision timestamp plus a batch ID, which the CLI parses to present ordered results without reading each file’s contents. Spool files are the public local artifact of the SDK — they work standalone and can be consumed by third-party tools. Flushing to the platform is optional; many teams run profilers on disconnected laptops or air-gapped machines and simply archive the spool directory. The CLI’s spool commands are a lightweight inspection surface:
  • inspect shows the file-system inventory without parsing batch contents.
  • flush uploads exactly the JSON the SDK produced, no transformation.
  • clear is a plain directory delete.
For rich content viewing (flamegraphs, scope trees, mark plots), use cirron traces view instead.

Authentication

spool flush requires CLI authentication. inspect and clear are offline operations.
# Authenticate first
cirron auth login

# Then flush
cirron spool flush
If no credentials are found, flush aborts with:
Error: Not authenticated. Run cirron auth login first.

Error Handling

Common Errors

Not Authenticated

Error: Not authenticated. Run cirron auth login first.
Solution: Run cirron auth login.

Auth Expired

Error: Authentication invalid. Run cirron auth login first.
Solution: The CLI attempted a silent token refresh and the refresh token itself has expired. Re-authenticate with cirron auth login.

Upload Timeout

Error: Network error uploading <file>: timed out after 30000ms
Solutions: Check your network, then re-run cirron spool flush. The failed batch remains on disk and will be retried.
Error: Uploaded <file> but failed to delete local spool file <path>: <reason>. It may be re-uploaded on next flush.
Solutions: Check file-system permissions on the spool directory. The batch was successfully ingested; you can safely delete the local file manually.

Examples

Disconnected Laptop Workflow

# Train on a plane — no network needed
python train.py

# Back online: check what's queued
cirron spool inspect

# Push to platform
cirron auth login
cirron spool flush

Archive and Ship a Spool

# Copy the spool to a shared location
cp -r .cirron /mnt/shared/runs/run-42

# Later, from another machine
cirron spool inspect --dir /mnt/shared/runs/run-42/.cirron/spool
cirron spool flush   --dir /mnt/shared/runs/run-42/.cirron/spool

Reclaim Disk

# See what's taking up space
cirron spool inspect

# Wipe after confirming upload
cirron spool flush
cirron spool clear --force
  • cirron auth — Manage authentication (required for flush)
  • cirron status — Check CLI status
  • cirron config — Manage CLI configuration (apiUrl, timeout, etc.)