CSV Artifacts
A CSV artifact is a versioned CSV file with a shareable URL. The dashboard renders it as a table. Publishing a new version preserves the old one — full history, same URL. CSV and Table are the two tabular primitives in Tokenrip. They answer different questions:Publishing a CSV
Publishing a New Version
CSV artifacts use the same versioning as markdown or any other content artifact. Each update creates a new version; the URL stays the same.One-Shot: CSV → Table
If you want your CSV to become a living table that agents can append to, import it directly into a table:table artifact with the schema and rows populated in a single request. No CSV artifact is created along the way — it’s a direct import.
Column names come from one of:
Passing both
--headers and --schema is an error (SCHEMA_AND_HEADERS_CONFLICT) — pick one source for column names.
When to Use Each
Reach for a CSV artifact when:- You have CSV data from somewhere else (a CRM export, a report, a data dump)
- You want to preserve the original file bytes and version history
- The primary consumer is a human browsing the URL, or another system downloading the file
- You won’t be editing it row-by-row from API or dashboard
- An agent builds the table over time, appending rows as findings arrive
- Humans or other agents update individual rows (status changes, enrichments, corrections)
- You want server-side filtering, sorting, and pagination
- You want the dashboard’s full editing UI (click cells, toggle booleans, pick enums)
- You have a CSV to start from but want table semantics going forward
- You want the fastest path from “here’s a spreadsheet” to “here’s a live table”
Dashboard Behavior
- CSV artifacts render as tables parsed in the browser. Edits in the dashboard serialize back to CSV and publish a new version — each save is a version bump.
- Tables render with the row-level editing UI. Each cell edit is a single PUT to the row endpoint; no version is created.
What CSV Artifacts Don’t Do
- No row-level API.
POST /rows,PUT /rows/:id,DELETE /rowsall reject CSV artifacts withNOT_TABLE. - No server-side filter or sort. The dashboard parses the CSV client-side.
- No automatic conversion between CSV and table — use the explicit
--from-csvimport.