Skip to main content

agent-html

Turn structured agent output into polished, self-contained HTML artifacts.

One conversation in. One shareable HTML file out.

PyPI License Python


Why

AI conversations are great for exploration but terrible for sharing. Chat transcripts are long, unstructured, and die in the thread. agent-html gives you a one-line way to turn any structured data into a professional, self-contained HTML report that anyone can open.

Works with any agent framework: LangGraph, OpenAI Agents, Claude Code, CrewAI, or plain Python.

Install

pip install agent-html

Quick Start

from agent_html import Report, Section

report = Report(
    title="Weekly Summary",
    subtitle="Engineering — Aug 14-21, 2026",
    metadata={"messages": 142},
)

report.add_section(Section(
    title="Overview",
    content="Team focused on infrastructure stability after the outage.",
    style="highlight",
))

report.add_section(Section(
    title="Decisions",
    icon="✅",
    items=["Shut down UAE region", "Migrate to EU-West by Q3"],
))

report.add_section(Section(
    title="Architecture",
    mermaid="graph TD\n  A[Client] --> B[Gateway] --> C[Service]",
))

report.save("summary.html")

Output: a single summary.html file with all CSS/JS inlined. No external dependencies. Double-click to open.

CLI

# From JSON
agent-html render --input data.json --output report.html

# From Markdown
agent-html render --input notes.md --title "Design Review" --output report.html

# Dark theme
agent-html render --input data.json --theme dark --output report.html

# Pipe from stdin
echo '{"title":"Quick","sections":[{"title":"Note","content":"Hello"}]}' | agent-html render --stdin --output note.html

# Preview server
agent-html serve ./reports/

Features

  • Single-file output — all CSS/JS inlined, no external deps
  • Themes — light, dark, or auto (respects system preference)
  • Mermaid diagrams — flowcharts, sequence diagrams, state machines
  • Syntax highlighting — language-aware code blocks with copy button
  • Table of contents — auto-generated with scroll-spy
  • Collapsible sections — <details>/<summary> for long content
  • Callout blocks — note, warning, danger, tip
  • Tables — from structured data
  • Badges/pills — for tags, participants, status
  • Print-optimized — clean PDF via browser print
  • Accessible — semantic HTML, ARIA labels, keyboard nav

Section Styles

Section(title="Info", content="...", style="highlight")        # Accent-bordered
Section(title="Note", content="...", style="callout-note")     # Blue info box
Section(title="Warn", content="...", style="callout-warning")  # Yellow warning
Section(title="Error", content="...", style="callout-danger")  # Red danger
Section(title="Tip", content="...", style="callout-tip")       # Green tip
Section(title="Tasks", items=[...], style="checklist")         # Checkbox list

Integration Examples

LangGraph / LangChain Tool

from langchain_core.tools import tool
from agent_html import Report, Section

@tool
def create_report(title: str, sections: list[dict]) -> str:
    """Generate a shareable HTML report."""
    report = Report(title=title)
    for s in sections:
        report.add_section(Section(**s))
    report.save(f"/tmp/reports/{report.id}.html")
    return f"Report: http://localhost:8080/reports/{report.id}"

FastAPI

from fastapi.responses import HTMLResponse
from agent_html import Report, Section

@app.post("/reports")
async def create(data: ReportRequest):
    report = Report(title=data.title)
    for s in data.sections:
        report.add_section(Section(**s.dict()))
    return HTMLResponse(report.to_html())

JSON Input Format

{
  "title": "My Report",
  "subtitle": "Optional subtitle",
  "metadata": {"key": "value"},
  "sections": [
    {"title": "Overview", "content": "Markdown content here", "style": "highlight"},
    {"title": "Items", "items": ["one", "two", "three"], "icon": "📋"},
    {"title": "Diagram", "mermaid": "graph TD\n  A --> B"},
    {"title": "Code", "code": "print('hello')", "code_language": "python"},
    {"title": "Table", "table": {"headers": ["A","B"], "rows": [["1","2"]]}}
  ]
}

Inspiration

Built on ideas from:

  • ThariqS/html-effectiveness (Apache-2.0) — demonstrating HTML as an AI output medium
  • The "Unreasonable Effectiveness of HTML" thesis by Thariq Shihipar

License

Apache-2.0

Metadata

Release files for agent-html 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-html 0.1.1
File Size Uploaded Provenance
agent_html-0.1.1.tar.gz 31.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-html 0.1.1
File Interpreter ABI Platform
agent_html-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 55.6 kB

Release files / agent_html-0.1.1.tar.gz

Download URL agent_html-0.1.1.tar.gz
Size 31.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a3b875ea5cdb3cb1fdda45c769dafdb1b1d8c61c7f0f0ac796a1195dd0b7c808
BLAKE2b-256 checksum
How to use checksums
7c912bda5d4284d7f869a31c74bb13242df48813d88223be2956d6796651628a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

Release files / agent_html-0.1.1-py3-none-any.whl

Download URL agent_html-0.1.1-py3-none-any.whl
Size 24.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
92ea9e6a63550e4227ede648ed60122b71be8a3a1e142c85404b02c08edb146b
BLAKE2b-256 checksum
How to use checksums
682e04f74ff76806617d422a575531446d842eb3f1e697195d7d29c507eaa37b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

Security for agent-html 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for agent_html-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page