Observed since 20 Oct, 22:10 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Turn structured agent output into polished, self-contained HTML artifacts
Turn structured agent output into polished, self-contained HTML artifacts.
One conversation in. One shareable HTML file out.
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.
pip install agent-html
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.
# 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/
<details>/<summary> for long contentSection(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
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}"
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())
{
"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"]]}}
]
}
Built on ideas from:
Apache-2.0
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.1 | 22 Aug 2026 | 11 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:10 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:1beddc01b46b77a08aede94f1b5d735ac02fd00563e87045f248b1e436a10133