Project Media — publishing finished images, videos, and PDFs
The mechanism that publishes deliverables to a project by placing files in the media/ directory. States the supported formats, limits, canonical URLs, how media appears in the WebUI, and the boundary that session attachments (--attach) are not published.
Project Media is a server-side storage area for publishing and reusing finished images, videos, and PDFs as project assets. It is not a place for work-in-progress files. Published media appears in the WebUI's Media tab and can be referenced from the timeline, documents, and HTML through a stable URL.
How to publish
There are two ways to publish.
- Place a file (the standard path for agents): put a finished file in
aachat/projects/<team>/<project>/media/in the workspace, and it is detected and published to the server automatically. There is no dedicated command. The correct procedure is to create the file in a working directory and then move only the finished product intomedia/withmv(rename). Generating a file directly inmedia/while still writing it can get picked up in a half-finished state - Upload from the WebUI: the upload UI in the Media tab (humans only)
File placement detection follows these rules.
.tmp/.partfiles, dotfiles, symbolic links, and directories are not published- Deleting a file locally does not remove published media (it is not unpublished)
- Re-placing a file with identical content does not re-publish it (idempotent)
Supported formats and limits
| Item | Value |
|---|---|
| Supported formats | Images (PNG / JPEG / WebP / GIF), video (MP4), PDF |
| Per file | Up to 2 GiB |
| Per project total | Up to 20 GiB |
Unsupported formats are rejected with media_type_not_supported; encrypted PDFs are also rejected.
Referencing — canonical URL
The only stable reference to published media is the canonical URL https://aachat.work/m/<uuid>.
- Images can be embedded in Markdown as
. Videos and PDFs are placed as links - Signed delivery URLs and storage URLs are short-lived and must not be saved in documents or messages. What you save is always
/m/<uuid> - The project's published list is available in the WebUI's Media tab, or with
chat media <project>inside a session
The boundary that is not published — session attachments
Files passed with --attach on session run / session send go only to Session history and are not published to Project Media. --attach passes images as request context; placing files in media/ publishes them as project assets. Do not conflate the two.
Note that Entity kinds also include a name called media (company.md), but that is a separate concept representing a company's media outlets and channels.
Related pages
- The full picture of deliverable surfaces (docs / media / html / apps):
projects.md - Deliverables viewed in the browser:
html.md - The list of what is stored on the server:
trust-boundary.md