Solutions

Publish interactive data dashboards behind company SSO

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

Works with your agents
terminal
$ display publish ./report.html
 
Uploading    47kb
Auth       Google Workspace ✓
 
✓ Published
 
→ https://view.display.dev/p/f474hfd/8f3kx9
 
Viewers    anyone at acme.com
Expires    never
Version    1
 
$ 

The command

dsp publish ./dashboard.html --name "sales-dashboard-q1"

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


Your dashboards are interactive. The sharing methods aren't.

Data teams build dashboards in Plotly, D3, Observable, Bokeh, or Altair that export to self-contained HTML. The output is visually excellent and fully interactive.

Then sharing happens:

  • Email – HTML attachments blocked by corporate mail security. Even when delivered, the file opens locally and relative paths break.
  • Slack – downloads as a file. Recipients open in TextEdit.
  • Google Drive – stores the file. Doesn't render it.
  • Notion/Confluence – strips JavaScript. The interactive chart becomes a broken placeholder.
  • Hosted BI tools (Looker, Tableau) – require their own licenses and seats. Your custom D3 dashboard isn't a Looker chart.
  • Screenshot – static image of a dynamic artifact. All filtering, zoom, and interaction gone.

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


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)

<a name="workflow"></a>

Workflows by framework

Plotly:

import plotly.express as px
import plotly.io as pio
 
fig = px.scatter(df, x='revenue', y='churn', color='segment', 
                 title='Customer Segments Q1')
 
pio.write_html(fig, 'dashboard.html', include_plotlyjs='cdn')
dsp publish ./dashboard.html --name "segments-q1"

Observable (notebook export):

npx @observablehq/runtime dist/
dsp publish ./dist/ --name "revenue-analysis"

D3 single-file dashboard:

dsp publish ./d3-dashboard.html --name "pipeline-view"

Altair:

import altair as alt
 
chart = alt.Chart(df).mark_bar().encode(x='category', y='count')
chart.save('chart.html')
dsp publish ./chart.html --name "category-breakdown"

Multi-file dashboards:

dsp publish ./dashboard-build/ --name "revenue-dashboard"

What stakeholders see

The VP of Sales receives the dashboard URL in a Slack message. They click it.

They sign in with their company Google or Microsoft account – once, five seconds. They see the full interactive dashboard: hover tooltips, click filters, date range selectors, drill-down functionality.

Everything the dashboard was built to show. No Looker license. No SQL access. No data analyst in the loop for every follow-up question.


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: Private artifacts
  • 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: Private artifacts
  • 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: Private artifacts
  • 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 a living document, 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.

Permanent URLs

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

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

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 <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 Teams ($49/month flat).