From local output to a temporary address.
Use the CLI from a terminal or coding agent, or publish from the dashboard. Every path follows the same upload lifecycle: direct to storage, then a revocable public URL.
Try with npx
No global install required. Create a token under Devices, then publish:
# one-time setup (stores the token locally)
npx wirecopy configure
# static site / prototype / docs build
npx wirecopy site ./dist
# file or report
npx wirecopy publish ./report.pdfPrefer a global command for daily use?
npm install --global wirecopy
wirecopy configure
wirecopy site ./distFor CI, pass the token through the environment instead of configure:
WIRECOPY_TOKEN='wc_live_…' npx wirecopy site ./dist --jsonWIRECOPY_SERVER overrides the default API host.WIRECOPY_EXPIRES_IN (seconds) overrides the 24-hour default.
For agents
Any coding agent that can run a shell command can publish. No plugin required. Issue a token under Devices and export it:
export WIRECOPY_SERVER=https://wirecopy.app
export WIRECOPY_TOKEN=wc_live_… # from Devices
npx wirecopy site ./artifact --json # prints the live URL and expiryAdd one line to your agent instructions in AGENTS.md, CLAUDE.md, or your harness’s equivalent:
After producing an HTML artifact (report, prototype, site), offer to publish it
with `npx wirecopy site <path>` and share the returned URL. Links expire on their own.--json emits machine-readable output for tool use.--storage byos (Pro) keeps agent output in your connected bucket. Revoke any address early from the dashboard.
Sites vs files
wirecopy site publishes a folder, index.html, or ZIP as a static site on wirecopy.site.wirecopy publish creates a file link for PDFs, images, and other artifacts.
npx wirecopy site ./dist
npx wirecopy site ./dist --storage byos # Pro: your connected bucket
npx wirecopy publish ./review-report.pdf
npx wirecopy links
npx wirecopy links revoke <id>When site receives an app project, it looks for an existing build output (dist/, build/, out/, or .output/public) with index.html. It never runs package scripts. Build first, then publish.
Your own bucket
Pro accounts can point site publishes at an S3-compatible bucket — R2, S3, MinIO, Backblaze B2, and friends. Your keys, your retention, your bucket holds the bytes. Set it up under Storage:
- Create a private bucket with your provider. Wirecopy serves site files through its own host, so the bucket never needs public read.
- Create an access key scoped to that bucket and keep both halves to hand.
- Copy the bucket’s S3 API endpoint. It has to be an https address.
- Paste the endpoint, bucket, and key into the form. Wirecopy verifies access before it saves anything.
The only operations Wirecopy runs against your bucket:
s3:PutObject s3:GetObject s3:DeleteObject s3:ListBucketAccess keys are encrypted at rest. Before a bucket is marked usable, Wirecopy writes, reads back, and deletes a probe object; site files are checked against the publish manifest before they are served.
Dashboard
Open the dashboard, choose a file or drop one in, and publish. Manage active links and sites, revoke early, and create device tokens for CLI and agents under Devices.
Free includes five publishes a day. Compare plans when you need higher limits or your own bucket.
HTTP API
POST /api/v1/upload_intents
Authorization: Bearer wc_live_…
Content-Type: application/json
{"upload":{"filename":"report.pdf","content_type":"application/pdf","byte_size":482091}}PUT the exact bytes to the returned upload.url, including its returned headers. Then call POST /api/v1/upload_intents/:id/complete.
Lifecycle
Terminal alternatives are rejected, expired, revoked, and deleted. Links expire on their own. Revoke anytime from the dashboard or CLI.