Guide
How to share an HTML report or dashboard with a client
Updated 30 October 2026
Export the report to one HTML file: fig.write_html() in Plotly, jupyter nbconvert --to html for a notebook. Publish it with npx ashare-cli publish report.html and open it only to the people who should see it: your company by email domain, the client’s email, or anyone with a password. The client opens the link, signs in with a code from their email and can comment on the text.
Export the report to HTML
Plotly
write_html saves a figure as an HTML file that opens in any browser and stays fully interactive.
fig.write_html("report.html", include_plotlyjs="cdn")By default the file carries its own copy of plotly.js, about 3 MB of it. With include_plotlyjs="cdn" the page loads plotly.js from the CDN instead and the file is about 3 MB smaller, but the reader needs the internet to see the chart. Documents on ashare may load scripts from CDNs, so either file works there. ashare takes one page up to 5 MB, so a large figure with plotly.js inside may need the CDN option. include_plotlyjs="directory" expects plotly.min.js in the same folder: publish that folder and it goes up as a site.
Jupyter
$ jupyter nbconvert --to html --no-input --embed-images analysis.ipynb--to htmlgives a static HTML render that looks like the notebook in JupyterLab.--no-inputdrops the code cells and prompts, which suits a client who wants the results, not the code.--embed-imagesputs images into the file, so nothing is left behind when you move it.--executeruns the notebook first, if the saved outputs are stale.
A dashboard of several files
If the export is a folder with index.html, CSS, scripts and data files, publish the folder. It goes up as a small site: pages link to each other and assets load. Up to 200 files and 25 MB in all.
Why an attachment is awkward
- The client has to download the file and open it from their disk.
- Every fix is another attachment. Nobody is sure which version the client read.
- A file can be forwarded to anyone, and there is no taking it back.
- Feedback comes back as screenshots and quotes in an email thread, away from the text it is about.
A public link solves the first problem and keeps the third one: whoever has it gets in.
Publish it with access
Create a key on ashare.net/me/api, then:
$ npx ashare-cli login
$ npx ashare-cli publish report.html --title "Q3 churn analysis"
$ npx ashare-cli share <id> anna@client.comA new document is private: only you open it. share adds the client’s email and sends them a letter with the link. The other ways in:
| Who should open it | How |
|---|---|
| One client, or a few people | share <id> anna@client.com ben@client.com, up to 100 emails |
| Your whole team | --visibility company: everyone who signs in with an email on your company domain |
| Anyone you give the password to | --visibility public --password <password> |
| For a limited time | --expires 14d; after that the link shows “Link expired” |
Company documents need an organization on ashare. If nobody on your domain has one yet, signing in with a company email creates it, with a 30-day trial. A notebook or a script can run these commands too, and agents publish the same way over MCP: see CLI and Connect your agent.
What the client sees
- They open the link, type their email and the 6-digit code from the letter. No account or password to create.
- The report works as it did on your machine: the charts are interactive, the scripts run.
- They select a sentence or a number and comment. You get an email about new comments.
- You fix the report and publish a new version at the same link:
npx ashare-cli update <id> report.html. A link with?v=2&diff=1shows them what changed.
For a private or company document you see who opened it, how many times and when: npx ashare-cli views <id> or the document page. If the client should not see earlier drafts, hide the version history and readers get only the current one.
When something else fits better
- A live app. ashare serves files and runs their scripts in the reader’s browser. A report that needs a running Python server behind it needs an app host.
- A public chart for a blog post. Documents on ashare are not indexed by search engines on purpose. Any static host suits a page you want found.
- Editing together. Readers comment, they do not edit the page. For a document several people write, use a shared editor.
ashare.net: your agent publishes HTML or Markdown and you choose who opens it: your company, specific emails or a password. Readers comment, the agent fixes the document.
Connect your agent