AI tools have made a new kind of artifact extremely common: you describe a dashboard, report, or small data app to Claude, v0, Lovable, or Bolt, and minutes later you have a working static front-end. The data is baked in or fetched client-side; there’s no backend to run.
Then comes the awkward part. It contains company numbers. You want your team to see it — and only your team. But it’s “just a generated app,” so nobody wants to stand up authentication, a server, or a deployment pipeline for it. So it ends up on a public link “temporarily,” or on someone’s laptop, or it never gets shared at all.
There’s a cleaner ending: deploy the static output and put it behind your company’s SSO.
Why this is a good fit
These artifacts have exactly the shape that makes private hosting trivial:
- Static. A built front-end — HTML, JS, CSS — with data embedded or pulled from an API the browser already has access to. No server-side rendering required.
- Internal. A finite, known audience: your team, your department, a few stakeholders.
- Sensitive. Real metrics, forecasts, or customer data that has no business being on the open internet.
What you don’t want to do is write an auth layer for a throwaway-feeling app.
Publish it in one step
Most AI builders give you either a downloadable build or a project you can build locally. Either way you end up with a folder of static files. Publish it:
bg-deploy ./dist
If you’re working inside an AI agent (Claude Code, Cursor, Cline, Windsurf), you can publish straight from there over BehindGate’s remote MCP server. The artifact goes from “generated” to “shared privately” without leaving the tool that made it.
Make it private
- View it immediately. Right after deploy, the site is protected by an email one-time code with your own email domain allowed, so you can open it without any admin setup. It’s never public, not even for a moment.
- Map your domain (optional). Point a CNAME like
metrics.acme.comat BehindGate; TLS is automatic. - Gate with SSO. Connect Entra or Google so only your company (or a specific group) can open the dashboard. MFA and de-provisioning come from your IdP for free.
Keeping it fresh
Dashboards go stale. Because each deploy is just a command, you can regenerate the report on a schedule (a cron job or CI step) and re-publish a new immutable release. Viewers always see the latest numbers, and there’s still no server running between updates.
What you avoid
- No backend or auth code to write for a static app.
- No public link you have to remember to take down.
- No per-seat pricing: share it with the whole team at a flat cost.
- No “I’ll just screenshot it into Slack” because sharing the real thing was too much work.
Your AI-built dashboard ends up at metrics.acme.com, readable only by your
company, updated on whatever cadence you want, and it took about 15 minutes, not a
project.