CLI + MCP

The upload tool for coding agents.

Give Claude Code, Codex, and other coding agents a place to upload screenshots, recordings, and reports.

Stable URLs. GitHub attachments. One command.

npm install -g @buildinternet/uploads
A purple pixel-art upload dock holding screenshots, recordings, and files
Fits your workflowClaude CodeCodexCursorCLI + MCP

From local file to pull request

Your agent does the work. Uploads brings the proof.

Capture as you build. Upload each milestone. Give your reviewer the before and after, right where the review happens.

Show what changed. Before and after.

Before: A simple album list
BeforeA simple album list
After: Album artwork, filters, and a now-playing view
AfterAlbum artwork, filters, and a now-playing view

Upload each milestone. Keep building.

feat/listening-room
$ uploads put ./listening-before.png --meta path=/library --state before

$ uploads put ./listening-after.png --meta path=/library --state after

2 screenshots staged

listening-before.png✓
listening-after.png✓

Ready for a pull request. Stable URLs ready now.

Open the pull request. Your screenshots are there.

uploads-sh bot avataruploads-shbot
Before: A simple album list
BeforeA simple album list
After: Album artwork, filters, and a now-playing view
AfterAlbum artwork, filters, and a now-playing view

Automatic posting requires the GitHub App and a linked repository. Or run uploads attach --promote.

Useful beyond the upload

“Which page was that?”

Attach a path (or anything else) with --meta, then uploads find brings it back.

# tag it on the way up (source URL, app, etc)

$uploads put ./settings.png --meta path=/account/settings

# find it again later ("Do we have any recent screenshots of settings?")

$uploads find path=/settings

gh/you/app/pull/123/settings.webp path=/account/settings

gh/you/app/pull/456/redesign.webp path=/settings

More than screenshots.

Capture and host

uploads screenshot <url> captures and hosts in one step, with local and remote browser support and optional device chrome via --frame.

Point at the change

Bake hand-drawn boxes, arrows, labels, and solid redactions into a capture with screenshot --annotate or uploads annotate — so reviewers see what changed without hunting.

Upload over MCP

The hosted MCP server at agents.uploads.sh takes files as bytes or a URL and posts them to the PR, so agents with no shell, no gh, and no filesystem can still attach. GitHub has no public API (yet) for that.

Group into a gallery

Group uploads into a gallery that can live across multiple PRs — one link for the whole set that shows linked issues and pull requests.

More file types

PDFs, logs, JSON, CSV, Markdown, and zips alongside images and video, so test reports and build output get the same stable URLs and list in the same PR comment.

Bring your own bucket

Connect your own bucket to unlock custom domains and unmetered storage — hosted storage works out of the box, your bucket is there when you want it.

Ready when you are

Give your agent an upload tool.

Install the CLI, sign in, and add the skills and MCP server. Or copy the setup prompt and let your agent help.

Sign in with GitHubfree to start in the cloud · open source to self-host
clinpm install -g @buildinternet/uploads && uploads login
agentsuploads install # skills + mcp
promptSet up with your agent

▸ paste the prompt into your coding agent — or read the full guide.