Artifacts & storage

Copied screenshots, downloads, and artifact blobs are kept 7 days by default, then deleted. Enterprise workspaces can set 24 hours, 7 days, or 30 days; zero-retention is a contract term. See Data handling & retention for the full table (what is copied vs linked, session-replay TTLs, DELETE a run, and what benchmarks actually store).

Every runner maps into the same canonical fields under banana_peel (banana_peel.run/v1). If a runner cannot capture a screenshot or download, those fields are null / empty — never a different schema.

Screenshots

  • Browser-backed runners often return a final JPEG/PNG in banana_peel.screenshot.
  • Hosted agents may supply step frames or a last frame; when unavailable, screenshot_unavailable_reason explains why.
  • Read-only extractors typically have no screenshot.

Downloads

  • Files the run downloads are captured and hosted by Banana Peel: they appear in banana_peel.artifacts with id, kind: "download", content_type (sniffed from magic bytes), size, and a retrieval url.
  • The url is the authenticated endpoint GET /v1/responses/:id/artifacts/:artifactId (same API-key auth as the run, scoped to your workspace). It 302-redirects to a short-lived signed URL (~10 minutes) or streams the bytes directly.
  • Caps: 30 MB per file, 10 artifacts per run. Oversize files keep metadata with an unavailable_reason.
  • Delivery honesty: when a task asks for a download, banana_peel.deliverables reports claimed vs delivered with a verdict (delivered / partial / not_delivered). A run that claims downloads but delivers zero captured files is reported as failed — provider-session download links expire when the browser session ends and do not count as delivery. In structured output, download_triggered means the click happened in-session; file_delivered means the file was actually captured.
  • Runner support varies: hosted agents with file APIs (Browser-Use, Skyvern, Deck), local and MCP browsers, and Browserbase/Steel sessions deliver file bytes; pure extract/search APIs cannot. Smart routing prefers delivery-capable runners for download tasks.

Sessions & replay

banana_peel.session may include live_url, replay_url, and connect_url when the runner provides them. See the capability matrix.

Command Palette

Search for a command to run...