Skip to main content
HyperWeave

The artifact layer for agent-human representations.
One API call, one SVG. No JavaScript. Works everywhere.

strip


The Problem

Agents need to show their work through plans, diagrams, tables, receipts, and more. Markdown is portable but visually limited. HTML is expressive but not always durable across surfaces. Images are easy to share but lose their structure. Raw model output is flexible but inconsistent.

HyperWeave turns structured specs into deterministic visual artifacts. Each artifact is a self-contained SVG with layout, branding, data binding, and machine-readable metadata baked in. No JavaScript, no runtime, no dependencies. Readable by humans, recoverable by agents, and portable anywhere an <img> tag renders.

Visual output formats for AI agents: SVG vs Markdown vs HTML across cross-surface rendering, agent-readable metadata, visual fidelity, token efficiency, and zero dependencies

View as table
FORMAT Renders identically across surfaces Agent-Readable Metadata Visual Fidelity Token Efficiency Zero Dependencies SCORE
SVG ~ 4.5
MARKDOWN ~ ~ 3
HTML ~ 2.5

Agentic Artifacts

Hyperweave parses agent coding sessions into a portable SVG artifact, including the model and tool usage, token spend, and context load. Install the hook once and every session emits one:

pip install hyperweave
hyperweave install-hook

A HyperWeave session receipt for a Claude Code run: $1,787.28 across 1686.0M tokens and 3795 calls, opus-4.8 dominant, with a tool-spend breakdown, a cost-by-model bar, and a context-load curve.

Claude Code · $1,787.28 · 1686.0M tokens · 3795 calls · opus-4.8

A HyperWeave session receipt for a Codex run: $10.72 across 32.4M tokens and 346 calls, gpt-5.3.

Codex · $10.72 · 32.4M tokens · 346 calls · gpt-5.3

The same Claude Code session printed as a thermal register tape: tools as line items priced in tokens, models as payment tender, failed calls as voids.

The same Claude session if you fancy a proper receipt

The hook reads your session's JSONL transcript from disk and detects the harness automatically (Claude Code or Codex). Theme it with any of the 8 primer themes, or the paper receipt style above.

hyperweave install-hook --genome cream   # any primer theme
hyperweave install-hook --genome raw     # the paper receipt

Open an issue to request a missing agent harness.


Diagrams

Diagrams encode topology, not pixels. HyperWeave supports the following diagram types: pipeline, fanout, fanin, hub, cycle, dag, lanes, state-machine, sequence, tree, and comparison. Nodes carry brand logo glyphs, labels, and tags. Edges carry labels and motion to help process information better. Every diagram renders as a self-contained SVG with its full spec and hash-verified digest embedded for agents to read directly. Render them in a markdown file, send to Slack as an image, or render directly in your terminal.

One call, best model: a model router fans out to Claude, Gemini, OpenAI, DeepSeek, Kimi, and Qwen, each door labelled with the capability it is routed for

Compose this inline
hyperweave compose diagram --spec-file /dev/stdin -g primer --variant porcelain --surface inlay --face light -o provider-router-light.svg <<'JSON'
{
  "topology": "fanout",
  "orientation": "horizontal",
  "title": "One call, best model",
  "subtitle": "Fanout · horizontal",
  "zones": ["router", "providers"],
  "node_style": "card+glyph",
  "glyph_tint": "full",
  "nodes": [
    { "id": "router", "label": "model router", "desc": "1 call, best model\ncapability-routed", "role": "hero", "kind": "router", "gather": true },
    { "id": "claude",   "label": "Claude",   "desc": "long-context", "glyph": "anthropic" },
    { "id": "gemini",   "label": "Gemini",   "desc": "multimodal",   "glyph": "gemini" },
    { "id": "openai",   "label": "OpenAI",   "desc": "tool-use",     "glyph": "openai" },
    { "id": "deepseek", "label": "DeepSeek", "desc": "reasoning",    "glyph": "deepseek" },
    { "id": "kimi",     "label": "Kimi",     "desc": "agentic",      "glyph": "kimi" },
    { "id": "qwen",     "label": "Qwen",     "desc": "multilingual", "glyph": "qwen" }
  ],
  "edges": [
    { "source": "router", "target": "claude",   "label": "route", "label_style": "chip", "relation": "drift", "marker": "arrow" },
    { "source": "router", "target": "gemini",   "relation": "drift", "marker": "arrow" },
    { "source": "router", "target": "openai",   "relation": "drift", "marker": "arrow" },
    { "source": "router", "target": "deepseek", "relation": "drift", "marker": "arrow" },
    { "source": "router", "target": "kimi",     "relation": "drift", "marker": "arrow" },
    { "source": "router", "target": "qwen",     "relation": "drift", "marker": "arrow" }
  ]
}
JSON

Two feeds in, three surfaces out: a spec and live connector data arrive on the left of one HyperWeave artifact, which fans out to a GitHub README, a Slack unfurl, and an agent reading the payload

Compose this inline
hyperweave extract broadcast-split-light.svg --respond payload > broadcast-split.json
hyperweave compose diagram --spec-file broadcast-split.json -g primer --variant porcelain --surface inlay --face light -o broadcast-split-light.svg

Every request in, every artifact out: Claude Code, Codex, and MCP call the compose engine from the left; GitHub, Slack, and Obsidian receive the artifacts on the right

Compose this inline
hyperweave extract compose-gate-light.svg --respond payload > compose-gate.json
hyperweave compose diagram --spec-file compose-gate.json -g primer --variant porcelain --surface inlay --face light -o compose-gate-light.svg

Six verbs, one mouth: compose writes into the artifact and transform writes out, while extract, verify, diff, and query bundle into a single read gathered at the artifact's face

Compose this inline
hyperweave extract verbs-mouth-light.svg --respond payload > verbs-mouth.json
hyperweave compose diagram --spec-file verbs-mouth.json -g primer --variant porcelain --surface inlay --face light -o verbs-mouth-light.svg

Frontier serving DAG: requests through one OpenRouter key to Anthropic, OpenAI, and Gemini, all sharing a Redis cache, with telemetry skipping the ranks to Grafana

Compose this inline
hyperweave compose diagram --spec-file dag-providers -g primer --variant noir --surface inlay --face light -o frontier-serving-light.svg

dag-providers is a bundled preset; the URL API renders it by name at /v1/diagram/dag-providers/primer.static.

The data flywheel: Generate, Distribute, Capture, and Improve seated on a dashed ring around a hero that compounds each turn

Compose this inline
hyperweave compose diagram --spec-file cycle-flow -g primer --variant porcelain --surface inlay --face light -o cycle-flow-light.svg

cycle-flow is a bundled preset; the URL API renders it by name at /v1/diagram/cycle-flow/primer.static.

Dependency audit tree: my-app roots direct dependencies react, lodash, and axios, transitive children hang on dashed edges, and health dots flag what is outdated or vulnerable

Compose this inline
hyperweave compose diagram --spec-file tree-health -g primer --variant porcelain --surface inlay --face light -o tree-health-light.svg

tree-health is a bundled preset; the URL API renders it by name at /v1/diagram/tree-health/primer.static.

Pick a layout

Flows pipeline · fanout · fanin stages in a line, one-to-many, many-to-one
Cycles cycle · state-machine a loop, legal state transitions
Structure dag · tree · lanes dependencies, hierarchy, ownership rows
Centered hub one thing at the middle of its world
Time sequence who calls whom, in order
Side by side comparison two options on one sheet

Eleven layouts, forty-four bundled presets, one spec vocabulary. Variations are values of orientation, not layouts of their own:

dag · pipeline horizontal · vertical
fanout horizontal · bilateral · upward · downward · radial
tree horizontal · radial
cycle ring · orbit
fanin · hub · lanes · sequence · state-machine · comparison horizontal

Render any preset by name at /v1/diagram/{preset}/primer.static, or run hyperweave discover diagram for every preset, orientation and field.


Matrices

HyperWeave matrices are structured tables rendered as portable SVGs. A single JSON description can produce comparison grids, registries, tiers, benchmark tables, heatmaps, chips, glyphs, bars, and status maps, while carrying a machine-readable payload for agents.

comparison matrix: how GitHub, VS Code, Slack, Gmail, and AI agents each ingest the same SVG

One frame, every table · generated, not drawn

View as table
READER PIXELS MOTION READS VIA
GitHub README github Yes camo, css animation
VS Code preview vscode Yes markdown preview
Slack unfurl slack ~ - image proxy
Gmail body gmail ~ - img tag
Agent mcp - hw:payload, hwz/1, markdown twin
Compose this inline
hyperweave compose matrix --spec-file /dev/stdin -g primer --variant porcelain -o one-artifact.svg <<'JSON'
{
  "title": "One artifact. Many readers.",
  "subtitle": "how each consumer ingests the same SVG",
  "columns": [
    {
      "id": "reader",
      "label": "READER",
      "role": "label"
    },
    {
      "id": "mark",
      "label": "",
      "kind": "glyph",
      "glyph_tint": "full"
    },
    {
      "id": "pixels",
      "label": "PIXELS",
      "kind": "check"
    },
    {
      "id": "motion",
      "label": "MOTION",
      "kind": "pill"
    },
    {
      "id": "via",
      "label": "READS VIA",
      "kind": "chip"
    }
  ],
  "rows": [
    {
      "label": "GitHub README",
      "cells": [
        {
          "glyph": "github"
        },
        {
          "state": "full"
        },
        {
          "state": "on"
        },
        {
          "chips": [
            "camo",
            "css animation"
          ]
        }
      ]
    },
    {
      "label": "VS Code preview",
      "cells": [
        {
          "glyph": "vscode"
        },
        {
          "state": "full"
        },
        {
          "state": "on"
        },
        {
          "chips": [
            "markdown preview"
          ]
        }
      ]
    },
    {
      "label": "Slack unfurl",
      "cells": [
        {
          "glyph": "slack"
        },
        {
          "state": "partial"
        },
        {
          "state": "off"
        },
        {
          "chips": [
            "image proxy"
          ]
        }
      ]
    },
    {
      "label": "Gmail body",
      "cells": [
        {
          "glyph": "gmail"
        },
        {
          "state": "partial"
        },
        {
          "state": "off"
        },
        {
          "chips": [
            "img tag"
          ]
        }
      ]
    },
    {
      "label": "Agent",
      "cells": [
        {
          "glyph": "mcp"
        },
        {
          "state": "none"
        },
        {
          "state": "off"
        },
        {
          "chips": [
            "hw:payload",
            "hwz/1",
            "markdown twin"
          ]
        }
      ]
    }
  ],
  "notes": "pixels for humans · hw:payload for agents"
}
JSON
# Connectors preset
https://hyperweave.app/v1/matrix/connectors/primer.static?variant=porcelain

# Any table, one URL: base64url MatrixSpec JSON (8 KB cap)
https://hyperweave.app/v1/matrix/custom/primer.static?spec=<base64url>

# CLI, with the markdown twin alongside
hyperweave compose matrix --spec-file table.json -g primer --variant porcelain --markdown-out table.md

Another matrix configuration for visualizing benchmarks:

Frontier vs open-weights models compared on SWE-bench Verified coding score against input and output token price, June 2026

View as table
MODEL SWE-bench Verified INPUT (per Mtok) OUTPUT (per Mtok)
FRONTIER · CLOSED WEIGHTS
Claude Fable 5 anthropic 95 % $10 $50
Claude Opus 4.8 anthropic 88.6 % $5 $25
GPT-5.5 openai 82.6 % $5 $30
Gemini 3.1 Pro gemini 80.6 % $2 $12
OPEN WEIGHTS
DeepSeek V4-Pro deepseek 80.6 % $0.44 $0.87
Kimi K2.6 kimi 80.2 % $0.95 $4
GLM-5 zai 77.8 % $1 $3.2
Mistral Medium 3.5 mistral 77.6 % $1.5 $7.5

SWE-bench Verified % · USD per Mtok · current flagships, jun 2026 · sources: vals.ai · artificialanalysis.ai · model cards

Compose this inline
hyperweave compose matrix --spec-file /dev/stdin -g primer --variant cream --surface twin --faces -o frontier-benchmarks.svg <<'JSON'
{
  "title": "Frontier vs Open",
  "subtitle": "coding & price · SWE-bench Verified against price per million tokens · current flagships, jun 2026",
  "columns": [
    {
      "id": "model",
      "label": "MODEL",
      "kind": "text",
      "align": "left",
      "role": "label"
    },
    {
      "id": "mark",
      "label": "",
      "kind": "glyph",
      "align": "center",
      "glyph_tint": "full"
    },
    {
      "id": "swe",
      "label": "SWE-bench Verified",
      "kind": "numeric",
      "align": "center",
      "polarity": "higher",
      "unit": "%"
    },
    {
      "id": "pin",
      "label": "INPUT",
      "sublabel": "per Mtok",
      "kind": "numeric",
      "align": "center",
      "polarity": "lower",
      "unit": "$"
    },
    {
      "id": "pout",
      "label": "OUTPUT",
      "sublabel": "per Mtok",
      "kind": "numeric",
      "align": "center",
      "polarity": "lower",
      "unit": "$"
    }
  ],
  "rows": [
    {
      "label": "Claude Fable 5",
      "cells": [
        {
          "glyph": "anthropic"
        },
        {
          "value": 95.0
        },
        {
          "value": 10
        },
        {
          "value": 50
        }
      ],
      "section": "FRONTIER · CLOSED WEIGHTS"
    },
    {
      "label": "Claude Opus 4.8",
      "cells": [
        {
          "glyph": "anthropic"
        },
        {
          "value": 88.6
        },
        {
          "value": 5
        },
        {
          "value": 25
        }
      ],
      "section": "FRONTIER · CLOSED WEIGHTS"
    },
    {
      "label": "GPT-5.5",
      "cells": [
        {
          "glyph": "openai"
        },
        {
          "value": 82.6
        },
        {
          "value": 5
        },
        {
          "value": 30
        }
      ],
      "section": "FRONTIER · CLOSED WEIGHTS"
    },
    {
      "label": "Gemini 3.1 Pro",
      "cells": [
        {
          "glyph": "gemini"
        },
        {
          "value": 80.6
        },
        {
          "value": 2
        },
        {
          "value": 12
        }
      ],
      "section": "FRONTIER · CLOSED WEIGHTS"
    },
    {
      "label": "DeepSeek V4-Pro",
      "cells": [
        {
          "glyph": "deepseek"
        },
        {
          "value": 80.6
        },
        {
          "value": 0.44
        },
        {
          "value": 0.87
        }
      ],
      "section": "OPEN WEIGHTS"
    },
    {
      "label": "Kimi K2.6",
      "cells": [
        {
          "glyph": "kimi"
        },
        {
          "value": 80.2
        },
        {
          "value": 0.95
        },
        {
          "value": 4.0
        }
      ],
      "section": "OPEN WEIGHTS"
    },
    {
      "label": "GLM-5",
      "cells": [
        {
          "glyph": "zai"
        },
        {
          "value": 77.8
        },
        {
          "value": 1.0
        },
        {
          "value": 3.2
        }
      ],
      "section": "OPEN WEIGHTS"
    },
    {
      "label": "Mistral Medium 3.5",
      "cells": [
        {
          "glyph": "mistral"
        },
        {
          "value": 77.6
        },
        {
          "value": 1.5
        },
        {
          "value": 7.5
        }
      ],
      "section": "OPEN WEIGHTS"
    }
  ],
  "sections": [
    "FRONTIER · CLOSED WEIGHTS",
    "OPEN WEIGHTS"
  ],
  "notes": "SWE-bench Verified % · USD per Mtok · current flagships, jun 2026 · sources: vals.ai · artificialanalysis.ai · model cards"
}
JSON

  • Inside the file: the payload holds the rows, sections and axis units as data, so an agent reads the table back and re-renders it instead of OCR'ing a picture of one. Inside every artifact has the mechanics.
  • Markdown twin: every matrix has a GFM projection of the same table. --markdown-out on the CLI, respond:"json" over HTTP, render_target="markdown" over MCP.

Inside every artifact

Every HyperWeave artifact is a re-ingestible object, not just an image. It carries its full spec (hw:payload) and a hash-verified digest (hwz/1 envelope), so an agent can work with it directly, never parsing pixels. Two tiers, two jobs. Here they are inside a diagram artifact:

recreate & modify: the complete spec

<hw:payload schema="diagram/1" media-type="application/json">
{
  "spec": {
    "title": "Service dependencies",
    "subtitle": "Service dependencies · a gateway fans to domain services, each grounding on its store",
    "topology": "dag",
    "zones": ["subsystems"],
    "nodes": [
      { "id": "web",     "label": "web",         "desc": "React SPA", "glyph": "react" },
      { "id": "gateway", "label": "API gateway", "role": "hero",      "kind": "router" },
      { "id": "auth",    "label": "Auth",        "desc": "tokens",    "kind": "shield" }
      <!-- … 5 more nodes · lossless -->
    ],
    "edges": [
      { "source": "web",     "target": "gateway",  "relation": "assert" },
      { "source": "gateway", "target": "auth",     "relation": "assert" },
      { "source": "auth",    "target": "postgres", "label": "reads", "label_style": "chip", "relation": "assert" }
      <!-- … 6 more edges · lossless -->
    ]
  }
}
</hw:payload>

the ≈200-token digest: know what an artifact is without opening it

<hw:envelope format="hwz/1" media-type="application/json">
{
  "v": "hwz/1",
  "id": "sha256:48b3de6494886c678f4c8efab4f0aa105922e315f8f62145548e17935175fb11",
  "k": "diagram",
  "title": "Service dependencies",
  "intent": "topology diagram: Service dependencies",
  "state": "active",
  "data": {
    "pattern": "dag",
    "n": 8,
    "hero": "API gateway",
    "nodes": { "web": "React SPA", "API gateway": "", "Auth": "tokens", "Orders": "Python svc", "Search": "query svc", "Postgres": "primary", "Kafka": "events", "Redis": "cache" },
    "edges": ["web  API gateway", "API gateway  Auth", "API gateway  Orders", "API gateway  Search", "Auth  Postgres (reads)", "Orders  Postgres", "Orders  Kafka (emits)", "Search  Redis (cache)", "API gateway  Postgres (direct read)"]
  },
  "frames": [{ "t": "diagram", "l": "Service dependencies" }],
  "prov": { "by": "hyperweave", "ver": "0.4.0a6", "genome": "primer.porcelain", "ts": "2026-07-15T02:01:15.613547+00:00" }
}
</hw:envelope>

The envelope is the lossy digest; only the payload round-trips.

  • The round-trip: extract hw:payload, edit the JSON, POST /v1/compose with it as diagram: byte-identical re-render. The envelope's id is the sha256 of the payload, so an agent verifies "this artifact really is this data" before trusting either.
  • The look is a pointer, not a copy: prov.genome: "primer.porcelain" names the aesthetics; payload plus that one string is the entire recreation recipe.

Read at a budget: the verb algebra

Pixels for humans, compact JSON for agents. The verb algebra is the read/write grammar over the two tiers: every verb picks how much of the artifact to load, from the ≈200-token envelope to the full payload, and no verb ever parses pixels.

The verb algebra: the artifact at the hub centre, composed from a spec, transformed with lineage, read without mutation (extract, verify, diff, query), shipping to documents and surfaces.

The verbs, split two ways.

Write · mints a new artifact, returns a content-addressed link (/v1/a/{id}), never inline SVG:

Verb What it does
compose a spec → an artifact
transform edit an artifact's spec → a new artifact (new id + lineage)

Read · never mutates the artifact:

Verb What it does Returns
extract pull the payload, envelope, or markdown back out the requested depth
verify recompute the id, proving the artifact is its data {valid, id}
validate check a spec against the schema before composing {valid, type, genome}
diff compare two artifacts the structural delta
query ask a question of the envelope the answer

Every verb runs the same over the CLI (hyperweave {verb}), HTTP (POST /v1/{verb}), and MCP (hw_{verb}):

# compose an artifact, then read its spec straight back, no rendering
hyperweave compose matrix --spec-file table.json -g primer -o table.svg
curl -X POST https://hyperweave.app/v1/extract \
  -H 'Content-Type: application/json' \
  -d '{"source": "<svg or /v1/a/{id} url>", "respond": "payload"}'

One transform, start to finish

Action 1

Compose a bundled preset (or your own spec). This is the diagram whose payload and envelope appear above:

hyperweave compose diagram --spec-file dag-mesh -g primer --variant porcelain --surface inlay --face light -o services.svg

Service dependencies DAG: a web SPA through an API gateway fanning to Auth, Orders, and Search, each grounding on its store

Action 2

Transform it through the artifact itself. transform verifies the hash, applies the patch to the embedded spec, re-validates, and mints a new artifact with a lineage entry recording exactly what changed:

hyperweave transform services.svg -o services-billing.svg --patch-json '[
  {"op": "add", "path": "/nodes/-", "value": {"id": "billing", "label": "Billing", "desc": "invoices", "glyph": "stripe"}},
  {"op": "add", "path": "/edges/-", "value": {"source": "gateway", "target": "billing", "relation": "assert"}},
  {"op": "add", "path": "/edges/-", "value": {"source": "billing", "target": "postgres", "label": "writes", "label_style": "chip", "relation": "assert", "exit": "bottom", "entry": "right"}}
]'

The result is a new artifact: new id, one more service in the fan, the envelope and lineage on stdout. -o writes the new pixels to services-billing.svg:

The same diagram after one transform: a Billing service joins the fan and its writes edge rides the bottom band into Postgres

Action 3

Flip it, and redress it. Layout is a field, so one op turns the whole graph. The look is a separate pointer, so the same graph re-renders in any variant:

hyperweave transform services-billing.svg -o services-vertical.svg \
  --patch-json '[{"op": "add", "path": "/orientation", "value": "vertical"}]'

hyperweave extract services-vertical.svg --respond payload \
  | hyperweave compose diagram --spec-file - --variant noir -o services-noir.svg

The same service graph turned vertical and rendered in the noir variant: the fan flows top to bottom, Billing keeps its place in it, and the writes edge takes the outside gutter into Postgres

  • A new artifact, not a redraw: one field changed, and the result carries a new id plus a lineage entry naming its parent. Point -o at the same path to overwrite in place; you keep the record of where it came from, not the old render.
  • Orientation keeps structure: boxes hold their order and authored sides follow the flow, so setting it back to horizontal returns the landscape diagram to the pixel.
  • Theme is a pointer: porcelain to noir re-renders the same spec in a different look, structure untouched.

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.

Four built-in genomes ship today. Custom genome generation via AI skill files coming soon.

primer · brutalist · automata · chrome

primer

PYPI - porcelain variant PYPI - cream variant PYPI - dusk variant PYPI - petrol variant
PYPI - noir variant PYPI - carbon variant PYPI - space variant PYPI - anvil variant

8 variants · 4 light: porcelain · cream · dusk · petrol
4 dark: noir · carbon · space · anvil

Signals
animated state marks
passing building warning critical
  • ping (passing) · spinner (building) · throb (warning) · shake (critical). One mark system, shared with the strip.
  • /v1/badge/{title}/{value}/primer.static?state={state}&variant={porcelain|cream|dusk|petrol|noir|carbon|space|anvil}
  • hyperweave.app/v1/badge/BUILD/passing/primer.static?state=passing&variant=porcelain
Dashboard
strip
strip
  • /v1/strip/{title}/primer.static?data={tokens}&subtitle={text}&glyph={glyph}&variant={variant}
  • hyperweave.app/v1/strip/readme-ai/primer.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github&variant=porcelain
Profile
card
stats
  • /v1/card/{username}/primer.static?variant={variant} (/v1/stats/… alias)
  • hyperweave.app/v1/card/eli64s/primer.static?variant=porcelain
Star Chart
star history
star chart
  • /v1/chart/stars/{owner}/{repo}/primer.static?variant={variant}
  • hyperweave.app/v1/chart/stars/eli64s/readme-ai/primer.static?variant=porcelain
Marquee
horizontal ticker
marquee
  • /v1/marquee/{title}/primer.static?data={tokens}&variant={variant}
  • hyperweave.app/v1/marquee/readme-ai/primer.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,gh:eli64s/readme-ai.contributors,pypi:readmeai.downloads,gh:eli64s/readme-ai.last_push,pypi:readmeai.version,gh:eli64s/readme-ai.language&variant=porcelain
Icons
circle + square
vercel - noir cloudflare - carbon docker - space github - anvil deepseek - porcelain anthropic - cream ollama - dusk nousresearch - petrol
  • /v1/icon/{glyph}/primer.static?shape={circle|square}&variant={variant}
  • hyperweave.app/v1/icon/github/primer.static?shape=circle&variant=noir
Divider
aura
primer aura divider
  • /v1/divider/aura/primer.static?variant={variant}
  • hyperweave.app/v1/divider/aura/primer.static?variant=porcelain

brutalist

PYPI - celadon variant PYPI - alloy variant PYPI - carbon variant PYPI - pigment variant PYPI - umber variant PYPI - ember variant PYPI - temper variant
PYPI - onyx variant PYPI - primer variant PYPI - depth variant PYPI - pulse variant PYPI - archive variant PYPI - signal variant PYPI - afterimage variant

22 variants · 8 dark: celadon · alloy · carbon · pigment · umber · ember · temper · onyx
14 light (6 shown): primer · depth · pulse · archive · signal · afterimage

Signals
state machine
passing warning critical
  • /v1/badge/{title}/{value}/{genome}.static?state={state}&variant={celadon|carbon|alloy|temper|pigment|ember|umber|onyx|archive|signal|pulse|depth|afterimage|primer}
  • hyperweave.app/v1/badge/BUILD/passing/brutalist.static?state=passing&variant=celadon
Dashboard
strip
strip
  • /v1/strip/{title}/{genome}.static?data={tokens}&subtitle={text}&glyph={glyph}&variant={variant}
  • hyperweave.app/v1/strip/hyperweave/brutalist.static?data=gh:InnerAura/hyperweave.stars,pypi:hyperweave.version,gh:InnerAura/hyperweave.build&subtitle=InnerAura/hyperweave&glyph=github&variant=celadon
Profile
card
stats - pulse (light)
stats - celadon (dark)
  • /v1/card/{username}/{genome}.static?variant={variant} (/v1/stats/… alias)
  • hyperweave.app/v1/card/eli64s/brutalist.static?variant=pulse
Star Chart
star history
star chart
  • /v1/chart/stars/{owner}/{repo}/{genome}.static?variant={variant}
  • hyperweave.app/v1/chart/stars/eli64s/readme-ai/brutalist.static?variant=celadon
Marquee
horizontal ticker
marquee
  • /v1/marquee/{title}/{genome}.static?data={tokens}&variant={variant}
  • hyperweave.app/v1/marquee/readme-ai/brutalist.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,gh:eli64s/readme-ai.contributors,gh:eli64s/readme-ai.watchers,pypi:readmeai.downloads,gh:eli64s/readme-ai.last_push,gh:eli64s/readme-ai.pull_requests,gh:eli64s/readme-ai.issues,gh:eli64s/readme-ai.build,pypi:readmeai.version,gh:eli64s/readme-ai.language&variant=celadon
Icons
circle + square
spotify - celadon docker - alloy github - carbon discord - pigment rust - umber anthropic - ember codex - temper hyperweave - onyx
  • /v1/icon/{glyph}/{genome}.static?shape={circle|square}&variant={variant}
  • hyperweave.app/v1/icon/github/brutalist.static?shape=circle&variant=celadon
Divider
seam · sigil
brutalist seam divider (dark)
brutalist sigil divider (light)
  • /v1/divider/{seam|sigil}/{genome}.static?variant={variant}
  • hyperweave.app/v1/divider/sigil/brutalist.static?variant=pulse

automata

PYPI - crimson variant PYPI - copper variant PYPI - bone variant PYPI - solar variant PYPI - amber variant PYPI - sulfur variant PYPI - toxic variant PYPI - jade variant
PYPI - abyssal variant PYPI - teal variant PYPI - steel variant PYPI - cobalt variant PYPI - indigo variant PYPI - violet variant PYPI - magenta variant PYPI - burgundy variant

16 tones · crimson · copper · bone · solar · amber · sulfur · toxic · jade
abyssal · teal · steel · cobalt · indigo · violet · magenta · burgundy
pair any two via ?variant=primary&pair=secondary

Signals
state machine
passing warning critical
  • /v1/badge/{title}/{value}/{genome}.static?state={state}
  • hyperweave.app/v1/badge/BUILD/passing/automata.static?state=passing&variant=bone
Dashboard
strip
strip
  • /v1/strip/{title}/automata.static?data={tokens}&variant={tone}&pair={tone}&subtitle={text}&glyph={glyph}
  • hyperweave.app/v1/strip/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&variant=bone&pair=steel&glyph=github
Profile
card
stats
  • /v1/card/{username}/{genome}.static?variant={tone} (/v1/stats/… alias)
  • hyperweave.app/v1/card/eli64s/automata.static?variant=bone
Star Chart
star history
star chart
  • /v1/chart/stars/{owner}/{repo}/{genome}.static?variant={tone}
  • hyperweave.app/v1/chart/stars/eli64s/readme-ai/automata.static?variant=bone
Marquee
horizontal ticker
marquee
  • /v1/marquee/{title}/automata.static?data={tokens}&variant={tone}
  • hyperweave.app/v1/marquee/readme-ai/automata.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,gh:eli64s/readme-ai.contributors,gh:eli64s/readme-ai.watchers,pypi:readmeai.downloads,gh:eli64s/readme-ai.last_push,gh:eli64s/readme-ai.pull_requests,gh:eli64s/readme-ai.issues,gh:eli64s/readme-ai.build,pypi:readmeai.version,gh:eli64s/readme-ai.language&variant=bone
Icons
square
docker cobalt discord indigo github bone huggingface sulfur anthropic solar youtube crimson spotify jade
  • /v1/icon/{glyph}/automata.static?shape=square&variant={tone}
  • hyperweave.app/v1/icon/docker/automata.static?shape=square&variant=cobalt
Divider
dissolve
automata dissolve divider
  • /v1/divider/dissolve/{genome}.static?variant={tone}&pair={tone}
  • hyperweave.app/v1/divider/dissolve/automata.static?variant=bone&pair=steel

chrome

PYPI - horizon variant PYPI - lightning variant PYPI - abyssal variant PYPI - moth variant PYPI - graphite variant

5 variants: horizon · lightning · abyssal · moth · graphite

Signals
state machine
passing warning critical
  • /v1/badge/{title}/{value}/{genome}.static?state={state}&variant={horizon|lightning|abyssal|moth|graphite}
  • hyperweave.app/v1/badge/BUILD/passing/chrome.static?state=passing&variant=horizon
Dashboard
strip
strip
  • /v1/strip/{title}/{genome}.static?data={tokens}&subtitle={text}&glyph={glyph}&variant={variant}
  • hyperweave.app/v1/strip/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,pypi:readmeai.version&subtitle=eli64s/readme-ai&glyph=github&variant=horizon
Profile
card
stats
  • /v1/card/{username}/{genome}.static?variant={variant} (/v1/stats/… alias)
  • hyperweave.app/v1/card/eli64s/chrome.static?variant=horizon
Star Chart
star history
star chart
  • /v1/chart/stars/{owner}/{repo}/{genome}.static?variant={variant}
  • hyperweave.app/v1/chart/stars/eli64s/readme-ai/chrome.static?variant=horizon
Marquee
horizontal ticker
marquee
  • /v1/marquee/{title}/{genome}.static?data={tokens}&variant={variant}
  • hyperweave.app/v1/marquee/readme-ai/chrome.static?data=gh:eli64s/readme-ai.stars,gh:eli64s/readme-ai.forks,gh:eli64s/readme-ai.contributors,gh:eli64s/readme-ai.watchers,pypi:readmeai.downloads,gh:eli64s/readme-ai.last_push,gh:eli64s/readme-ai.pull_requests,gh:eli64s/readme-ai.issues,gh:eli64s/readme-ai.build,pypi:readmeai.version,gh:eli64s/readme-ai.language&variant=horizon
Icons
circle + square
github - horizon notion - graphite rust - moth docker - lightning spotify - abyssal
  • /v1/icon/{glyph}/{genome}.static?shape={circle|square}&variant={variant}
  • hyperweave.app/v1/icon/youtube/chrome.static?shape=circle&variant=horizon
Divider
band
chrome band divider
  • /v1/divider/band/{genome}.static?variant={variant}
  • hyperweave.app/v1/divider/band/chrome.static?variant=horizon

primer brutalist automata chrome
Aesthetic Minimal Raw material Cellular Metallic
Variants 8 (4 dark, 4 light) 22 (8 dark, 14 light) 16 tones, any two pair 5 named
Motion Animated state marks Animated border SMIL Animated cell grid Animated border SMIL
Divider aura seam · sigil dissolve band

/a/inneraura/dividers/

block
De Stijl composition
block divider
  • /a/inneraura/dividers/{slug}
  • hyperweave.app/a/inneraura/dividers/block
current
animated rainbow bezier
current divider
  • /a/inneraura/dividers/{slug}
  • hyperweave.app/a/inneraura/dividers/current
takeoff
rocket trajectory + thrust
takeoff divider
  • /a/inneraura/dividers/{slug}
  • hyperweave.app/a/inneraura/dividers/takeoff
void
spectral bloom + hover state
void divider
  • /a/inneraura/dividers/{slug}
  • hyperweave.app/a/inneraura/dividers/void
zeropoint
aurora rule + nexus beacon
zeropoint divider
  • /a/inneraura/dividers/{slug}
  • hyperweave.app/a/inneraura/dividers/zeropoint

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/{title}/{value}/{unknown-genome}.static
  • hyperweave.app/v1/badge/TEST/value/unknown-genome.static

Surface modes. A genome renders onto one of three surfaces: plate (opaque, its own background), inlay (bare, borrows the host page's light/dark), or twin (opaque and scheme-aware). Standalone, slide, and raster destinations take plate. For a GitHub README, bake a pair instead of shipping one scheme-adaptive file: GitHub serves README images through Camo as a plain <img>, so a prefers-color-scheme rule inside the SVG answers to the reader's operating system, not the GitHub theme toggle. --face light|dark bakes one scheme per file and <picture> chooses between them. The CLI exposes --surface/--ground/--palette, and --faces writes both files in one call (<out>-light.svg / <out>-dark.svg).


Install

uv add hyperweave            # CLI + SVG rendering (the base)
uv add 'hyperweave[serve]'   # + HTTP server  (hyperweave serve)
uv add 'hyperweave[mcp]'     # + MCP server   (hyperweave mcp)
uv add 'hyperweave[all]'     # + both servers
# or swap `uv add` for `pip install`

Requires Python 3.12+. The base install is CLI + rendering; the HTTP and MCP servers are optional extras so the core stays lean.


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"]
    }
  }
}
# 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",
           data="text:NEW RELEASE,gh:anthropics/claude-code.stars,text:DOWNLOAD",
           genome="brutalist")

# Read or edit an existing artifact - the verb algebra
hw_extract(svg_or_url="<svg or /v1/a/{id} url>", respond="payload")
hw_transform(svg_or_id="<svg or /v1/a/{id} url>",
             mutations=[{"op": "replace", "path": "/title", "value": "SHIPPED"}])

# Return the SVG bytes inline instead of a hosted url (default respond="url")
hw_compose(type="badge", title="BUILD", value="passing", genome="brutalist", respond="svg")

hw_discover(what="all")   # the capability registry; full agent contract at /llms-full.txt

CLI

# 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 --data 'text:NEW RELEASE,gh:owner/repo.stars,text:DOWNLOAD' -g brutalist

# Session receipt from an agent transcript (Claude Code / Codex)
hyperweave compose receipt session.jsonl -o receipt.svg

# Validate a spec without rendering
hyperweave validate spec.json

# Profile card (live GitHub data, path-segment identity; 'stats' stays an alias)
hyperweave compose card eli64s -g chrome -o card.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

# The verbs: read or transform any artifact by handle, file, URL, or digest
hyperweave extract diagram.svg                      # the hw:payload seed as JSON
hyperweave diff v1.svg v2.svg --exit-code           # structural diff, git-style exit
hyperweave verify diagram.svg                       # payload ↔ envelope integrity
hyperweave query diagram.svg 'nodes[0].label'       # read one field
hyperweave transform diagram.svg --patch patch.json # mint a new artifact + lineage

HTTP API

# 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'

# Structured frames: /v1/{matrix|diagram}/{preset}/{genome}.{motion}
# (preset 'custom' takes a base64url ?spec=)
curl 'https://hyperweave.app/v1/matrix/connectors/primer.static?variant=porcelain'
curl 'https://hyperweave.app/v1/diagram/pipeline-head/primer.static?variant=porcelain'

# 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"}'

# Verb algebra over an existing artifact: extract · verify · transform · diff · query
curl -X POST https://hyperweave.app/v1/extract \
  -H "Content-Type: application/json" \
  -d '{"source":"<svg or /v1/a/{id} url>","respond":"payload"}'

# Local server
hyperweave serve --port 8000

Output formats

Compose once, export to any of these (same artifact, same metadata):

--format What you get
svg the default: live, animated, adapts to the reader's light/dark theme
svg-static the same picture with variables flattened and animation stripped, for renderers that don't run CSS
png · webp rasterized bitmaps (needs pip install 'hyperweave[raster]')
ansi a terminal character-grid render

The HTTP API serves any of these by file suffix (GET /v1/a/{id}.png, width-bounded with ?w=), and a graphics-capable terminal (kitty, ghostty, wezterm) shows --format png inline.

Fonts embed in the SVG by default (--font-mode embed) so the file stands alone anywhere; cdn and system trade that portability for smaller bytes.


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:

  • Re-ingestible payload: the full spec (hw:payload) plus a hash-verified hwz/1 envelope, so an agent can recover, verify, and edit it - the basis of the verb algebra.
  • 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 machines: data-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 anywhere SVGs render: GitHub's Camo proxy, email clients, Notion embeds.
  • Accessibility: WCAG AA, prefers-reduced-motion, prefers-color-scheme, forced-colors, ARIA markup. Structural, not decorative.
Dimension Count
Frame types 10 (badge, strip, icon, divider, marquee, card, chart, matrix, diagram, receipt)
Genomes 4 (automata, brutalist, chrome, primer)
Motion configs 6 (1 static + 5 border SMIL)
Glyphs 192 (183 brand marks + 9 geometric shapes)
Divider variants 10: 5 genome-themed (band chrome, seam + sigil brutalist, dissolve automata, aura primer) + 5 genome-agnostic (block, current, takeoff, void, zeropoint) at /a/inneraura/dividers/
Metadata tiers 5 (Tier 0 silent → Tier 4 reasoning)
Bundled fonts 5 (JetBrains Mono, Orbitron, Chakra Petch, Barlow Condensed, Inter), embedded per artifact, no external font requests

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


Data Connectors

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>).

Data connectors matrix: 9 live providers - GitHub, PyPI, npm, crates.io, Hugging Face, Docker Hub, arXiv, OpenSSF Scorecard, GitHub Actions - plus text and kv literal tokens

Copy a token · view as table
Prefix Source Identifier shape Metrics
gh / github GitHub owner/repo stars, forks, watchers, contributors, issues, pull_requests, last_push, build, license, language
pypi PyPI + pepy.tech package version, license, python_requires, downloads
npm npm package version, license, downloads
crates / cargo crates.io crate version, downloads, recent_downloads, license
hf / huggingface Hugging Face org/model downloads, likes, tags, pipeline_tag, library_name, license, gated, last_modified
docker Docker Hub namespace/repo pull_count, star_count, last_updated
arxiv arXiv id (e.g. 2310.06825) title, authors, published, updated, categories, summary, journal_ref, doi
scorecard OpenSSF Scorecard owner/repo score (overall trust), plus per-check: code_review, maintained, vulnerabilities, token_permissions, ...
dora GitHub Actions owner/repo deploy_frequency, lead_time, change_failure_rate, mttr (30-day window)
text literal - renders the payload as displayed text
kv literal KEY=VALUE static role-tagged value
  • Caching: live values for 5–10 min; a failed fetch caches 60s and shows - rather than a fabricated zero.
  • Isolation: each provider has its own circuit breaker, so one upstream outage can't trip the others.
  • Escaping: commas inside text: / kv: values escape as \,.

Open an issue to request a connector.


Contributing

HyperWeave is early. If you're interested in contributing or learning more, join the Discord. Cheers!

InnerAura Labs


InnerAura Labs

Discord   Instagram   LinkedIn   TikTok   X   YouTube

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.4.3.tar.gz (5.6 MB view details)

Uploaded Source

Built Distribution

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

hyperweave-0.4.3-py3-none-any.whl (1.9 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hyperweave-0.4.3.tar.gz
  • Upload date:
  • Size: 5.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hyperweave-0.4.3.tar.gz
Algorithm Hash digest
SHA256 de0feaca078e2116e8bb691a518f01611c61e1ace2849d9de34b34d8de6d9c66
MD5 79d949e9678da46a28b69f57ea1dc3b4
BLAKE2b-256 419a3955a6d7b52c2241ef62fc61aef25529cc935f61c3f26b378b0a4e12f47c

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperweave-0.4.3.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.4.3-py3-none-any.whl.

File metadata

  • Download URL: hyperweave-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hyperweave-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 78916339434ac551e954de4ee3683a53641f058de801c8f109dfc96d44c160e2
MD5 2db5da3e00726ff0ba703d919a4bec3e
BLAKE2b-256 bc677a4c35c1614e3f9a8cd79fb5c2d7b747fd9b7ef430b6cb8b34aab72d11a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyperweave-0.4.3-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.

Release history Release notifications | RSS feed

0.4.4

2 files

This release

0.4.3 This release

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.14

2 files

0.3.13

2 files

0.3.12

2 files

0.3.11

2 files

0.3.10

2 files

0.3.9

2 files

0.3.8

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.26

2 files

0.2.25

2 files

0.2.24

2 files

0.2.23

2 files

0.2.22

2 files

0.2.21

2 files

0.2.20

2 files

0.2.19

2 files

0.2.18

2 files

0.2.17

2 files

0.2.16

2 files

0.2.15

2 files

0.2.14

2 files

0.2.13

2 files

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page