Paste or upload
Paste an image into the editor, or upload one through the API.
It's stored next to the mirror
Locally, on S3, or on R2 — depending on how the instance is configured.
Referenced from the Log
A relative link is inserted automatically:
.
Storage backends
Where the actual bytes live depends on how the instance is configured:
- Local filesystem — the default for the Docker deployment, alongside the SQLite database and markdown mirror.
- S3-compatible — any S3-compatible provider, via
S3_*environment variables. - R2 — used by the Cloudflare Workers demo.
The app code never knows which one it’s talking to; every backend implements the same put/get/delete/list interface.
Limits
An instance-wide max file size and an allowed-MIME-type list gate every upload — configured via MAX_ATTACHMENT_SIZE/ALLOWED_FILE_TYPES env vars, or overridden per-instance from Admin → Instance Settings. A file that’s too large or the wrong type is rejected before it touches storage.
The Attachments page
/attachments lists every file in the workspace, filterable by date range and extension.