ConceptConcepts

The media library

Every project has a media library — upload documents, images, video and audio once, extract text from documents, and hand any file to your agents' workspace or back out as a download.

Updated Oct 8, 2026

Every project has a media library at /a/<slug>/p/<project>/media. It is the place files live before and after agent work: the PDF you want summarised, the screenshot you want compared, the video you want transcribed, and the image or document an agent produced. A file in the library is an artifact — it has an id, a kind, a status and a lineage — and the same artifact can be sent into an agent's workspace, extracted to text, or downloaded, without ever being uploaded twice.

What goes in

Four kinds of artifact, by content type:

KindExamplesPer-file cap
documentPDF, DOCX, Markdown, plain text50 MB
imagePNG, JPEG, WebP, SVG500 MB
videoMP4, WebM, MOV500 MB
audioMP3, WAV, M4A500 MB

Uploads go straight from your browser to storage on a short-lived signed URL; the file never passes through a connect0 server. The tile appears as pending the moment you drop the file and flips to ready when the bytes are confirmed. Stored files count against your plan's Storage Credits — see Storage below and Credits and pricing.

Three origins are recorded on every artifact so you can always tell where a file came from: uploaded (you), generated (an agent or a media skill produced it) and derived (made from another artifact — for example the text extracted from a PDF, linked to its parent).

The Media tab

  • Upload — the button, or drag files onto the grid. Several files at once are fine; each becomes its own artifact and shows its own progress while it uploads.
  • Filter by kind, and by source — the library, the workspace, or both. Every card shows a preview: a PDF's first page, a document's page outline, a video's frame, an audio waveform (WAV, MP3, M4A, OGG, FLAC), the image itself; it paints a pixelated placeholder while the preview loads. The grid is grouped by date — today, yesterday, this week, then by month.
  • Smart collections — one tap lists Starred, Made by agents this week, Unused and large (the tidy-up list), Used in conversations or From e-mail. Save as collection keeps the filters you set under a name of your own, for the project or for the whole account.
  • Open a card to slide in its properties: the preview, the details (type, size, dimensions, pages, dates), where it came from (who or which agent made it, the model, the file it was made from) and where it is used (conversations, records it is attached to, files made from it, shares). A file nothing uses says so — that is the one you can delete without a second thought.
  • View full screen — the preview opens in a viewer; the arrow keys step through the files the grid shows, Escape closes it.
  • Rename a file and star it from its properties (or star it on the card). A rename keeps the file's type: the extension stays.
  • Select several cards with their checkboxes (or select all) to tag, share or delete them together.
  • Extract text (documents) — queues a job that produces a derived document artifact in Markdown: the agent-readable form of a PDF or DOCX. The job runs in the background; the tile resolves in place.
  • Send to workspace — copies the artifact into the project's workspace at /workspace/media/<filename> so every agent on the project can read it with sh (cat /workspace/media/report.md).
  • Workspace files — media your agents write under /workspace appear on the grid with a Workspace badge. The first time you share, tag, download or extract one, it becomes a library artifact.
  • Download — a signed link, valid for a few minutes.
  • Delete — removes the artifact from the library. The bytes are garbage-collected seven days later; until then the row keeps its lineage for the audit trail.

Every project at once

The account's Media page (/a/<slug>/media) shows the library of every project in the account on one grid, each card naming its project, with the same filters, collections and properties. Any member of the account can open it — it shows exactly the files they could open project by project. Upload into a project from its own Media tab; workspace files an agent has not used yet are listed on the project's tab.

Library versus workspace

The library and the workspace are two different places on purpose:

  • The library is durable, project-scoped, content-hashed on arrival, and visible in the dashboard. It is where humans put things and where finished results live.
  • The workspace (/workspace/…) is the working directory an agent's sandbox sees — connectors mount under /workspace/connectors/, uploads land under /workspace/media/. It is what tools like sh read and write.

Crossing the wall is always an act — Send to workspace one way; the first share, tag, download or extraction of a workspace file the other (or media.adopt_workspace_file from an agent) — so nothing an agent writes becomes a shared file until someone uses it, and nothing you upload is silently exposed to a sandbox.

From an agent

Today an agent reaches library content through the workspace: send the artifact (or its extracted text) to the workspace and the agent reads it with sh; anything the agent writes under /workspace shows up on the Media tab and joins the library on first use. Everything on the Media tab is also an MCP tool — media.list (with the same filters, or a collection_id), media.list_account, media.get, media.rename, media.star, media.list_collections and the collection create, update and delete tools, media.storage. Direct media skills — reading a document by artifact id, generating images, video or audio into the library — are the next phase of the media pipeline and will appear in the skills catalog when they ship.

Limits and safety

  • Per-file caps as in the table above; a larger file is refused at upload time with the cap in the message.
  • A file that turns out larger than its cap fails on claim (size_cap_exceeded) instead of being kept.
  • Storage. Media counts against the Storage Credits your plan includes (the Storage Credits / month column on pricing; files count at the files-and-media weight). Generated previews do not count — they are ours. The Media tab shows a bar that turns amber from three quarters and red at the limit, and what storage past it costs per GiB a month (the storage rate on pricing, in credits).
    • On Free, uploads stop at the limit: an upload that would go over is refused (media_quota_exceeded), and an inbound e-mail attachment that would go over is left out of the library while the e-mail itself still reaches the agent. Every file you stored stays. Deleting files frees the space.
    • On a paid plan, uploads keep going. The storage past your Storage Credits is measured once a day and billed in credits at the price the bar shows, prorated by the day; the Media tab and media.storage show what it has cost this month.
    • An operator can set a different limit for one account.
  • Artifacts are scoped to the project: a member of the project can see and use them, an agent on the project can read what was sent to its workspace, and nobody else can.
  • Every artifact records who created it and, for derived files, which artifact it came from.

Where to go next

  • Media library quickstart — upload a PDF, extract its text, and have an agent read it, in five minutes.
  • Connect a data source — for sources that should stay live (a repo, a database, a SaaS tool) rather than a one-off file.

Ask Zero

Ask a question about connect0 and get an answer grounded in the docs, with links to the sources. Signed in? Zero answers with your account in mind.