Skip to main content
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

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.