Upload from your terminal. Get a versioned, shareable URL. That's the whole workflow.
You built a quick prototype. Or Claude generated an HTML report for you. Or you wrote a standalone demo page. Now you need someone else to see it.
Your options today:
Every one of these is either overkill or broken for the simplest case: putting a single file on the web.
handoff upload my-page.html
✓ Uploaded successfully
handoff.host/@you/my-page
Version 1
That's it. Your page is live. Send the link.
# Make changes, then upload again
handoff upload my-page.html
✓ Uploaded successfully
handoff.host/@you/my-page
Version 2
The URL stays the same. Anyone with the link sees the latest version. Need to reference a specific version? Append /v/1 to the URL.
No force-pushing. No "deploy to staging first." No merge conflicts with yourself.
Handoff is CLI-first. No web dashboard to click through. No YAML to configure. No build step.
handoff upload dashboard.html
# → handoff.host/@yourname/dashboard
handoff upload api-spec.md
# → handoff.host/@yourname/api-spec
handoff upload report.html --slug q1-metrics
# → handoff.host/@yourname/q1-metrics
handoff upload architecture-diagram.png
# → handoff.host/@yourname/architecture-diagram
Every upload gives you a clean, permanent URL. Every subsequent upload to the same slug creates a new version.
Every upload is automatically versioned. You get a full history of changes, accessible by version number. No commits, no branches, no merge conflicts. Just upload and the version increments.
handoff.host/@you/prototype → latest
handoff.host/@you/prototype/v/1 → first version
handoff.host/@you/prototype/v/2 → second version
Get started without creating an account. When you're ready to claim your pages under a username, connect your GitHub account. That's the entire onboarding flow.
Your pages live at handoff.host/@username/page-name. No random hashes. No .netlify.app subdomains. No 40-character commit SHAs in the URL.
Pages render cleanly on any device. Share a link in Slack, and the person opening it on their phone sees exactly what you intended.
If you use Claude Code, Handoff plugs in directly. Generate a page, upload it, and share the link without leaving your session.
# Inside a Claude Code session
> Build me a dashboard showing Q1 revenue data
> Upload it to Handoff
✓ Page uploaded to handoff.host/@you/q1-dashboard
AI generates the page. One command puts it on the web. The loop from idea to shareable link is seconds, not minutes.
No CLI installed? Use the API directly.
curl -X POST https://handoff.host/api/upload \
-F "[email protected]" \
-F "slug=my-page"
Any environment that can make HTTP requests can upload to Handoff. CI scripts, Makefiles, shell aliases. Whatever your workflow looks like, it fits.
Handoff is for:
Handoff is not for:
If you need Vercel, use Vercel. If you need a link for one file, use Handoff.
| Handoff | GitHub Pages | Netlify | Surge.sh | Tiiny.host | |
|---|---|---|---|---|---|
| Time to live URL | Seconds | Minutes | Minutes | Seconds | Seconds |
| CLI upload | Yes | Via Git | Via CLI | Via npm | No |
| Built-in versioning | Yes | Via Git | Deploy history | No | No |
| Signup required | No | Yes | Yes | Yes | No |
| Markdown rendering | Yes | Via Jekyll | Via build | No | No |
| Image hosting | Yes | Yes | Yes | No | No |
| Made for single files | Yes | No | No | No | Yes |
Handoff is free right now, with no usage caps. Upload as many pages as you need. We're building this for developers who are tired of over-engineering the simple act of putting a file on the internet.
# Install and go
handoff upload my-page.html