uploads

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Lightweight upload gateway for agents to add screenshots and recordings to pull requests and issues. Cloud and self-host options.

README.md
uploads.sh — the missing upload command for coding agents

uploads

The missing upload command for coding agents.

A lightweight file-hosting service on Cloudflare Workers. Agents capture
screenshots as they work — each one staged to the branch automatically — so by
the time the PR opens it is already furnished with one tidy attachments
comment. Built on files-sdk so the storage layer is
provider-agnostic (R2 today; any files-sdk adapter later).

uploads.sh  ·  Docs  ·  npm →  ·  Use it  ·  What it looks like  ·  What's in this repo  ·  Develop

skills.sh CI npm (CLI) GitHub App: uploads-sh Ask DeepWiki License: Apache 2.0

Under active development. uploads.sh is being built in the open, so APIs (including auth) can still change. Feedback is welcome — open an issue.


What is this?

You add a screenshot to GitHub by dragging it into the comment box. Agents
can't — GitHub's native image hosting only works through a browser session, so
an agent that just captured a before/after has nowhere to put it.

uploads gives agents that missing step, and it works while the branch is
still in progress. An agent runs uploads put ./after.png the moment a change
is visible; on a branch that stages the file automatically — no PR required, no
flag to remember. Capture at every milestone and there is nothing to reassemble
at the end: when the PR opens, everything staged is promoted into a single
managed attachments comment.

Keys are hash-free, so re-uploading the same filename overwrites in place and
the URL never changes — every embed of it updates at once. Workspaces keep
tenants (and their budgets and key policies) apart.

This repo is the source of the canonical deployment at
uploads.sh: the API worker, auth worker, MCP server, the
Astro web app, and the @buildinternet/uploads CLI (published to npm from
packages/uploads).

What it looks like

One comment per PR, rewritten in place on every sync. Files tagged
--state before and --state after pair into a side-by-side table; anything
else lands below it.

The managed attachments comment on a pull request, with a before/after pair rendered side by side under Before and After headings

The real comment on
#436.

Pairing is by --meta path=… when several pairs share a comment (one before
and one after per path), and falls back to filenames that differ only by a
before/after token — hero-before.webp with hero-after.webp.

Use it

Install the CLI and sign in once:

npm install --global @buildinternet/uploads
uploads login

Then capture as you work. On a branch, a bare put stages the file against
that branch — no PR needed yet, and no flag to remember:

uploads put ./before.png --state before
uploads put ./after.png --state after
uploads staged                 # what's queued, and whether it will auto-attach

Open the PR however you normally would (gh pr create, the GitHub UI) and the
staged files promote themselves into one managed attachments comment —
instantly if the GitHub App is installed,
otherwise on your next uploads attach (or uploads attach --promote).

Already have a PR or issue open? Target it directly, no staging step:

uploads attach ./before.png ./after.png

attach detects the repository and current PR through gh, uploads all files,
and creates or updates that same one comment. Both commands run under npx @buildinternet/uploads … without a global install.

Sign in with GitHub or a magic link, then create your own workspace or accept
an invite into one — see enrollment. Hosted files are
public, including media attached to private repositories. Do not upload secrets
or sensitive UI.

Teach your agent the loop. uploads install wires in the agent skills and
the MCP server, so future sessions capture at each visual milestone on their
own instead of being asked. The skills also install standalone, into any agent
runtime, without checking anything out:

npx skills add buildinternet/uploads

That installs both: github-screenshots (visuals → PRs/issues) and
uploads-cli (full CLI reference).

Full CLI usage — key conventions, stable PR/issue attachments, managed
comments, and public galleries — lives in docs/cli.md. REST
routes are in docs/api.md.

What's in this repo

Path What
apps/api/ Hono worker — REST API, deploys to api.uploads.sh
apps/auth/ Better Auth worker — sessions, enrollment, device flow
apps/mcp/ Remote MCP server
apps/web/ Astro site — uploads.sh, account and admin UI
packages/storage/ @uploads/storage — files-sdk adapter factory
packages/uploads/ @buildinternet/uploads — CLI + client, publishes to npm
packages/ui/ @uploads/ui — shared design system
packages/billing/ @uploads/billing — plans and limit resolution
packages/email/ @uploads/email — transactional email templates
packages/errors/ @uploads/errors — shared error codes and wire format
skills/github-screenshots/ Workflow skill — visuals into PRs/issues/share links
skills/uploads-cli/ Agent skill for driving the CLI
hooks/ Shared pre-PR screenshot hook (uploads hook pre-pr-screenshot) for Claude + Codex
plugins/claude/ Claude Code plugin config (skills path, MCP, commands)
.codex-plugin/ Codex plugin manifest — same skills + shared hook

The workers and web app are separate deployables. All storage access goes
through createStorage() in packages/storage — adding a provider is one new
case plus peer deps, no API changes.

Docs

Doc Contents
cli CLI usage, GitHub embeds, keys, galleries
api REST routes
local-dev Manual setup, dev stack, smoke tests
workspaces Multi-tenant model, budgets, key policy, BYO-bucket
enrollment Agent login, scopes, expiry, and migration
admin-tokens Minting, listing, and revoking upload tokens
deletion Workspace soft delete, grace period, and restore
ops Operator runbook (limits, retention, secrets)
deploy Cloudflare setup and production deploy
releasing Changesets and publishing the CLI to npm
contract testing Deployed smoke checks and release gate
roadmap Planned features

How to set up, test, and open a pull request:
CONTRIBUTING.md. Agent working conventions live in
AGENTS.md.

Local development

Prerequisites: Node ≥24 and pnpm ≥11 (corepack enable). No Cloudflare
account needed for the core local loop — wrangler dev simulates R2, KV, and
D1 on disk:

pnpm bootstrap        # one-command setup: tooling, deps, env vars, local D1, default workspace
pnpm dev              # API on :8787 (local R2 + KV + D1)

bootstrap is idempotent, and pnpm doctor diagnoses a setup without changing
it. The rest of the loop — the authenticated dev stack, the check and test
gates, and how to open a pull request — is in
CONTRIBUTING.md.

License

Apache 2.0.

Yorumlar (0)

Sonuc bulunamadi