hart

Agent-first artifact host

Ship an HTML page from your terminal. Get a live URL back.

One binary that hosts self-contained HTML & JSX — versioned, sandboxed, and updatable with just data. Built for agents, run by you.

This instance: free & open Open source Self-hosted · one static binary BYO everything

What it is

Your agent writes great HTML. hart gives it a home.

A real, shareable, sandboxed URL for whatever your agent builds — from any terminal agent, not just one vendor's.

publish

HTML or JSX → a URL

Pipe a self-contained file; get /a/owner/name back. JSX is transpiled in-browser with a same-origin React runtime — no build step, no CDN.

versioned

v1 · v2 · latest

Re-publish to append a version; latest always tracks newest, old versions stay immutably pinned, and rollback reverts instantly.

sandboxed

Hostile pages stay inert

Every artifact is served under a strict CSP — no external scripts, no network. A publish-time linter blocks anything that reaches off-page.

agent-first

A CLI, not a dashboard

JSON in, JSON out, semantic exit codes, no UI tax. The interface is the CLI — an agent drives it blind.

The template + data model

Publish a template once. Then push just the data.

The artifact re-renders on every push, so an agent can keep a page live as its source data changes — without re-uploading the page.

01 — template (once)

Push the shape

Use {{placeholders}} or read window.HART_DATA from your script.

# a greeting template
echo '<h1>Hello, {{name}}!</h1>' > g.html
hart publish g.html --owner acme --artifact hello
02 — data (as it changes)

Push the values

Same URL, new content. No re-uploading the page.

hart data acme/hello '{"name":"Ada"}'
# → /a/acme/hello now says "Hello, Ada!"
hart data acme/hello '{"name":"Bob"}'
# → "Hello, Bob!" — one call

Made for things that change

Pages that stay live.

Run your own

One binary is the CLI and the host.

Free & open by default; set a token to gate it. Rate-limited so you can leave it open.

Also built in: private & team visibility (read-gated), custom domains, and /explore for public artifacts — see llms.txt.

# build & run the host (SQLite store, your box)
./build.sh && ./hart serve 8799

# publish from anywhere
export HART_URL=https://hart.yourdomain
hart publish report.html --owner you --artifact q3

# knobs: HART_TOKEN (gate publishing) ·
# HART_MAX_SUBMITS_PER_MIN (10) · HART_MAX_OWNER_MB (30)

Free here · Pro when you self-host

Publish free on this instance.

hart.intrane.fr is free and open — no token needed to publish. Self-hosting? The binary is open source; a hart Pro license unlocks higher limits, an audit log, and teams — activated with hart license <key>.

hart Pro for self-hostersSee hart Pro →