inis.run

Artifacts

Capture files a session produces to durable storage and get pre-signed download links that outlive the session.

What artifacts are

A session is ephemeral — when it is torn down, its filesystem is gone. Artifacts let you keep the files a session produced. You name the paths to capture; inis.run tars them out of the session, writes them to durable storage, and hands back pre-signed download links. The links need no auth header and outlive the session.

Typical uses: a generated report or chart, a model checkpoint, a CSV an agent built, the output of a batch job.

Capture on demand

Capture from a live session at any time. The call returns immediately with a pending artifact; the upload runs in the background.

inis sessions artifacts capture <session-id> \
  --path '/workspace/output/**' \
  --path '/workspace/*.csv'
art = session.capture_artifacts(["/workspace/output/**", "/workspace/*.csv"])
# poll until ready
art = client.artifacts.get(art.id)
for f in art.files:
    print(f.path, f.url)
let art = await session.captureArtifacts(["/workspace/output/**", "/workspace/*.csv"]);
art = await client.artifacts.get(art.id);
for (const f of art.files ?? []) console.log(f.path, f.url);

Path syntax

  • An exact path: /workspace/report.pdf
  • A bare directory, captured recursively: /workspace/output (same as /workspace/output/**)
  • A shallow glob: /workspace/*.csv
  • A recursive glob: /workspace/output/**
  • A bare relative path, resolved under the workspace: output/** (same as /workspace/output/**)

Captures are scoped to the session workspace (/workspace) — the writable area where session files live. Paths outside it are rejected. A capture has a per-capture size cap (1 GiB by default) and a file-count cap (10,000). Exceeding either fails the capture rather than truncating it.

Auto-capture on teardown

Declare the paths at create time and they are captured automatically when the session is torn down — explicit destroy, idle timeout, or max-lifetime. Teardown holds the session live just long enough to finish the capture, with a time cap so it can never block forever; if the cap is hit the artifact is marked failed and teardown proceeds.

inis sessions create --artifact-path '/workspace/output/**'
{
  "artifacts": { "paths": ["/workspace/output/**"] }
}

Manifest

Getting an artifact returns its manifest:

{
  "id": "art_…",
  "session_id": "…",
  "status": "ready",
  "captured_at": "2026-06-23T18:00:00Z",
  "expires_at": "2026-06-30T18:00:00Z",
  "files": [
    { "path": "output/chart.png", "url": "https://…", "size_bytes": 20480, "content_type": "image/png" }
  ]
}

status is pending, ready, or failed. The url on each file is a pre-signed, direct-download link.

Retention

Artifacts are retained for 7 days by default, then purged from storage. Push the expiry forward (up to a 30-day cap) with extend:

inis artifacts extend <artifact-id> --ttl-days 30

Delete early to free storage:

inis artifacts delete <artifact-id>

Where files are stored

By default, files land in inis.run's own EU object store (built and run in Ireland). You can also send a capture to your own EU bucket — set the destination on the capture:

{
  "paths": ["/workspace/output/**"],
  "destination": { "type": "s3", "bucket": "my-eu-bucket", "region": "eu-central-1" }
}

Bring-your-own-bucket keeps captured data entirely in storage you control. EU residency is a hard constraint — there is no US default.

Billing

Artifact storage is billed by GB-days: the total size of your stored artifacts multiplied by the days they are retained. Captures count against per-capture and per-customer size limits; purged artifacts stop accruing storage charges.

On this page