Skip to main content

Headless visual output layer for AI agents. One API call → self-contained SVG.

Project description

HyperWeave

Headless visual output layer for AI agents.
One API call → self-contained SVG. No JavaScript. No dependencies. No runtime.
Works everywhere an <img> tag works.

strip


The Problem

When an AI agent needs visual output, it generates React code or HTML that breaks across platforms, carries no brand identity, and is illegible to the next agent in the chain. There's no portable, reliable visual primitive for agents.

HyperWeave is that primitive. Semantic SVGs with embedded CSS state machines, accessibility markup, and machine-readable metadata. The artifact stays live, stays on-brand, and stays legible — whether it's rendered in a GitHub README, Slack, Notion, documentation site, email, VS Code, or terminal. Every surface that renders an <img> tag is a HyperWeave surface.


Genomes — Aesthetic DNA

A genome is a portable, machine-readable aesthetic specification. It encodes the complete visual identity — chromatic system, surface material, motion vocabulary, geometric form language — as a set of CSS custom properties that any agent can consume and apply consistently across every artifact type.

Three production genomes ship today. Custom genome generation via AI skill files coming soon.

automata · chrome-horizon · brutalist-emerald

automata

cellular paradigm · bifamily teal × amethyst · abyssal-cyber chromatics
Signals
chromatic variant
pypi teal pypi amethyst
/v1/badge/PYPI/v0.2.11/automata.static?glyph=python&family={blue|purple}
Dashboard
strip · bifamily
strip
/v1/strip/readme-ai/automata.static?subtitle=eli64s/readme-ai&family=bifamily
Profile
stats card
stats
/v1/stats/eli64s/automata.static
Star Chart
star history
star chart
/v1/chart/stars/eli64s/readme-ai/automata.static
Marquee
horizontal + vertical
marquee horizontal
marquee vertical
/v1/marquee/{text}/automata.static?rows=1&family=bifamily — add &direction=up for vertical
Icons
circle + square
python docker huggingface jupyter
/v1/icon/{glyph}/automata.static?shape={circle|square}&family={blue|purple}
Banner
bifamily wordmark
banner
/v1/banner/HYPERWEAVE/automata.static?family=bifamily
Divider
cellular-dissolve
divider
/v1/divider/cellular-dissolve/automata.static?family=bifamily

chrome-horizon

chrome paradigm · metallic env-mapping · smooth corner radii
Signals
state machine
passing warning critical
/v1/badge/BUILD/{state}/chrome-horizon.static
Dashboard
strip
strip
/v1/strip/readme-ai/chrome-horizon.static
Profile
stats card
stats
/v1/stats/eli64s/chrome-horizon.static
Star Chart
star history
star chart
/v1/chart/stars/eli64s/readme-ai/chrome-horizon.static
Marquee
horizontal + vertical
marquee horizontal
marquee vertical
/v1/marquee/{text}/chrome-horizon.static?rows=1 — add &direction=up for vertical
Icons
circle + square
youtube notion npm instagram
/v1/icon/{glyph}/chrome-horizon.static?shape={circle|square}
Banner
wordmark
banner
/v1/banner/HYPERWEAVE/chrome-horizon.static

brutalist-emerald

brutalist paradigm · sharp zero-radius · full 14-motion roster
Signals
state machine
passing warning critical
/v1/badge/BUILD/{state}/brutalist-emerald.static
Dashboard
strip
strip
/v1/strip/readme-ai/brutalist-emerald.static
Profile
stats card
stats
/v1/stats/eli64s/brutalist-emerald.static
Star Chart
star history
star chart
/v1/chart/stars/eli64s/readme-ai/brutalist-emerald.static
Marquee
horizontal + vertical
marquee horizontal
marquee vertical
/v1/marquee/{text}/brutalist-emerald.static?rows=1 — add &direction=up for vertical
Icons
circle + square
discord github x spotify
/v1/icon/{glyph}/brutalist-emerald.static?shape={circle|square}
Banner
wordmark
banner
/v1/banner/HYPERWEAVE/brutalist-emerald.static
automata chrome-horizon brutalist-emerald
Surface #04060A void #000a14 deep void #14532D dark field
Signal #1E849A teal · #6B3B8A amethyst #5ba3d4 metallic blue #10B981 emerald
Profile brutalist (cellular paradigm) chrome (smooth, env-mapped) brutalist (sharp, zero-radius)
Chromatic variant blue / purple / bifamily
Motions static, chromatic-pulse, rimrun, corner-trace 5 border SMIL 5 border + 9 kinetic

The two automata signal badges share a URL and differ only in the chromatic variant: ?family=blue renders the teal palette, ?family=purple the amethyst, ?family=bifamily both. The parameter name is provisional and likely to be renamed to ?variant= once brutalist skin variants land — treat the surface as unstable.

Error fallback — SMPTE NO SIGNAL

Every broken <img> URL renders the SMPTE RP 219 test pattern with ERR_NNN matching the HTTP status, instead of a browser broken-image icon.

404 error fallback (intentionally broken URL)

/v1/badge/TEST/value/nonexistent-genome.static — unknown genome → HTTP 404, value slab reads ERR_404.


Install

uv add hyperweave
# or
pip install hyperweave

Requires Python 3.12+.


Entry Points

Four interfaces, one pipeline. Every path produces the same artifact through the same compositor.

MCP CLI
HTTP API Python SDK

MCP

{
  "mcpServers": {
    "hyperweave": {
      "command": "hyperweave",
      "args": ["mcp"]
    }
  }
}
hw_compose(type="badge", title="build", value="passing", genome="brutalist-emerald")
hw_live(provider="github", identifier="anthropics/claude-code", metric="stars")
hw_kit(type="readme", genome="brutalist-emerald", badges="build:passing")
hw_discover(what="all")

CLI

# Badge
hyperweave compose badge "build" "passing" --genome brutalist-emerald

# Strip with metrics
hyperweave compose strip "readme-ai" "STARS:2.9k,FORKS:278" -g brutalist-emerald

# Banner with kinetic motion
hyperweave compose banner "HYPERWEAVE" -g brutalist-emerald -m cascade

# Artifact kit
hyperweave kit readme -g brutalist-emerald --badges "build:passing,version:v0.2.0" --social "github,discord"

# Profile card (live GitHub data)
hyperweave compose stats eli64s -g chrome-horizon -o stats.svg

# Star history chart
hyperweave compose chart stars eli64s/readme-ai -g brutalist-emerald -o chart.svg

# Timeline / roadmap from JSON items
hyperweave compose timeline --data roadmap.json -g chrome-horizon -o timeline.svg

# Custom genome from a local JSON file (validated against the profile contract)
hyperweave compose badge "DEPLOY" "live" --genome-file ./my-genome.json
hyperweave validate-genome ./my-genome.json

HTTP API

# URL grammar: /v1/{type}/{title}/{value}/{genome}.{motion}
curl https://hyperweave.app/v1/strip/readme-ai/brutalist-emerald.static?value=STARS:2.9k,FORKS:278

# Live data binding
curl https://hyperweave.app/v1/live/github/anthropics/claude-code/stars/chrome-horizon

# POST compose
curl -X POST https://hyperweave.app/v1/compose \
  -H "Content-Type: application/json" \
  -d '{"type":"banner","title":"HYPERWEAVE","genome":"brutalist-emerald","motion":"drop"}'

# Local server
hyperweave serve --port 8000

Session Telemetry

HyperWeave parses Claude Code transcripts into visual receipts — cost, tokens, tool distribution, cognitive phases. The artifact isn't a visualization of data. It is the record.

# Manual
hyperweave session receipt .claude/session.jsonl -o receipt.svg

# Autonomous — install once, every session gets a receipt
hyperweave install-hook

After install-hook, every Claude Code session automatically drops a receipt SVG into .hyperweave/receipts/. No config, no server, no manual step.

session receipt

rhythm strip


How It Works

Every artifact is the output of a single composition formula:

ARTIFACT = FRAME × PROFILE × GENOME × SLOTS × MOTION × ENVIRONMENT

Python builds context dicts. Jinja2 builds SVG. YAML defines config. Three layers, no mixing. Zero f-string SVG in Python.

ComposeSpec → engine.py → assembler.py (CSS) → lanes.py (validate) → templates.py (Jinja2) → SVG

Every artifact ships with:

  • Semantic metadata — provenance, reasoning, spatial trace, aesthetic DNA. Machine-readable context so the next agent in the chain knows what it's looking at and why.
  • CSS state machinesdata-hw-status, data-hw-state, data-hw-regime drive visual transitions through the Custom Property Bridge. No JavaScript.
  • Pure CSS/SMIL animation — all motion uses compositor-safe properties (transform, opacity, filter). No script tags. Works inside GitHub's Camo proxy, email clients, Notion embeds — anywhere SVGs render.
  • Accessibility — WCAG AA, prefers-reduced-motion, prefers-color-scheme, forced-colors, ARIA markup. Structural, not decorative.
Dimension Count
Frame types 15 (badge, strip, banner, icon, divider, marquee-h/v/counter, receipt, rhythm-strip, master-card, catalog, stats, chart, timeline)
Genomes 3 (automata, brutalist-emerald, chrome-horizon)
Motion configs 15 (1 static + 5 border SMIL + 9 kinetic CSS)
Glyphs 99 (93 Simple Icons + 6 geometric)
Divider variants 6 (block, cellular-dissolve, current, takeoff, void, zeropoint)
Metadata tiers 5 (Tier 0 silent → Tier 4 reasoning)
Paradigms 4 per frame (default, brutalist, chrome, cellular) — per-frame dispatch from genome
Bundled fonts 3 (JetBrains Mono, Orbitron, Chakra Petch — base64-embedded)

Stack: Pydantic, FastAPI, FastMCP v3, Jinja2, Typer.


Roadmap

roadmap


Contributing

HyperWeave is early. If you're interested in building genomes, extending frame types, or just seeing what this looks like in your own README — join the Discord.


InnerAura Labs

Discord   Instagram   LinkedIn   TikTok   X   YouTube

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyperweave-0.2.12.tar.gz (908.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hyperweave-0.2.12-py3-none-any.whl (452.7 kB view details)

Uploaded Python 3

File details

Details for the file hyperweave-0.2.12.tar.gz.

File metadata

  • Download URL: hyperweave-0.2.12.tar.gz
  • Upload date:
  • Size: 908.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hyperweave-0.2.12.tar.gz
Algorithm Hash digest
SHA256 40c5bfeb1cf127b4b7ddeb3801dc40b2a2e5da81be300870a2218c29b371538e
MD5 f84bb6089826e7007e5f398a91640b9d
BLAKE2b-256 02025511322088afb32f8e5570c5b539fb83b68ea8eb8cfb831ded3c006424de

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperweave-0.2.12.tar.gz:

Publisher: publish.yml on InnerAura/hyperweave

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyperweave-0.2.12-py3-none-any.whl.

File metadata

  • Download URL: hyperweave-0.2.12-py3-none-any.whl
  • Upload date:
  • Size: 452.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hyperweave-0.2.12-py3-none-any.whl
Algorithm Hash digest
SHA256 fd596fc4424e68d4b892ada590c262b1791013b299013d1ef23517a9956b48d0
MD5 882466e525b4e59299cec616cbf8e08a
BLAKE2b-256 e7305cc9ef65bb08b56d751d9a82383fd7f9289d6035212561f13e19901df330

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperweave-0.2.12-py3-none-any.whl:

Publisher: publish.yml on InnerAura/hyperweave

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page