You built something useful in an afternoon with Claude Code or Cursor. It works great on your laptop. You want your team to use it — but not put it on the public internet.
There's no obvious path from "works on localhost" to "my coworkers can open this URL and it only works for @ourcompany.com emails." This guide covers that gap.
Why the usual options fail for vibe-coded apps
Vercel makes it public
Vercel is the natural first choice. But the moment you deploy, the URL is publicly accessible. The workaround — gating a Vercel deployment with SSO — costs ~$320/month as an enterprise feature.
Railway/Render work but need auth
These platforms host your app without a full AWS stack. But they're public by default. Adding real company-email verification requires writing your own OAuth flow. That's the opposite of vibe coding.
Retool requires rebuilding from scratch
"Just put it in Retool" assumes you're starting fresh inside their GUI. If you built a Next.js app, deploying to Retool means rebuilding it as a Retool app.
IT provisioning takes weeks
The official path — submit a ticket, wait for IT to provision a server, configure SSO — takes 3 to 8 weeks at most companies.
The Workshop path (30 seconds)
npm install -g @getworkshop/cli
workshop login
cd your-project
workshop init # detects your framework
workshop deploy # builds, uploads, returns URL
Choose company domain access mode. Paste the URL in Slack. Your team opens it with their work email.
Frameworks Workshop supports
- Next.js (app router, pages router, API routes)
- Vite + React / Vue / Svelte
- Python: Flask, FastAPI, plain scripts
- Node.js: Express, Fastify, plain scripts
- Static HTML/CSS/JS
Adding a scheduled job
Built a Python script that needs to run on a schedule? One line in workshop.config.json:
{ "cron": "0 9 * * 1-5" }
Runs every weekday at 9am. Failure sends you an email. Laptop can be closed.