The ngrok alternative for internal sharing

Everything you share with ngrok,
without the expiring link.

ngrok is a tunneling tool. It's excellent for webhook testing, exposing localhost to an external service, and forwarding ports during development. It's a poor fit for sharing HTML artifacts with your team. display.dev is built for that job: publish any file, get an authenticated URL that never changes, done.

The demo shows an agent publishing a doc to display.dev – from a chat or a terminal – then the team opening its URL, commenting, the agent publishing v2 at the same URL, and the doc being shared with someone outside the company.

Works with your agents

Cursor, Codex, Claude Code – any agent that writes a file. Switch agents anytime – your URLs, versions and comments stay put.

Trusted by thousands
Indigo Engineering

display.dev vs. ngrok

display.devngrok
Monthly price€49/mo flat$10–$20/seat/mo
Share HTML behind company SSO
URLs that never change (survive restart)❌ (ephemeral by default)
Google Workspace SSO✅ Included
Microsoft 365 SSO✅ Included
File/directory publish (no process)❌ (requires live server)
Localhost tunneling
Webhook inspection
Viewer needs nothing⚠️ IP allowlist or auth config
CLI✅ (dsp publish)✅ (ngrok http)
MCP for Claude Desktop
Unlimited viewers flat price

ngrok is excellent – for tunneling

Webhook testing
Receive webhooks from Stripe, GitHub or Twilio on your local dev server.
OAuth callbacks
Point a cloud service's redirect URI at localhost.
External QA
Let a client or contractor reach a running dev server over HTTPS.
Service debugging
Expose a microservice in your local Docker network to a remote API. If your job is any of these four, use ngrok – it was built for them and it does them well.

Where ngrok falls short for internal sharing

ngrok exposes a process, not a file. Every property that follows from that works against sharing an artifact with your team.

The artifact is a file. It shouldn't need a terminal session to stay readable.

  • Ephemeral URLs
    A new URL per session unless you pay for a reserved domain. Close the terminal and every bookmark 404s.
  • A process has to stay up
    Sharing a static file means python3 -m http.server 8080 plus ngrok http 8080, both running. Restart your laptop and the URL is gone.
  • No company-auth model
    IP allowlists and basic auth only. No SSO, no domain restriction, no record of who viewed what.
  • Per-agent pricing
    The free tier allows one running agent. At $20/seat, five people sharing dev work is $100/month, still with no lasting URLs.

What display.dev does differently

01
Publish the file, not a port
dsp publish ./report.html --name q1-analysis
The URL comes back in about 15 seconds – https://acme.dsp.so/0kzNYG7O-q1-analysis – and it doesn't depend on anything running.
02
Viewers sign in with the account they already use
Google or Microsoft, one click, and they get the full interactive HTML – charts, animations and all.
03
The URL survives everything
Close the laptop, restart the machine, come back in six months. Publish again with the artifact's short_id and base_version and the same link shows the new version.

When to use display.dev instead of ngrok

Share a Claude Code artifact with your PM
dsp publish ./proposal.html and paste the URL in Slack.
Distribute an agent-authored research dossier from CI
One extra step in your GitHub Actions workflow.
Host Swagger UI or Redoc internally
dsp publish ./swagger-ui/ --name api-docs publishes the whole directory.
Share any AI-generated HTML report
One command, an authenticated link that keeps working after you close your laptop.

Pricing

2 months free
Free

Try it. No credit card.

€0
  • Included: 10 gated artifacts
  • Included: Unlimited public artifacts*
  • Included: 50MB storage
  • Not included: Version history
  • Not included: Google + Microsoft SSO
  • Not included: Audit logs

display.dev branded

Get started
Solo

Individuals. Unlimited gated sharing.

€15/mo
  • Included: Unlimited gated artifacts
  • Included: Unlimited public artifacts
  • Included: 1GB storage
  • Included: 10 versions
  • Not included: Google + Microsoft SSO
  • Not included: Audit logs
Get started
Enterprise

For compliance-driven organizations.

Contact us

From €499/mo

  • Included: Unlimited gated artifacts
  • Included: Unlimited public artifacts
  • Included: Custom storage
  • Included: Unlimited versions
  • Included: Google + Microsoft SSO
  • Included: 365 days audit logs
Talk to us

ngrok Pro is $10–$20/month per developer – and gives you tunnels, not publishing. display.dev Pro is €49/month for the entire company.

Try display.dev free

  • €49/month flat for the company – not $10–$20 per developer
  • A URL that survives closing the terminal, with Google and Microsoft sign-in
  • First artifact in 15 seconds · No credit card

Features

Authentication

Viewers click a link and sign in with their Google or Microsoft account, or a one-time password. No app to install. No account to create. No IT ticket.

Comments

Inline comments on every artifact. Your agent reads them via MCP, fetches the current version, republishes with short_id and base_version, and resolves the thread. The artifact stays the current version at the same URL, not a one-shot screenshot.

Publish in 15 seconds

dsp publish ./file.html from your terminal, or one sentence in Claude Desktop. No git repo, no deploy pipeline, no project to configure.

A URL that never changes

Every artifact gets a URL that keeps working. Share in Slack, link in Notion, paste in email. It still works six months later.

Unlimited viewers

No per-seat pricing at any tier. Share with your PM, exec, legal team, or designer for the same flat price.

Any agent

Cursor, Codex, and Claude Code all work, along with any agent that creates HTML or Markdown output.

Common questions.

Can display.dev replace ngrok entirely?+

No. ngrok handles tunneling to live processes – webhook testing, OAuth callbacks, live server forwarding. display.dev is for publishing static files. If you need both, use both. Many teams use ngrok during development and display.dev for sharing outputs.

Does display.dev have a tunneling feature?+

Not currently. display.dev is built for the "publish a file, get an authenticated URL that never changes" workflow. If you need to expose localhost:3000 to the internet during a live session, ngrok or Cloudflare Tunnel are the right tools.

What if I want to share my dev server with a client during a demo?+

For a live demo of a running dev server, use ngrok. For sharing the HTML output after the demo – the proposal, the report, the prototype export – use display.dev.

How do the URLs work?+

Every artifact you publish gets a URL like acme.dsp.so/0kzNYG7O-artifact-name. That URL never changes as long as your display.dev account is active – it doesn't depend on any running process. Share it in Slack, bookmark it in Notion, link it in a Jira ticket.

Does display.dev work in CI/CD?+

Yes. Add DISPLAY_TOKEN as a secret, install @displaydev/cli, and run dsp publish ./output/ as a step. The artifact URL can be posted as a PR comment automatically.

Publish your first artifact in 15 seconds.

Free tier. No credit card. One-time password auth on free, Google + Microsoft SSO on Pro (€49/month flat).