loading…
Search for a command to run...
loading…
HyperWeave gives agents a visual output surface: structured data in, branded SVG out. No JavaScript, no runtime. Works anywhere an image can be embedded. Badges
HyperWeave gives agents a visual output surface: structured data in, branded SVG out. No JavaScript, no runtime. Works anywhere an image can be embedded. Badges, cards, charts, dashboards, diagrams, and more.
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.
When an agent needs to produce something visual — a status card, a dashboard, a receipt of its work — it generates React, HTML, or pixels, locked in the environment that made it. Embed it in markdown, pass it to another agent — it breaks or loses context. There's no portable visual primitive for agents.
HyperWeave is that primitive. One API call returns a self-contained SVG with data binding, branding, and machine-readable metadata baked in. No JavaScript, no dependencies, no runtime. It renders in GitHub READMEs, Slack, Notion, docs, your site, email, VS Code, or terminal. Every surface that renders an <img> tag is a HyperWeave surface.
Every AI coding session produces a receipt — cost, tokens, tool distribution, session rhythm. One install, fully automatic.
hyperweave install-hook
262M tokens · 562 calls · 52 stages · $175 — voltage
Rhythm strip — the same session data at 92px tall
Same data, different livery — claude-code
Codex transcripts auto-detect from the JSONL shape
The livery matches the agent that produced the session:
| Agent | Livery |
|---|---|
| Claude Code | claude-code |
| Codex | codex |
| — | voltage |
| — | cream |
Auto-detected from the session transcript. Pin a different default with hyperweave install-hook --genome voltage.
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.
12 variants: celadon · carbon · alloy · temper · pigment · ember · archive · signal · pulse · depth · afterimage · primer
| Signals state machine |
|
|---|---|
| Dashboard strip |
|
| Profile stats card |
|
| Star Chart star history |
|
| Marquee horizontal ticker |
|
| Icons circle + square |
|
| Divider seam |
|
16 tones: violet · teal · bone · steel · amber · jade · magenta · cobalt · toxic · solar · abyssal · crimson · sulfur · indigo · burgundy · copper. Pair any two via ?variant=primary&pair=secondary.
| Signals state machine |
|
|---|---|
| Dashboard strip |
|
| Profile stats card |
|
| Star Chart star history |
|
| Marquee horizontal ticker |
|
| Icons square |
|
| Divider dissolve |
|
5 variants: horizon · abyssal · lightning · graphite · moth
| Signals state machine |
|
|---|---|
| Dashboard strip |
|
| Profile stats card |
|
| Star Chart star history |
|
| Marquee horizontal ticker |
|
| Icons circle + square |
|
| Divider band |
|
| brutalist | automata | chrome | |
|---|---|---|---|
| Aesthetic | Raw material | Living cellular grid | Metallic precision |
| Variants | 12 (6 dark, 6 light) | 16 tones, any two pair | 5 named |
| Motion | Animated border SMIL | Animated cell grid | Animated border SMIL |
| Divider | seam |
dissolve |
band |
/a/inneraura/dividers/| block De Stijl composition |
|
|---|---|
| current animated rainbow bezier |
|
| takeoff rocket trajectory + thrust |
|
| void spectral bloom + hover state |
|
| zeropoint aurora rule + nexus beacon |
|
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.
/v1/badge/{title}/{value}/{unknown-genome}.statichyperweave.app/v1/badge/TEST/value/unknown-genome.staticuv add hyperweave
# or
pip install hyperweave
Requires Python 3.12+.
Four interfaces, one pipeline. Every path produces the same artifact through the same compositor.
{
"mcpServers": {
"hyperweave": {
"command": "hyperweave",
"args": ["mcp"]
}
}
}
# Static badge
hw_compose(type="badge", title="BUILD", value="passing", genome="brutalist")
# Data-driven badge — unified token grammar (gh:owner/repo.metric, pypi:pkg.metric, ...)
hw_compose(type="badge", title="STARS", data="gh:anthropics/claude-code.stars", genome="brutalist")
# Strip with multiple live metrics
hw_compose(type="strip", title="readme-ai",
data="gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version",
genome="chrome")
# Marquee with mixed text + live tokens
hw_compose(type="marquee-horizontal",
data="text:NEW RELEASE,gh:anthropics/claude-code.stars,text:DOWNLOAD",
genome="brutalist")
# Discoverable shortcut for single-metric live badges
hw_live(provider="github", identifier="anthropics/claude-code", metric="stars")
hw_kit(type="readme", genome="brutalist", badges="build:passing")
hw_discover(what="all")
# Badge
hyperweave compose badge "build" "passing" --genome brutalist
# Strip with metrics
hyperweave compose strip "readme-ai" "STARS:2.9k,FORKS:278" -g brutalist
# Live data through the unified --data token grammar
hyperweave compose badge "STARS" --data 'gh:anthropics/claude-code.stars' -g brutalist
# Marquee with mixed text + live tokens
hyperweave compose marquee-horizontal --data 'text:NEW RELEASE,gh:owner/repo.stars,text:DOWNLOAD' -g brutalist
# Artifact kit
hyperweave kit readme -g brutalist --badges "build:passing,version:v0.2.0" --social "github,discord"
# Profile card (live GitHub data, path-segment identity)
hyperweave compose stats eli64s -g chrome -o stats.svg
# Star history chart
hyperweave compose chart stars eli64s/readme-ai -g brutalist -o chart.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
# URL grammar: /v1/{type}/{title}/{value}/{genome}.{motion}
curl 'https://hyperweave.app/v1/strip/readme-ai/brutalist.static?value=STARS:2.9k,FORKS:278'
# Live data via the unified ?data= grammar (works on badge / strip / marquee)
curl 'https://hyperweave.app/v1/badge/STARS/chrome.static?data=gh:anthropics/claude-code.stars'
curl 'https://hyperweave.app/v1/strip/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks'
curl 'https://hyperweave.app/v1/marquee/SCROLL/brutalist.static?data=text:NEW%20RELEASE,gh:anthropics/claude-code.stars'
# Chromatic variants (automata: 16 solo tones, pair any two via &pair=...; chrome: horizon/abyssal/lightning/graphite/moth)
curl 'https://hyperweave.app/v1/badge/PYPI/automata.static?variant=teal&pair=violet&data=pypi:hyperweave.version'
curl 'https://hyperweave.app/v1/badge/build/passing/automata.static?size=compact'
# Genome-themed dividers
curl 'https://hyperweave.app/v1/divider/band/chrome.static'
curl 'https://hyperweave.app/v1/divider/seam/brutalist.static'
curl 'https://hyperweave.app/v1/divider/dissolve/automata.static'
# Genome-agnostic dividers
curl 'https://hyperweave.app/a/inneraura/dividers/zeropoint'
# POST compose
curl -X POST https://hyperweave.app/v1/compose \
-H "Content-Type: application/json" \
-d '{"type":"strip","title":"hyperweave","genome":"brutalist","value":"STARS:2.9k"}'
# Local server
hyperweave serve --port 8000
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:
data-hw-status, data-hw-state, data-hw-regime drive visual transitions through the Custom Property Bridge. No JavaScript.transform, opacity, filter). No script tags. Works inside GitHub's Camo proxy, email clients, Notion embeds — anywhere SVGs render.prefers-reduced-motion, prefers-color-scheme, forced-colors, ARIA markup. Structural, not decorative.| Dimension | Count |
|---|---|
| Frame types | 9 (badge, strip, icon, divider, marquee-horizontal, stats, chart, receipt, rhythm-strip) |
| Genomes | 3 (automata, brutalist, chrome) |
| Motion configs | 6 (1 static + 5 border SMIL) |
| Glyphs | 99 (93 Simple Icons + 6 geometric) |
| Divider variants | 8 — 3 genome-themed (band chrome, seam brutalist, dissolve automata) + 5 genome-agnostic (block, current, takeoff, void, zeropoint) at /a/inneraura/dividers/ |
| Metadata tiers | 5 (Tier 0 silent → Tier 4 reasoning) |
| Bundled fonts | 4 families / 5 weights (JetBrains Mono, Orbitron, Chakra Petch, Barlow Condensed 700/900 — base64-embedded) |
Stack: Pydantic, FastAPI, FastMCP v3, Jinja2, Typer.
HyperWeave binds live data into any artifact through a unified token grammar (?data=...). Tokens are comma-separated; each token is either a literal (text:, kv:) or a live fetch (<provider>:<identifier>.<metric>).
| Prefix | Source | Identifier shape | Metrics |
|---|---|---|---|
gh / github |
GitHub | owner/repo |
stars, forks, watchers, issues, license, language, build |
pypi |
PyPI + pypistats.org | package |
version, license, python_requires, downloads |
npm |
npm registry | package |
version, license, downloads |
hf / huggingface |
HuggingFace Hub | org/model |
downloads, likes, tags, pipeline_tag, library_name |
docker |
Docker Hub | namespace/repo |
pull_count, star_count, last_updated |
arxiv |
arXiv API | id (e.g. 2310.06825) |
title, authors, published, categories, summary |
text |
literal | — | renders the payload as displayed text |
kv |
literal | KEY=VALUE |
static role-tagged value |
Live tokens cache for 5–10 minutes per provider. Failures cache for 60s and surface as the em-dash sentinel (—) instead of fabricating zero values. Each provider runs through its own circuit breaker so a single upstream outage cannot trip unrelated fetches.
Embedded commas inside text: and kv: values escape as \,.
→ Open an issue to request a connector.
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.
Выполни в терминале:
claude mcp add hyperweave -- npx Безопасность
Низкий рискАвтоматическая эвристика по публичным данным — не гарантия безопасности.