Hearth — Personal Web Hub

The center of the house. Astro app on the dev machine — agent writes pages, installs libraries, hot-reloads instantly. One app for everything web: agent canvas, dashboards, tools. Agent-agnostic, framework-agnostic.

Concept

Text-based interfaces (terminal, chat) hit a wall when agents need rich output — maps, diagrams, diffs, charts, interactive views. Hearth is the personal web hub that fills the gap. One Astro app, many pages: agent canvas, dashboards, task views, budget charts — anything that needs a browser.

Agent-agnostic. Hearth is a web app on the dev machine. Any agent session can write to it:

Same project, same dev server. The delivery channel (browser, Telegram Mini App, anything) is just how the URL reaches you.

Key insight: The agent IS the developer. No deploy step, no build pipeline. Agent writes .astro pages or React islands, hot-reloads instantly. Libraries are installed as needed and persist — the app grows organically.

Architecture

regret (dev machine)                  zx (always-on)
┌─────────────────────────┐          ┌──────────────────────┐
│ ~/code/hearth/           │          │ Technitium DNS       │
│ ├─ Astro dev (:4321)    │◄─────────│ hearth.zx → Caddy    │
│ ├─ src/                 │          │                      │
│ │  ├─ pages/            │          │ Caddy                │
│ │  ├─ components/       │          │ hearth.zx → HTTP     │
│ │  └─ layouts/          │          │   regret.holm:4321   │
│ └─ package.json         │          │                      │
│                         │          │ subdomain.com → HTTPS│    Clients
│ Claude Code             │          │   regret.holm:4321   │    ├─ Browser (LAN/Tailnet)
│ └─ writes pages,        │          │                      │    ├─ Telegram Mini App (HTTPS)
│    installs libs,       │          │ butler               │    └─ IDE webview
│    edits freely         │          │ └─ sends web_app     │
└─────────────────────────┘          │    button URL         │
                                     └──────────────────────┘

No deploy step. Agent edits files → Astro hot-reloads → browser refreshes. Two access paths:

How it works

  1. Agent needs rich output (map, chart, diff, etc.)
  2. Agent writes/edits a page in hearth (src/pages/) or a component (src/components/)
  3. Installs any needed library (bun add leaflet, bun add d3, etc.)
  4. Astro hot-reloads — live immediately
  5. Agent surfaces the URL:
    • Terminal: prints localhost:4321 link or opens browser
    • Telegram: sends web_app button via bridge → user taps to open
  6. User sees the rendered content

Pages and components accumulate over time. Hearth is a living project, not throwaway pages.

Use cases

Consumer Canvas renders
Trip planning Leaflet map with pins, itinerary
skill-creator eval Interactive pass/fail cards, diffs, scores
do/pom Visual timer, task board
mooney Budget charts, expense breakdown
Code review Syntax-highlighted diffs with inline comments
Brainstorming Mind map, node graph
Approval flow Rich tool-call preview with approve/deny

Any skill or agent that needs more than text can render to hearth.

Agent interface

Minimal — the agent just needs to know:

The agent already knows how to write code, install packages, and edit files. No special tool needed beyond what it already has. In Telegram, the bridge telegram_api tool sends the web_app button. In terminal, a simple open command or printed URL suffices.

Stack

Batteries included — common libs pre-installed so agent never waits:

One app, many pages. Hearth is the personal web hub. Canvas is one page, dashboard/tasks/budget are future pages. File-based routing: src/pages/canvas.astro, src/pages/dashboard.astro, etc. Simple .astro pages ship zero JS. Interactive views use React islands.

Agent-managed. Agent writes pages, fixes issues, installs libs as needed. Human can contribute in any framework. If it breaks, agent fixes it.

Bootstrap strategy: scaffold + skill

The token cost of generating code is ~1.5-2x markdown. The cost is mostly in the first render — discovering setup, imports, layout. Reduce this with two things:

1. Scaffold project — pre-installed libs, ready to go:

2. Canvas skill — gives the agent instant context:

~20 lines of skill context saves hundreds of tokens per render. Agent reads skill → writes a targeted edit → done. No rediscovery each session.

Component reuse: As views accumulate, the agent reuses them — "MapView already exists, update the pins" instead of writing from zero. The skill can list available components. Worth-keeping components get promoted naturally.

Design decisions

Principle: sandboxed but maximally flexible. Hearth is a blank page the agent owns. Don't build protocols — write code.

Deferred

See also