uploads.sh
What it does
Host files from coding agents; stage on a branch and attach to GitHub PRs.
- Connects 컴퓨터 또는 클라우드
- Account or key Cloud: Needs Authorization · Local: Needs UPLOADS_TOKEN
- Category 개발자 도구
설치
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
검사 4/5 통과 · 내가 묻는 내용은 제작자 서버(agents.uploads.sh)를 거쳐요 · ✓ 명령 확인 2026년 11월 14일
먼저: 어떤 AI를 쓰시나요?
쓰는 앱을 고르면 아래에 단계가 나옵니다.
Claude에 연결할 수 있어요 · 약 5분
uploads.sh 키가 필요해요 (제작자 사이트에서 만들기) · claude.ai나 데스크톱 앱에서 한 번 설정하면 채팅에서 쓸 수 있어요 · 무료 계정은 1개까지 · Team/Enterprise는 소유자(Owner)가 추가
uploads.sh에 가입하고 키 만들기
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 요금과 무료 요금제는 제작자 사이트에서 확인하세요.
Claude의 Connectors 페이지 열기
CustomizeConnectors
“Add” → “Custom” → “Web”를 누르고 이 2칸 채우기
여기서 복사해 Claude의 같은 이름 칸에 붙여 넣고 Continue를 누르세요
Name · 이름uploads.shRemote MCP server URL · 주소https://agents.uploads.sh/mcpRequest headers에 이 이름과 값을 추가
헤더 이름Authorization값Bearer <여기에 키 붙여 넣기>키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
Claude가 찾은 로그인 설정 화면에서 Continue를 누르고 · Authentication은 제작자 안내대로(Sign in now, Sign in when needed, No sign in) 고른 뒤 Add를 누르세요
채팅에서 켜기
+Connectorsuploads.sh
해 보기
uploads.sh을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude가 uploads.sh을 쓰고 있다고 하거나 답에 uploads.sh 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
ChatGPT는 아직 uploads.sh에 연결할 수 없어요
uploads.sh는 연결할 때 내 키가 필요한데, OpenAI 도움말은 OAuth 로그인만 설명하고 우리가 확인한 키 입력 방법이 없어요
대신 이렇게 할 수 있어요
A · uploads.sh에 연결되는 앱 쓰기
- uploads.sh 키가 필요해요 (제작자 사이트에서 만들기) · claude.ai나 데스크톱 앱에서 한 번 설정하면 채팅에서 쓸 수 있어요 · 무료 계정은 1개까지 · Team/Enterprise는 소유자(Owner)가 추가
- uploads.sh 키가 필요해요 (제작자 사이트에서 만들기)
- uploads.sh 키가 필요해요 (제작자 사이트에서 만들기)
- uploads.sh 키가 필요해요 (제작자 사이트에서 만들기)
B · 개발자 도구에서 ChatGPT에 연결되는 다른 서버
같은 분류에서 많이 쓰는 것 중 키 없이 주소만으로 연결되는 것을 골랐어요
- Sentry✓ ChatGPT
- Compiler Explorer✓ ChatGPT
- GitDiagram✓ ChatGPT
Claude Code에 연결할 수 있어요 · 약 5분
uploads.sh 키가 필요해요 (제작자 사이트에서 만들기)
uploads.sh에 가입하고 키 만들기
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 요금과 무료 요금제는 제작자 사이트에서 확인하세요.
터미널 열기
Mac: Command+스페이스를 누르고 Terminal 입력 · Windows: PowerShell 열기
이 명령을 붙여 넣고 Enter
claude mcp add --transport http --scope user uploads https://agents.uploads.sh/mcp --header 'Authorization: Bearer your-value'Enter 전에 “your-value”를 내 키로 바꾸세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
Claude Code에서 /mcp 입력
uploads.sh이 목록에 있고 연결됨으로 보이면 돼요
해 보기
uploads.sh을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Claude Code가 uploads.sh을 쓰고 있다고 하거나 답에 uploads.sh 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Anthropic 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
Cursor에 연결할 수 있어요 · 약 5분
uploads.sh 키가 필요해요 (제작자 사이트에서 만들기)
uploads.sh에 가입하고 키 만들기
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 요금과 무료 요금제는 제작자 사이트에서 확인하세요.
키 입력
uploads.sh 설정에서 Authorization가 비어 있어요. 내 키를 넣고 저장하세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
Cursor에서 AI 채팅을 Agent 모드로 열기
해 보기
uploads.sh을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ Cursor가 uploads.sh을 쓰고 있다고 하거나 답에 uploads.sh 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 Cursor 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
VS Code에 연결할 수 있어요 · 약 5분
uploads.sh 키가 필요해요 (제작자 사이트에서 만들기)
uploads.sh에 가입하고 키 만들기
제작자 사이트에서 가입하고 다음 단계에 쓸 API 키를 만드세요. 요금과 무료 요금제는 제작자 사이트에서 확인하세요.
키 입력
uploads.sh 설정에서 Authorization가 비어 있어요. 내 키를 넣고 저장하세요
키는 앱 입력란에만 붙여 넣고, 채팅에 붙이거나 다른 사람에게 보내지 마세요
VS Code에서 AI 채팅을 Agent 모드로 열기
해 보기
uploads.sh을 써서 나에게 무엇을 해 줄 수 있는지 알려 주고, 하나 해 봐✓ VS Code가 uploads.sh을 쓰고 있다고 하거나 답에 uploads.sh 도구 이름이 나오면 연결된 거예요
메뉴 이름은 2026년 11월 11일에 VS Code 도움말에서 확인 · 앱 버전에 따라 화면이 조금 다를 수 있어요
개발자용: 터미널 명령과 JSON 설정
웹으로 연결
Claude Code
claude mcp add --transport http --scope user uploads https://agents.uploads.sh/mcp --header 'Authorization: Bearer your-value'Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"uploads": {
"url": "https://agents.uploads.sh/mcp",
"headers": {
"Authorization": "Bearer your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"uploads": {
"type": "http",
"url": "https://agents.uploads.sh/mcp",
"headers": {
"Authorization": "Bearer your-value"
}
}
}
}컴퓨터에 설치
Claude Code
claude mcp add --scope user uploads --env UPLOADS_TOKEN=your-value -- npx -y @buildinternet/uploads mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"uploads": {
"command": "npx",
"args": [
"-y",
"@buildinternet/uploads",
"mcp"
],
"env": {
"UPLOADS_TOKEN": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"uploads": {
"command": "npx",
"args": [
"-y",
"@buildinternet/uploads",
"mcp"
],
"env": {
"UPLOADS_TOKEN": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"uploads": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@buildinternet/uploads",
"mcp"
],
"env": {
"UPLOADS_TOKEN": "your-value"
}
}
}
}직접 입력할 값
UPLOADS_TOKEN비밀 필수 envWorkspace bearer token (up_ _…). Mint with uploads login.UPLOADS_WORKSPACEenvWorkspace name. Inferred from the token when omitted.UPLOADS_API_URLenvAPI origin. Defaults to https://api.uploads.sh.- Bearer workspace token (up_ _…) or OAuth access token. Omit this header to use the OAuth browser flow.
설명은 아직 영어 원문입니다.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
한눈에 보기
- 주간 다운로드i
- 637/주
- 확인된 도메인
- ✓ uploads.sh
- 연결 방식
- 컴퓨터 또는 클라우드
- 최신 버전i
- 0.63.1
- 레지스트리 공개i
- 2026년 11월 12일
- 코드 마지막 변경i
- 2026년 11월 14일
- 제작자
- buildinternet
- 패키지
npm: @buildinternet/uploads- 웹사이트
- uploads.sh
- 레지스트리 상태
- 활성
어떤 앱에서 쓸 수 있나요
이 서버의 연결 방식과 각 앱의 공식 문서를 바탕으로 했어요. 2026년 11월 10일 확인.
인터넷으로 연결하는 앱
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
내 컴퓨터에서 실행하는 앱
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
할 수 있는 일
서버가 도구 목록을 보여 주기 전에 로그인을 요구해요.
기본 점검i
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 14일 점검
- ✓ 통과
제작자와 저장소 일치
레지스트리 이름이 도메인 uploads.sh 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)
- ✓ 통과
계속 관리되고 있음
코드 마지막 변경: 오늘
- ✕ 실패
라이선스 있음
저장소에서 라이선스 파일을 찾지 못했어요
- ✓ 통과
엔드포인트 응답
459ms 만에 응답(HTTP 401)
- ✓ 통과
OAuth로 로그인
OAuth 로그인을 지원한다고 밝혀서, AI 앱이 로그인 화면으로 안내해 줘요
- … 아직 점검 안 함
도구 설명에 숨겨진 지시 없음
아직 점검하지 않았어요. 엔드포인트를 점검할 때 도구 목록을 읽어요
토론
질문하고, 팁을 나누고, 안 되는 점을 알려 주세요. "도움이 됨"이 많은 순서예요.
사용자 리뷰
아직 리뷰가 없어요
개발자 도구 카테고리의 다른 서버와 비교i
- 이 카테고리의 다른 서버 5880개 중 93%보다 스타가 많아요
- 이 카테고리의 다른 서버 5880개 중 94%보다 최근에 레지스트리에 공개됐어요
- 기본 점검 결과가 이 카테고리의 다른 서버 5880개 중 50%와 같거나 더 좋아요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
자주 묻는 질문
uploads.sh, 안전한가요?
해당하는 기본 점검 5개 중 4개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
어떤 키나 코드가 필요한가요?
입력해야 할 값: Authorization, UPLOADS_TOKEN
내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?
둘 다 가능해요. 내 컴퓨터에 설치해도 되고, 클라우드 버전에 연결해도 돼요.
아직 관리되고 있나요?
GitHub 저장소는 마지막으로 오늘 변경됐고, 최신 버전(0.63.1)은 그저께 레지스트리에 올라왔어요.
어떤 앱에서 쓸 수 있나요?
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되므로 원격 MCP를 받는 앱에서도 쓸 수 있어요. 예: 웹 ChatGPT(Business 이상은 전체 MCP, Pro는 읽기 전용).
대신 쓸 수 있는 건 뭐가 있나요?
같은 카테고리에는: REA, GitHub, Serena MCP: the IDE for your agent
같은 카테고리의 다른 것
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Serena MCP: the IDE for your agent
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
제작자의 README
README 열기
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
uploads
The missing upload command for coding agents.
Capture screenshots, recordings, and other artifacts as you work: test reports, logs, JSON, PDFs, zips. When the pull request opens, uploads.sh puts them in one tidy comment that updates automatically on each revision. Hosted uploads.sh is free to start. Connect your own bucket — Cloudflare R2 or any S3-compatible provider — so storage in that bucket is unmetered, or self-host the open-source service.
uploads.sh · Docs · npm → · Quick start · What it looks like · Screenshots in CI · What's in this repo · Develop
Under active development. uploads.sh is being built in the open, so APIs can still change. Feedback is welcome — open an issue.
Artifacts ready when the pull request opens
uploads hosts the artifacts coding agents produce at stable public URLs they can use in pull requests and issues: screenshots and screen recordings, but also test reports, logs, JSON, CSV, Markdown, PDFs, and zip archives (the full list is under Plans & limits). On a branch, uploads put stages each file as soon as it is ready. When the pull request opens, uploads.sh promotes the staged files into one managed comment.
GitHub's own attachments work from a browser and, since GitHub CLI 2.99 (September 2026), from gh … --attach, but only once a pull request or issue exists, and the files stay behind GitHub's own hosting, where they cannot be embedded or fetched anywhere else. uploads.sh gives agents a stable public URL from the same terminal where they build and test the change, while the branch is still in progress; GitHub has no public API (yet) for that. The hosted MCP server does the same for agents that cannot run a command at all, taking files as bytes or a URL.
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 hosted read-gate Worker, 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; other images and video land below it, and non-media files (reports, logs, archives) list in a file table with their type and size.
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.
Everything you attach also lands in your workspace, grouped by where it came from — pages by path, projects by repo or app — and browsable from one place.
The screenshots view groups uploads by project and path.
Open any file for a share page: copy-ready embeds (Markdown, HTML, and more), the raw URL, and a delete button.
Each file's share page — copy-ready embeds, details, and delete.
Quick start
Install the CLI and sign in once:
npm install --global @buildinternet/uploads
uploads login
Upload a file and tag the page it shows:
uploads put ./settings.png --meta path=/settings
On a branch, put stages the file automatically. Open the pull request however you normally would. The GitHub App promotes the staged files into one managed attachments comment.
More ways to upload
Use the same commands for before-and-after evidence, an open pull request, a browser capture, or an annotated image:
# Pair two states from the same page in the pull request comment.
uploads put ./before.png --meta path=/settings --state before uploads put ./after.png --meta path=/settings --state after
See what this branch will attach when the pull request opens.
uploads staged
Attach files directly when a pull request or issue is already open.
uploads attach ./before.png ./after.png
Capture, annotate, and upload a page in one command.
uploads screenshot http://localhost:4321/settings --via local --annotate ./callouts.json
attach detects the repository and current PR through gh, uploads all files, and creates or updates that same one comment. On an issue it also keeps a Markdown issue artifact (and a gallery link, when there is one) unless the workspace or the repo turns that off. Without the GitHub App, run uploads attach --promote after opening the pull request to promote files that you staged earlier. All 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 URLs — private-repo attachments get non-guessable links (how that works), but anyone holding a URL can view the file. A file that looks like it shows a credential, ID, or card number is held for your review before it goes public, but don't rely on that: do not upload secrets or sensitive UI.
Require screenshots in CI
The GitHub App adds an uploads.sh check to pull requests that change UI files, next to your tests and builds. No workflow or Actions step is needed. Out of the box it only reports, so nobody is blocked. Turn on Require screenshots on UI changes in the workspace's Settings → GitHub, or set it for one repo in .uploads.yml, and the check fails until screenshots arrive:
comment:
check: require: [before-after, desktop, mobile] # or just [uploads]
The PR comment shows a checklist that ticks itself as files arrive. Images dragged into the PR on GitHub count too, so contributors without uploads.sh are never stuck, and a skip-uploads label skips a PR that needs no screenshots. Add uploads.sh as a required status check in branch protection to make it block merges. Setup, which files count as UI, and skip labels are in Require screenshots on pull requests.
Connect your agent
The hosted MCP server runs at https://agents.uploads.sh/mcp and is listed in the MCP Registry as sh.uploads/mcp. Local stdio is uploads mcp on the same npm package.
# Claude Code
claude mcp add --transport http uploads https://agents.uploads.sh/mcp
Codex
codex mcp add uploads --url https://agents.uploads.sh/mcp
OpenCode
opencode mcp add uploads --url https://agents.uploads.sh/mcp
uploads install adds the agent skills and the MCP server, so future sessions can capture each visual milestone without being asked. The skills also install standalone into any agent runtime:
npx skills add buildinternet/uploads
That installs three skills: github-screenshots (visuals → PRs/issues), uploads-cli (full CLI reference), and annotate-screenshots (callouts and redaction on a capture).
On Claude Code or Codex, the plugin bundles the skills, the MCP server, and a pre-PR screenshot reminder. In Claude Code it also shows staged screenshots above the prompt and attaches them when the PR opens. On claude.ai and in Cowork, add uploads from the Claude directory. The same folder (plugins/claude/uploads) is the common agent-plugin layout, and it is submitted to the xAI plugin marketplace as uploads.
Full CLI usage, including annotations, managed comments, public galleries, and change feeds (repo-wide or one pull request), lives in docs/cli.md.
uploads feed create prints a live page of the screenshots on a repo:
uploads feed create --repo buildinternet/uploads.
REST routes are in docs/api.md.
What's in this repo
| Path | What |
|---|---|
apps/ | The deployables: the REST API worker (api.uploads.sh), the optional public viewer, the auth worker, the remote MCP server, the Slack app (link previews and held-upload messages), the hosted read-gate Worker, and the Astro site at uploads.sh |
| packages/ | Shared code — most notably @buildinternet/uploads (the CLI, published to npm), @uploads/storage (the files-sdk adapter factory all storage