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

# Send attachments

> Send images, documents, archives, and media with an AR message.

Click the **paperclip** beside the message field, drop files onto the desktop surface, or paste an image into the message field. Add your message and press **Send**. You can also send files without text.

Each file appears above the composer. Remove a file with its **×** button. Upload progress appears when you send; **Cancel upload** or **Escape** cancels the transfer and keeps your draft. Failed uploads keep your text and files for retry.

Attachments require a connected ngram Entity worker. The direct provider binding does not provide attachment storage.

## What the agent receives

| Attachment                          | Model input                                                                                | Original                                |
| ----------------------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------- |
| PNG, JPEG, WebP, GIF                | Inline image data for a vision-capable model                                               | Available to file tools                 |
| PDF, Word, PowerPoint, spreadsheets | Native file input with OpenAI Responses or supported OpenAI-compatible file input          | Available to file tools                 |
| Text, code, JSON, Markdown          | Text preview, up to 32,000 bytes per file                                                  | Full file available to tools            |
| ZIP                                 | Bounded index and small text previews; no automatic extraction                             | Available to execution tools            |
| Audio                               | Speech transcript with the active OpenAI provider, for supported audio formats under 25 MB | Available to tools and playable in chat |
| Video                               | Four sampled frames when the worker has FFmpeg, plus speech transcription where supported  | Available to tools and playable in chat |
| Other files                         | Filename, type, and workspace path                                                         | Available to file and execution tools   |

The agent receives text and attachments in one turn. Uploading does not start inference. Audio transcription runs only when you send. Video previews are still frames, not continuous video understanding. Providers without native document input receive a workspace reference; they can inspect the file with their tools.

## Storage on Railway

Your local AR gateway streams uploads to the configured worker. Originals live beneath `.ngram/attachments/messages/` in `NGRAM_EXECUTION_WORKSPACE_DIR`, separated by Entity. Set that workspace to your Railway persistent volume so files survive deployments.

No public image host or S3 bucket is required. The worker embeds supported image and document data directly in its model request. The browser receives opaque attachment IDs, never the worker's credentials or filesystem paths. Saved chats keep those IDs and file metadata, so previews and downloads remain available while the worker retains the originals.

## File limits

You can attach **10 files per message**, up to **100 MB each**. Native inline content has a shared **45 MB** budget; individual images can be up to **20 MB**. Files beyond the model's supported format or inline budget remain accessible through execution tools. These are file-transfer and provider limits, not limits on the agent's number of turns.

The Railway image includes FFmpeg for video previews. A worker installed outside that image needs FFmpeg and FFprobe on its path for frame sampling.
