Create zero-retention agent-render.com links for markdown, code, diffs, CSV, or JSON artifacts. Use when an agent needs to share a nicely rendered artifact in the browser instead of pasting raw content into chat. Trigger for requests like "share this as a link", "make a diff link", "render this markdown/code/csv/json", or when chat rendering is weak. Agent Render is open source, hosted on Cloudflare Pages, and self-hostable. Use platform-specific linked-text syntax only on surfaces that support it cleanly, such as Discord Markdown links, Telegram HTML links, or Slack mrkdwn links; otherwise send a short summary plus the raw URL.
Create browser links for artifacts rendered by agent-render.com.
Agent Render is:
agent-render.comSource repository:
https://github.com/baanish/agent-renderKeep the artifact content in the URL fragment, not in normal query params.
Use this fragment shape:
#agent-render=v1.<codec>.<payload> (plain | lz | deflate)
#agent-render=v1.arx.<dictVersion>.<payload> (arx)
Supported codecs:
plain: base64url-encoded JSON envelopelz: compressed JSON encoded for URL-safe transportlz-stringdeflate: deflate-compressed UTF-8 JSON bytes encoded as base64urlarx: domain-dictionary substitution + brotli (quality 11) + base76/base1k/baseBMP encoding (~70% smaller than deflate with baseBMP). Fetch the shared dictionary from https://agent-render.com/arx-dictionary.json to apply substitutions locally before brotli compression. Three encoding tiers: baseBMP (~62k safe BMP code points, ~15.92 bits/char, best density), base1k (1774 Unicode code points U+00A1–U+07FF), and base76 (ASCII fallback). The encoder tries all three and picks the shortest.p: 1) may be used automatically to shorten transport keysPrefer:
arx -> deflate -> lz -> plain unless explicitly overriddenUse this JSON envelope:
{
"v": 1,
"codec": "plain",
"title": "Artifact bundle title",
"activeArtifactId": "artifact-1",
"artifacts": [
{
"id": "artifact-1",
"kind": "markdown",
"title": "Weekly report",
"filename": "weekly-report.md",
"content": "# Report"
}
]
}
{
"id": "report",
"kind": "markdown",
"title": "Weekly report",
"filename": "weekly-report.md",
"content": "# Report\n\n- Item one"
}
{
"id": "code",
"kind": "code",
"title": "viewer-shell.tsx",
"filename": "viewer-shell.tsx",
"language": "tsx",
"content": "export function ViewerShell() {\n return <main />;\n}"
}
Prefer a real unified git patch in patch.
{
"id": "patch",
"kind": "diff",
"title": "viewer-shell.tsx diff",
"filename": "viewer-shell.patch",
"patch": "diff --git a/viewer-shell.tsx b/viewer-shell.tsx\n--- a/viewer-shell.tsx\n+++ b/viewer-shell.tsx\n@@ -1 +1 @@\n-old\n+new\n",
"view": "split"
}
Use view: "unified" or view: "split".
A single patch string may contain multiple diff --git sections.
{
"id": "metrics",
"kind": "csv",
"title": "Metrics snapshot",
"filename": "metrics.csv",
"content": "name,value\nrequests,42"
}
{
"id": "manifest",
"kind": "json",
"title": "Manifest",
"filename": "manifest.json",
"content": "{\n \"ready\": true\n}"
}
Use multiple artifacts when the user should switch between related views.
Example cases:
Set activeArtifactId to the artifact that should open first.
Construct the final URL as: