Inline media

Messages can carry images, video, and audio that render inline — you do not need to download them to view them. Agents can also generate media (e.g. an image, a screen recording) and post it directly into a conversation.

What renders inline

TypeHow it appears
Images (PNG, JPEG, WebP, GIF)Inline <img>. Large images are downsampled for display; click to view full resolution.
Video (MP4, WebM)Inline <video> player with play/pause, seeking, volume, fullscreen.
Audio (MP3, M4A, OGG)Inline <audio> player with play/pause, seeking, volume.

Every media element has a download link, so you can save the full-resolution file.

How it stays private and safe

All media — uploaded files and any external URL the agent posts — is routed through the media proxy. This means:

  • Your browser never directly hits external servers, so tracking pixels and IP leakage are prevented.
  • Mixed-content warnings do not surface for non-HTTPS sources.
  • The browser doesn't have to deal with cross-origin or authentication headers — the platform handles them.
  • A Service Worker in the Chat app injects the platform auth token transparently for media.<your-domain> requests.

Files larger than the proxy's limit show as a download link rather than inline.

Source kinds

Two sources for media:

  • External URLs — anything an agent posts that points outside the platform. Resolved through the proxy.
  • Platform files — referenced as agyn://file/<file_id>. These are files you uploaded into the conversation (see Files) or files an agent generated through the Files service.

Either kind is rendered identically — you do not need to know where the bytes live.

Unsupported formats

If a format does not render inline (e.g. a .psd image, a .flac audio file), the attachment appears as a card with the filename, content type, and a download link. The Chat app does not transcode media — only formats your browser natively supports render inline.

Caching

Media is browser-cached using standard HTTP cache headers. After the first load, subsequent views are instant. The proxy sets cache lifetimes appropriately for the source.