Skip to content

Video attachments, hosted file_download, and inline video - #135

Merged
jlrickert merged 4 commits into
mainfrom
feat/hosted-file-download
Oct 29, 2026
Merged

jlrickert merged 4 commits into
mainfrom
feat/hosted-file-download

Conversation

@jlrickert

Copy link
Copy Markdown
Owner

What changes

  • Video attachments. New video_list, video_upload, video_download and video_delete tools, plus tap video for the same operations from the CLI. Uploads accept MP4, WebM and Ogg (checked by their bytes); video_list and the upload return a tapper:// resource link per video.
  • Hosted file_download. The hosted server now registers file_download and returns the file's bytes as an embedded resource, as image_download returns an image. Local tap mcp keeps its dest_path form.
  • Relay video capability. relaycontract.CapabilityVideo: a relay advertises it for a model OpenRouter lists as taking video input, or one its config marks with video: true, so the hub can route video to it.
  • Inline video in notes. ![caption](./videos/NAME) renders a <video controls preload="metadata"> player with a link to the file inside. A plain [label](./videos/NAME) stays a link.
  • Agent guidance. The orient guide, linking guide, tool inventory and video_upload description tell agents to embed a video with ![caption](./videos/NAME).

Testing

  • go test ./..., go test -race ./pkg/keg ./pkg/tapper ./pkg/parity, go vet ./..., task lint:fs, task lint:docs.
  • New tests cover the hosted video round trip and hosted file_download, relay video discovery, and the renderer's player.

The hub change that builds on this is in foldwise/tapper-hub (branch fix/chat-reads-keg-attachments).

Add video_list, video_upload, video_download and video_delete (MP4, WebM
and Ogg), and tap video for the same operations from the CLI. The hosted
server now registers file_download, which returns the file's bytes as an
embedded resource instead of writing to a path the agent cannot reach.
Relays advertise the video capability for a model OpenRouter lists as
taking video input, or that its config marks with video: true, so the hub
can route video to it.
![caption](./videos/NAME) now renders a <video controls> player with a
link to the file inside; a plain [label](./videos/NAME) stays a link.
The orient guide, linking guide and tool inventory cover the video tools
and tell agents to embed a video with ![caption](./videos/NAME).
@jlrickert
jlrickert merged commit a982fb5 into main Oct 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant