Artifacts, files & deliverables
Work isn’t done when the agent says so — it’s done when you can open the file, read it, and take it with you. This page is the path a deliverable travels, in and out.
Everything that arrives in your workspace — a website, a PDF, a cleaned-up dataset, an edited image — moves through the same small set of surfaces: the download card in chat, the artifact panel beside it, and the plain files underneath. Knowing the path matters twice over: it’s how you get your work out, and it’s how you stay sure that nothing is hidden behind an agent’s summary. In Sonderr the deliverable is a real file on your machine, served by a local API you can inspect — never a blob that lives inside somebody’s cloud session.
1 · From deliverable to download card
When the model finishes a deliverable it calls present_file, and the chat renders a download card — a compact, named representation of the file, served by the sandboxed local API that the workspace itself runs on. The card is not a screenshot of the work and not a description of it; it’s the actual file, one click away. This is a deliberate honesty mechanism: “done” claims are cheap, but a card backed by a real file either opens or it doesn’t.
Clicking the card opens the artifact panel: a side column that goes full-screen on mobile, showing a live preview of the deliverable with copy and download actions in the header. ESC closes it. The panel exists so that reviewing work doesn’t mean downloading everything just to look — read it in place, then decide.
2 · What the panel can preview
The preview body adapts to the file type instead of dumping raw bytes:
- Markdown renders as formatted text, so documents read like documents.
- Code arrives syntax-styled — review the diff-worthy details in place.
- JSON comes pretty-printed, so API responses and configs are actually readable.
- CSV / TSV render as a real table — data files become scannable instead of a comma swamp.
- Images show full-bleed on a checkerboard, so you can see exactly where the asset ends.
- Binaries — PDF, ZIP and everything else — land in a download-first state: the panel tells you what it is and hands it over, rather than pretending to preview what it can’t.
The download-first state for binaries is the same honesty rule applied to itself: the panel never fakes a preview. If it can’t render it, it says so and gets out of the way.
3 · Where files actually live
Nothing about this is magic. Your sessions, artifacts and store live under ~/.sonderr/ on your machine, with credentials kept owner-only. Files the agent creates land in your workspace directory like files from any other tool — which means normal file manager, normal backups, normal grep. The full data map, including the app folder and the launcher link, is documented in the CLI reference, and the local-first reasoning behind it is in Your data, your machine.
The practical consequence: deleting Sonderr does not delete your deliverables, and your deliverables do not depend on Sonderr staying installed. A website produced in a Studios run is a folder of files. A report is a PDF. Take them anywhere.
4 · Getting files in: uploads
The + menu in the composer has Upload from device, and the faster paths — clipboard paste and drag & drop — work too, with a drop overlay confirming the zone. Uploaded files are stored under .sonderr/uploads/<session>/ with name de-duplication and a 20 MB cap per file. The storage rule is per-session on purpose: an upload belongs to the conversation that needed it, not to a global pile you’ll never clean out.
What happens next depends on the type. Text files attach as context — the agent reads them like any other material in the task. Images switch Sonderr into Vision mode automatically, because an attached screenshot is usually the task: OCR the receipt, debug the error dialog, match this mockup. Binary files attach as readable references instead of being force-decoded into garbled context — the agent knows what the file is and can work with it honestly rather than hallucinating its contents.
5 · Artifacts stay attached to their task
Deliverables in Sonderr don’t float free of their history. Everything lands in the same live task-card machinery as normal work: the Build task that produced the file keeps its plan, its checkpoints and its evidence, and the artifact arrives attached to the todo item it justifies. When a marathon task runs for hours and produces ten files along the way, you can trace every one back to the step that created it — and every checkpoint forward from the brief that started it.
This is also what makes the checkpoint system more than a crash diary. “Show me the evidence for step 3” works because the evidence — including produced files — is recorded where the steps are. The deliverable and the work are one record, not two.
6 · Taking work out
Three exits, all boring by design. Download from the card or the panel header — the file lands in your browser’s normal download flow. Copy from the panel header for text, code and JSON — formatted output, not a re-render. Or skip both and take the file directly from the workspace directory with your own tooling; the local API serves previews, but it is never a gate around the bytes. Your data has no lock. That’s the point of local-first, and it applies to outputs as much as to sessions.