A URL for every dashboard your agents make

Where your team
and agents work on dashboards.

One command. Your Plotly, D3, or Observable HTML dashboard becomes an authenticated URL that never changes – interactive for every stakeholder with a company email.

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

The command

dsp publish ./dashboard.html --name "sales-dashboard-q1"
# Returns: https://acme.dsp.so/0kzNYG7O-sales-dashboard-q1

Your VP Sales clicks, authenticates with their company email, and interacts with the dashboard – filters, tooltips, drill-downs and all.

Starting from a blank page? The data dashboard and KPI report templates publish in one click – no account.


Interactive dashboards don't survive the usual sharing methods

Data teams build dashboards in Plotly, D3, Observable, Bokeh or Altair that export to self-contained, fully interactive HTML. Then sharing happens.

The analysis that took weeks gets shared as a screenshot of one chart, and the VP asks a follow-up the dashboard would have answered in two clicks.

  • Email
    corporate mail security blocks HTML attachments, and a delivered file opens locally with broken paths.
  • Slack
    downloads as a file. The recipient opens it in TextEdit.
  • Google Drive
    stores the file, doesn't render it.
  • Notion or Confluence
    strips the JavaScript. The chart becomes a broken placeholder.
  • Looker or Tableau
    their own licenses and seats, and your custom D3 dashboard isn't a Looker chart.
  • Screenshot
    one frame of a dynamic artifact. Filtering, zoom and drill-down gone.

display.dev vs. alternatives for dashboard sharing

display.devBI Tool (Looker/Tableau)Google DriveConfluence/Notion
Self-contained HTML dashboards❌ (their format)❌ (downloads)❌ (strips JS)
Interactive charts
Company SSO✅ (€49/mo)✅ (expensive)✅ (Google)✅ (per seat)
Persistent URL
No per-seat fees
Format-agnostic (any HTML)
Setup time15 secDays/weeksInstantInstant (broken)

Workflows by framework

01
Plotly
dsp publish ./dashboard.html
Write the figure out with pio.write_html and include_plotlyjs='cdn' for a self-contained file, then publish it.
02
Altair
dsp publish ./chart.html
Same shape: chart.save('chart.html') in Python, then publish the file.
03
Observable
dsp publish ./dist/
Export the notebook to a directory with the Observable runtime, then publish the directory.
04
D3, single file
dsp publish ./d3-dashboard.html
D3 dashboards are usually one self-contained file already. Publish it as is.
05
Multi-file build
dsp publish ./dashboard-build/
A directory with index.html plus separate JS, CSS and data files. Relative paths resolve.

What stakeholders see

01
One link
The VP of Sales gets the dashboard URL in a Slack message and clicks it.
02
One sign-in
Their company Google or Microsoft account, once. No Looker license, no SQL access.
03
The dashboard itself
Hover tooltips, click filters, date-range selectors and drill-downs – everything it was built to show, without a data analyst in the loop for every follow-up.

Dashboards teams publish

Every example below is a real artifact published on display.dev, live right now.

display.dsp.so/rLuVPU1OOpen a live dashboard ↗
Product and funnel analytics example artifact
Growth and revenue reviews example artifact
Pipeline and QA reporting example artifact

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

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.

Try it free

  • Publish an interactive dashboard in 15 seconds, no card
  • Stakeholders sign in with the Google or Microsoft account they already use
  • Unlimited viewers on every plan

Common questions.

Does display.dev support Plotly Dash?+

Plotly Dash is a Python server – it requires a live process to run. display.dev hosts static HTML. For sharing Dash dashboards, export them as static HTML (dash-snapshot or similar), then publish with display.dev. Alternatively, use display.dev for static Plotly charts and keep Dash for interactive server-based dashboards.

What about data privacy – does display.dev access my data?+

display.dev stores and serves the HTML file you publish. If your HTML dashboard contains embedded data (e.g., Plotly with df.to_json() inline), that data is stored in display.dev's Cloudflare R2 storage. For sensitive financial or customer data, review your company's data handling policies. display.dev data is never processed by AI models and is isolated per organization.

Can I update a dashboard with fresh data?+

Yes. Fetch the current version, then re-publish to the existing artifact: dsp publish ./updated-dashboard.html --id <shortId> --base-version <currentVersion>. The URL stays the same. Every viewer who bookmarked or shared the link sees the updated data.

Does the 50MB free tier limit cover most dashboards?+

Typical Plotly/Altair/D3 dashboards are 1–10MB. Dashboards with embedded datasets or many chart traces can reach 20–50MB. The free tier (50MB total organization storage) handles most individual dashboards; Pro tier (25GB) handles hundreds.

Can I publish dashboards from a CI/CD pipeline (automated updates)?+

Yes. Run dsp get-metadata <shortId> to fetch the current version, then dsp publish --id <shortId> --base-version <currentVersion> as a step in your pipeline – for example, after a scheduled dbt run or a data refresh. Add DISPLAYDEV_API_KEY as a CI secret and update dashboards 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).