---
title: "Attachments"
description: "Images and files attached to a Log."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.loggo.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Attachments

1. **Paste or upload**

   Paste an image into the [editor](/features/markdown-editor), or
   upload one through the API.
2. **It's stored next to the mirror**

   Locally, on S3, or on R2 — depending on how the instance is
   configured.
3. **Referenced from the Log**

   A relative link is inserted automatically:
   `![screenshot](./_files/01JB...-screenshot.png)`.

## 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](/features/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.

> **Deleting doesn't clean up the link**
>
> Deleting an attachment removes the stored file, but not the `![...]` reference left behind in whichever log's body pointed at it.

Source: https://docs.loggo.dev/features/attachments/index.mdx
