Skip to content

Latest commit

 

History

530 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Glasspad logo

glasspad

CI crates.io License: MIT

AI-friendly scratchpad for rich visual views. A lightweight web service that lets AI agents (Claude Code, OpenClaw, etc.) show dashboards, charts, and interactive UIs to the user in their browser. Glasspad is actively developed, pre-1.0 software released through crates.io, Homebrew, and GitHub Releases.

Concept

Glasspad is an HTML-artifact host. The agent authors plain HTML; glasspad serves it live and safely:

  1. Point glasspad at a file or directory of HTML (or markdown) artifacts (glasspad publish ./dir)
  2. Get back a loopback or hosted URL, according to the configured target
  3. The user opens the URL; every artifact is sandboxed in a null-origin iframe

Each artifact is one HTML view (a fragment glasspad wraps in a themed shell, or a full document served verbatim), addressed by a slug and linked to its siblings with ordinary relative links. Under the default loopback target, editing a file reloads the browser; the directory remains the single source of truth.

A status DAG served as a Glasspad space

Installation

Homebrew (macOS / Linux — the recommended cross-machine install):

brew install jarimustonen/glasspad/glasspad

Prebuilt binaries — download for your platform from the latest GitHub Release (each carries a checksum and build-provenance attestation), or via the release installer script.

From crates.io (builds from source):

cargo install glasspad

Usage

glasspad publish ./myspace                    # publish markdown/HTML using the configured target
glasspad publish ./report.md --target hosted # override the target for one publish
glasspad loopback serve ./myspace            # run the live-reload server explicitly
glasspad build ./myspace ./out               # statically render a space (no server)
glasspad data ./old.csv                      # parse legacy CSV/JSON/mbox data to JSON rows
glasspad config show --json                  # inspect effective publish configuration
glasspad doctor --json                       # run read-only diagnostics

Markdown-native spaces

Markdown files can sit alongside HTML in a space; publish, loopback serve, and build render them through the built-in prose template or a template selected in glasspad.yaml. They retain the same null-origin sandbox as HTML artifacts. For glossary autolinks, cross-references, and custom semantic link styling, see Markdown preprocessing.

Installing the companion skill

glasspad skill prints the agent-facing operating guide to stdout; glasspad skill --install installs it as SKILL.md into an agent's skills directory instead (--install-claude is a backward-compatible alias):

glasspad skill --install                 # install into ./.claude and ./.pi (project)
glasspad skill --install --user          # install into ~/.claude and ~/.pi/agent (home)
glasspad skill --install --agent claude  # Claude Code only
glasspad skill --install --agent pi      # pi.dev only (no ./.claude needed)

By default the install dual-homes the skill so it is discoverable under both harnesses: Claude Code loads <root>/.claude/skills/glasspad/SKILL.md, and pi.dev loads ~/.pi/agent/skills/glasspad/SKILL.md (project scope: ./.pi/skills/…), invoking it as /skill:glasspad. --agent {claude|pi|all} selects the target(s) (default: dual-home both); the install is idempotent, so re-running is always safe. It refuses to overwrite a symlinked destination. Under --json, the success envelope's targets[] array reports every path written (the top-level path/created mirror the first target for backward compatibility). Targets are written in order and the install is not transactional: if a later target fails, an earlier one already written is left in place — re-run to complete it.

See crates/glasspad-cli/src/skill.md for the agent-facing guide and DESIGN.md for the --gp-* design system that base.css provides.

Security model

Every artifact renders in a null-origin sandboxed iframe under a strict Content Security Policy. In particular, connect-src 'none' removes direct network exfiltration channels; same-space navigation and theme updates pass through an injected bridge instead. The boundary is enforced by the adversarial Playwright regression suite in ./test-security.sh. See SECURITY.md to report a vulnerability.

Documentation

License

Licensed under the MIT License.

About

AI-friendly HTML/Markdown artifact host: hand it a directory, get a URL — loopback or hosted, every page sandboxed in a null-origin iframe. For agents that need to show dashboards, charts, and interactive UIs.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages