sher
sher.sh- Category
- Developer Tools
- Rank
- No. 2849Tools index
Previous survey · No. 2768 ·
- Pricing
- Freemium
- Type
- TOOL
- Use case
- Coding
- Interfaces
- CLI
- Builder
- sherdotsh
- GitHub
- 159 stars
- Date
About
A command-line tool that generates instant preview URLs for local development projects. Works with popular frameworks like Vite, Next.js, and Astro, allowing developers to quickly share live previews without deploying to Vercel or creating GitHub repositories.
What it does
sher turns a folder of built frontend files into a throwaway web address. You run one command in a project; it works out which build tool the project uses, runs the build with whichever package manager the lockfile points to, bundles the output and posts it to a small hosted service on Cloudflare. That service stores the files, gives them a random eight-character subdomain, and deletes them once the chosen lifetime runs out. It only serves static output, so anything that needs a running server will not work.
Why it's ranked here
The case rests on narrow scope done cleanly. The whole client is a handful of short TypeScript files with no runtime dependencies, the server that hosts the links ships in the same repository under AGPL-3.0, and self-hosting is a documented four-step Cloudflare setup. It also ships an agent skill that tells a coding agent how to run it and pull the link out of the output, which is why it shows up in AI tooling lists. Against that, the project labels itself beta and the free tier allows a single link per day.
What's good
Next.js projects get special handling: sher temporarily switches the config to static export, patches pages that need to be forced static, builds, then restores the original files even when the build fails. Limits are enforced on the server, not trusted from the client: file size, file count (1,000 maximum), link lifetime and password access are all checked per tier. Uploads without a root index page are rejected with a plain message. Anonymous use needs no account, and a GitHub login lifts the limits to 25 links a day with 24-hour lifetimes.
Tradeoffs
Your build output goes to a third-party host unless you self-host. The login token is saved as plain JSON in your home directory. Link passwords are hashed with a single SHA-256 pass salted by the link ID, which is fast to brute-force for short passwords. If the server cannot confirm a login token, the CLI falls back to trusting the username passed in the callback address. The whole build travels as one base64 JSON request, so large outputs hit the 10, 50 or 100 MB tier caps quickly. Password protection and week-long links need the paid Pro tier.
How to use it well
Use it for the moment you want a colleague, client or reviewer to click around a static build without setting up a hosting project: design reviews, demos, a quick check on a phone. Log in once with GitHub, since anonymous links cap at six hours and one per day. Point it at a prebuilt folder when detection guesses wrong. Give coding agents the bundled skill so they return a link after building. Look elsewhere for anything with server rendering or APIs, and self-host if build output must not leave your infrastructure.
Technical notes+
The CLI entry in src/index.ts calls detectFramework and detectPackageManager from src/detect.ts (config-file sniffing for Vite, Next.js, Astro, react-scripts for CRA, then bare dist/build/out folders), runs <pm> run build with NODE_ENV=production via src/build.ts, and src/collect.ts walks the output into a path-to-base64 map that src/upload.ts POSTs to /api/upload. A preflight call checks the daily rate limit before building and is skipped silently when offline. worker/src/index.ts holds the TIERS table, a KV counter keyed per user or per CF-Connecting-IP, rejects payloads over 1,000 files or lacking a root index page, drops any client file named like its reserved per-site metadata record, stores files in R2 under sites/<id>, and hashes passwords with SHA-256 over password plus id. worker/wrangler.toml schedules a cron every six hours. src/auth.ts stores the token in ~/.sher/auth.json via a localhost callback server with a two-minute timeout.
Observed
- License
- AGPL-3.0 (declared in package.json and LICENSE)
- Language
- TypeScript, Node CLI plus a Cloudflare Worker backend
- Install
- npm package shersh, providing the sher binary (npm i -g shersh or npx shersh link)
- Interface
- CLI with link, list, delete, login, logout, whoami, upgrade and cancel commands
- Runtime dependencies
- None; package.json lists only devDependencies (tsup, typescript, @types/node)
- Hosting backend
- Cloudflare Workers with R2 storage and KV, self-hostable per README.md and worker/wrangler.toml
- Framework detection
- Vite, Next.js (static export), Astro, Create React App, or any dist/build/out folder (src/detect.ts)
- Tier limits
- Anonymous 1 link/day, 10 MB, 6 h; GitHub login 25/day, 50 MB, 24 h; Pro 200/day, 100 MB, 168 h (worker/src/index.ts)
- Upload rules
- Maximum 1,000 files; an index page at the root is required
- Password storage
- SHA-256 of password plus link ID, Pro tier only
- Agent integration
- Bundled agent skill at skills/sher-deploy/SKILL.md describing how to run it and parse the URL
- Project status
- README badge marks the project as beta
Read from README.md, package.json, LICENSE, src/index.ts, src/api.ts, src/auth.ts, src/build.ts, src/detect.ts, src/upload.ts, src/collect.ts, worker/src/index.ts, worker/wrangler.toml, skills/sher-deploy/SKILL.md.
What it can do
Generate instant preview URLs for local development projects
Local development project → Shareable preview URL
Create live previews for Vite projects
Vite development server → Public preview URL
Create live previews for Next.js projects
Next.js development server → Public preview URL
Create live previews for Astro projects
Astro development server → Public preview URL
Share local development work without deployment
Running local development server → Accessible public URL
Enable project sharing without GitHub repository creation
Local project files → Shareable preview link
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.