diff --git a/README.md b/README.md
index 2aec262..0228b99 100644
--- a/README.md
+++ b/README.md
@@ -1,226 +1,145 @@
# agent-tty
-`agent-tty` is a CLI-first terminal automation tool for AI agents and humans.
-It creates long-lived PTY-backed sessions, lets automation drive and inspect those sessions across CLI invocations, and produces reviewable artifacts such as semantic snapshots, PNG screenshots, asciicast recordings, and WebM exports.
+Drive and inspect long-lived terminal sessions from the CLI, with reviewable snapshots, screenshots, and recordings.
-The goal is to make terminal and TUI automation inspectable rather than only scriptable.
-It is inspired by the `agent-browser` style of agent workflow: give an agent a stateful environment, explicit wait/inspect primitives, and evidence a human can review after the fact.
+[](https://www.npmjs.com/package/agent-tty)
+[](https://github.com/coder/agent-tty/actions/workflows/ci.yml)
+[](./LICENSE)
+
-## Why It Exists
+
-Most terminal automation falls back to brittle patterns: blind sleeps, long simulated keystroke streams, ad hoc screenshots, or detached `tmux` sessions that are hard for another process to inspect.
-`agent-tty` provides a tighter loop:
+`agent-tty` keeps a real PTY-backed terminal session alive across separate CLI invocations. You `run` a command in it, `wait` for the screen to reach a condition instead of sleeping, then capture what happened as a semantic text snapshot, a PNG screenshot, an asciinema-compatible `.cast`, or a WebM. The recording is the point: a human — or an AI coding agent — can replay and verify exactly what the terminal did, instead of trusting a blind script.
-1. create an isolated terminal session,
-2. run setup or send input,
-3. wait for observable terminal state,
-4. inspect the screen semantically,
-5. capture renderer-backed visual evidence,
-6. export replay artifacts,
-7. clean up the session.
+It started as a way to reproduce and verify TUI bug reports (see [Why it exists](#why-it-exists)), and it's equally useful for shell automation, CI smoke tests, and driving interactive CLIs.
-That loop is useful for AI coding agents, shell scripts, CI smoke tests, TUI dogfooding, and humans debugging terminal workflows locally.
+## Quickstart
-## What It Provides
-
-- Long-lived terminal sessions backed by `node-pty`.
-- A stable, machine-readable CLI surface with JSON envelopes.
-- `run`, `type`, `paste`, `send-keys`, `resize`, and `signal` controls.
-- `wait` and `snapshot` primitives for semantic inspection.
-- Renderer-backed screenshots and WebM exports using `ghostty-web` under Playwright/Chromium.
-- Append-only event logs so snapshots, screenshots, and recordings can be replayed from session history.
-- Isolated homes via `--home`, useful for agents, tests, CI, and proof bundles.
-
-## How It Works
-
-The architecture is:
-
-```text
-agent-tty CLI -> per-session host -> PTY + event log -> ghostty-web renderer -> artifacts
-```
-
-The PTY and append-only event log are the execution truth.
-`ghostty-web` is the reference renderer for semantic snapshots, screenshots, and replay video; it is not a native-terminal parity guarantee.
-The design keeps rendering behind an adapter so future native renderers can be added without changing the public CLI contract.
-
-## Quick Start
-
-`agent-tty` requires Node `>=24 <27`.
-Renderer-backed screenshots and WebM export also require a discoverable Playwright Chromium install.
+Requires Node `>=24 <27`. Screenshots and WebM export also need a Playwright Chromium install (`npx playwright install chromium`).
```bash
npm install -g agent-tty
-AGENT_HOME="$(mktemp -d)"
-agent-tty --home "$AGENT_HOME" doctor --json
-
-SESSION_ID=$(agent-tty --home "$AGENT_HOME" create --json --name demo -- /bin/bash | jq -r '.result.sessionId')
-agent-tty --home "$AGENT_HOME" run "$SESSION_ID" 'printf "hello from agent-tty\n"' --json
-agent-tty --home "$AGENT_HOME" wait "$SESSION_ID" --text 'hello from agent-tty' --json
-agent-tty --home "$AGENT_HOME" snapshot "$SESSION_ID" --format text --json
-agent-tty --home "$AGENT_HOME" screenshot "$SESSION_ID" --json
-agent-tty --home "$AGENT_HOME" destroy "$SESSION_ID" --json
+# Sessions, logs, and artifacts live under ~/.agent-tty by default.
+# Optionally point AGENT_TTY_HOME at a throwaway dir for an isolated run:
+export AGENT_TTY_HOME="$(mktemp -d)"
+agent-tty doctor --json # check your environment
+
+# Open a session, do something, wait for it, look at the result.
+SID=$(agent-tty create --json -- /bin/bash | jq -r '.result.sessionId')
+agent-tty run "$SID" 'printf "hello from agent-tty\n"' --json
+agent-tty wait "$SID" --text 'hello from agent-tty' --json
+agent-tty snapshot "$SID" --format text --json
+agent-tty screenshot "$SID" --json
+agent-tty destroy "$SID" --json
```
-If Chromium is missing on a fresh machine, run:
+Driving an interactive TUI is the same loop with key chords and a stability wait:
```bash
-npx playwright install chromium
+agent-tty run "$SID" 'nvim --clean' --no-wait --json
+agent-tty wait "$SID" --screen-stable-ms 1000 --json
+agent-tty send-keys "$SID" Down Down Enter --json
+agent-tty screenshot "$SID" --json
+agent-tty record export "$SID" --format webm --json
```
-For prerelease channels, tarball installs, authenticated GitHub Release installs, and source-checkout tarballs, see [`docs/INSTALL.md`](./docs/INSTALL.md).
+More workflows in [`docs/USAGE.md`](./docs/USAGE.md). Other install paths (tarballs, prerelease channels, source checkouts) in [`docs/INSTALL.md`](./docs/INSTALL.md).
-## Agent Demo
+## Why not just tmux, expect, asciinema, or Playwright?
-This dogfood bundle uses VHS as the outer camera for real Codex and Claude interactive TUIs while each agent explores the `agent-tty` skill/CLI, drives `nvim --clean`, writes a file, and exports inner proof artifacts.
+Those tools are good, and you can get partway with any of them. `agent-tty` exists because driving a terminal _and_ getting reviewable evidence back is awkward with each one:
-
-
- | Codex |
- Claude |
-
-
- |
-
- |
-
-
- |
-
-
+| If you reach for… | You get | What `agent-tty` adds |
+| ------------------------------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `tmux` + `send-keys` / `capture-pane` | drive a pane, scrape raw bytes | a `wait`-for-condition primitive (stop sleeping and grepping), semantic snapshots, and PNG / `.cast` / WebM artifacts a process or human can review |
+| `expect` | scripted input/output matching on a byte stream | a model of the _rendered screen_ (cursor, alt-screen, colors), plus shareable visual artifacts |
+| `asciinema` / VHS | a recording to watch later | programmatic drive + `wait` + inspect — act on terminal state, not just record it (and it still exports asciinema-compatible `.cast`) |
+| Playwright | this exact stateful loop, for browsers | the same drive → wait → inspect → snapshot loop, applied to terminals and TUIs |
-GitHub renders these as inline H.264 MP4 video players. See [`VIDEO_PLAYBACK.md`](./dogfood/agent-uses-agent-tty/VIDEO_PLAYBACK.md) for the upload flow that produces the `user-attachments` URLs; the checked-in WebM proof files remain the canonical source of truth.
+`agent-tty` is an automation-and-inspection layer, not a tmux replacement.
-See [`dogfood/agent-uses-agent-tty/`](./dogfood/agent-uses-agent-tty/) for the Hero Demo reproducer, outer transcripts, inner Neovim recordings, and final file proofs.
+## How it works
-## Common Usage
+```text
+agent-tty CLI → per-session host → PTY + append-only event log → Ghostty renderer → artifacts
+```
-### Run setup inside a shell
+Every session is backed by a real PTY (`node-pty`) and an append-only event log. The log is the source of truth, so snapshots, screenshots, and recordings can be regenerated deterministically by replaying it — even after the session has exited.
-```bash
-AGENT_HOME="$(mktemp -d)"
-SESSION_ID=$(agent-tty --home "$AGENT_HOME" create --json -- /bin/bash | jq -r '.result.sessionId')
+Rendering uses Ghostty's terminal engine through two interchangeable backends (`--renderer`):
-agent-tty --home "$AGENT_HOME" run "$SESSION_ID" 'pwd && npm test' --json
-agent-tty --home "$AGENT_HOME" snapshot "$SESSION_ID" --format text --json
-agent-tty --home "$AGENT_HOME" destroy "$SESSION_ID" --json
-```
+- **`libghostty-vt`** — Ghostty's native VT engine, bound into Node. Fast, browser-free semantic snapshots and `wait` checks.
+- **`ghostty-web`** (default) — a headless web build of Ghostty driven by Playwright/Chromium. Adds pixel PNG screenshots and WebM video.
-### Drive an interactive CLI or TUI
+`ghostty-web` is a _reference_ renderer: it shows what a pinned Ghostty build draws, not a pixel-for-pixel guarantee of any particular native terminal window. That tradeoff is deliberate — the renderer sits behind an adapter, so native backends can be added later without changing the CLI contract.
-```bash
-AGENT_HOME="$(mktemp -d)"
-SESSION_ID=$(agent-tty --home "$AGENT_HOME" create --json -- /bin/bash | jq -r '.result.sessionId')
-
-agent-tty --home "$AGENT_HOME" run "$SESSION_ID" '' --no-wait --json
-agent-tty --home "$AGENT_HOME" wait "$SESSION_ID" --screen-stable-ms 1000 --json
-agent-tty --home "$AGENT_HOME" send-keys "$SESSION_ID" Down Down Enter --json
-agent-tty --home "$AGENT_HOME" screenshot "$SESSION_ID" --json
-agent-tty --home "$AGENT_HOME" destroy "$SESSION_ID" --json
-```
+## Why it exists
-### Export reviewer-facing proof
+I maintain [`coder/claudecode.nvim`](https://github.com/coder/claudecode.nvim) and was drowning in issues and PRs I couldn't easily reproduce — Neovim is a TUI, and "reproduce this, configure that, screenshot the result" is painful to script with sleeps and `capture-pane`. `agent-tty` lets me spin up an isolated, reproducible terminal environment, hand it to a coding agent to attempt a fix, and then verify the fix with a fresh session and a recording I can actually look at.
-```bash
-AGENT_HOME="$(mktemp -d)"
-SESSION_ID=$(agent-tty --home "$AGENT_HOME" create --json -- /bin/bash | jq -r '.result.sessionId')
-
-agent-tty --home "$AGENT_HOME" run "$SESSION_ID" 'printf "artifact proof\n"' --json
-agent-tty --home "$AGENT_HOME" wait "$SESSION_ID" --text 'artifact proof' --json
-agent-tty --home "$AGENT_HOME" screenshot "$SESSION_ID" --json
-agent-tty --home "$AGENT_HOME" record export "$SESSION_ID" --format asciicast --json
-agent-tty --home "$AGENT_HOME" record export "$SESSION_ID" --format webm --json
-agent-tty --home "$AGENT_HOME" destroy "$SESSION_ID" --json
-```
-
-For command details, examples, and workflow notes, see [`docs/USAGE.md`](./docs/USAGE.md).
+A colleague then used `agent-tty` to build an experimental TUI for Coder agents almost entirely by letting coding agents drive it — checking the screenshots and recordings it produced instead of watching over their shoulder. That's the loop it's built for: **an agent acts, `agent-tty` captures reviewable evidence, a human (or another agent) verifies.**
-## Command Surface
+## Command surface
-Global flags:
+Global flags: `--home ` (or `AGENT_TTY_HOME`; defaults to `~/.agent-tty`), `--renderer ` (or `AGENT_TTY_RENDERER`), `--json`, `--timeout-ms `, `--no-color`, `--log-level `, `--profile `.
-- `--home `: override the agent-tty home directory.
-- `--timeout-ms `: apply a shared CLI timeout budget in milliseconds.
-- `--no-color`: disable ANSI color in human-readable output.
-- `--log-level `: set log level (`debug`, `info`, `warn`, `error`).
-- `--profile `: select a default render profile.
-- `--json`: available on user-facing commands for structured output.
+- **Environment:** `version`, `doctor`, `skills list|get|path`
+- **Lifecycle:** `create`, `list`, `inspect`, `destroy`, `gc`
+- **Input & control:** `run`, `type`, `paste`, `send-keys`, `resize`, `signal`, `mark`
+- **Observe & capture:** `wait`, `snapshot`, `screenshot`, `record export`
-Command groups:
+Every user-facing command takes `--json` and returns a stable, machine-readable envelope. See [`docs/USAGE.md`](./docs/USAGE.md) for details and [`docs/TROUBLESHOOTING.md`](./docs/TROUBLESHOOTING.md) for renderer/environment issues.
-- Environment and skills: `version`, `doctor`, `skills list|get|path`.
-- Lifecycle: `create`, `list`, `inspect`, `destroy`, `gc`.
-- Input and control: `run`, `type`, `paste`, `send-keys`, `resize`, `signal`, `mark`.
-- Observation and artifacts: `wait`, `snapshot`, `screenshot`, `record export`.
+## Demos
-## Notes And Limitations
+Real Codex and Claude TUIs discovering the `agent-tty` skill, driving `nvim --clean`, writing a file, and exporting inner proof artifacts. (GitHub renders these as click-to-play H.264 players.)
-- Linux and macOS are tier-1 targets; Windows is tier-2 and not CI-tested.
-- Screenshots and WebM export depend on Playwright/Chromium and the bundled `ghostty-web` renderer.
-- `ghostty-web` provides reference visual truth, not exact parity with every native terminal emulator.
-- `run` is best for shell-oriented setup and bootstrap work. It does not capture command output as a structured result or report the child command's exit status.
-- Use `--home ` for isolated automation. Passing the same home to every command keeps manifests, sockets, event logs, and artifacts together.
-- Run `agent-tty --home doctor --json` before screenshot or recording workflows in a new machine, CI job, or container.
+
+
+ | Codex |
+ Claude |
+
+
+ |
+ |
+
+
-Troubleshooting notes live in [`docs/TROUBLESHOOTING.md`](./docs/TROUBLESHOOTING.md).
+Full reproducer, transcripts, and proof bundles in [`dogfood/agent-uses-agent-tty/`](./dogfood/agent-uses-agent-tty/) and [`dogfood/CATALOG.md`](./dogfood/CATALOG.md).
-## Agent Skills
+## Agent skills
-`agent-tty` ships a thin public bootstrap skill under `skills/agent-tty/` and canonical runtime skills under `skill-data/`.
-After installing the CLI, coding agents can load the current runtime instructions directly:
+`agent-tty` ships a bootstrap skill so coding agents can load current usage instructions at runtime:
```bash
-agent-tty skills get agent-tty
agent-tty skills list
-agent-tty skills get dogfood-tui
+agent-tty skills get agent-tty
```
-For TanStack Intent, Mux, and direct skill-copy instructions, see [`docs/AGENT-SKILLS.md`](./docs/AGENT-SKILLS.md).
-
-## Vision And Roadmap
+See [`docs/AGENT-SKILLS.md`](./docs/AGENT-SKILLS.md).
-The current `0.2.x` line is centered on reliable, isolated, reviewable TUI automation through the CLI.
-Future work includes native renderer adapters, broader platform parity, mouse input, richer semantic TUI automation, remote/networked control, and external control layers such as an MCP wrapper.
+## Status & platform support
-- [`RELEASE.md`](./RELEASE.md) defines the supported release contract.
-- [`ROADMAP.md`](./ROADMAP.md) tracks intentionally deferred work and post-release direction.
-- [`design/ARCHITECTURE.md`](./design/ARCHITECTURE.md) explains the architecture and product intent in more detail.
+`agent-tty` is `0.2.x` and focused on reliable, isolated, reviewable terminal/TUI automation through a stable CLI.
-## Local Development
+- Linux and macOS are tier-1; Windows is tier-2 and not CI-tested.
+- Screenshots and WebM export depend on Playwright/Chromium and the `ghostty-web` backend.
+- `run` is best for shell setup and command injection; it does not capture a child command's structured output or exit status.
+- Apache-2.0, runs entirely locally, no account or SaaS.
-Preferred setup uses `mise`:
+Deferred work (native renderers, mouse input, remote control, an MCP wrapper) is tracked in [`ROADMAP.md`](./ROADMAP.md). The supported contract is in [`RELEASE.md`](./RELEASE.md); the architecture is in [`design/ARCHITECTURE.md`](./design/ARCHITECTURE.md).
-```bash
-mise install
-mise run bootstrap
-```
+## Contributing
-Fallback setup after installing `aube` directly:
-
-```bash
-aube exec playwright install chromium
-```
-
-Useful local commands:
+Issues and PRs welcome — see [`docs/CONTRIBUTING.md`](./docs/CONTRIBUTING.md) and the [`good first issue`](https://github.com/coder/agent-tty/labels/good%20first%20issue) / [`help wanted`](https://github.com/coder/agent-tty/labels/help%20wanted) labels.
```bash
+mise install && mise run bootstrap # preferred
npm run cli -- --help
npm run verify
```
-Use `npx tsx src/cli/main.ts ...` while developing from a source checkout, and use an isolated absolute `AGENT_TTY_HOME` for tests or manual dogfooding.
-For contributor details, see [`docs/CONTRIBUTING.md`](./docs/CONTRIBUTING.md).
-
-## Documentation
-
-- [`docs/README.md`](./docs/README.md) — user, contributor, and maintainer docs map.
-- [`docs/INSTALL.md`](./docs/INSTALL.md) — installation paths and release tarball flows.
-- [`docs/USAGE.md`](./docs/USAGE.md) — CLI workflows and command examples.
-- [`docs/AGENT-SKILLS.md`](./docs/AGENT-SKILLS.md) — packaged agent skill guidance.
-- [`docs/TROUBLESHOOTING.md`](./docs/TROUBLESHOOTING.md) — environment and renderer troubleshooting.
-- [`design/README.md`](./design/README.md) — architecture and design references.
-- [`dogfood/CATALOG.md`](./dogfood/CATALOG.md) — curated proof bundles and review paths.
-
## License
-`agent-tty` is licensed under the [Apache License 2.0](./LICENSE).
+[Apache License 2.0](./LICENSE).
diff --git a/assets/hero.gif b/assets/hero.gif
new file mode 100644
index 0000000..b5d20a1
Binary files /dev/null and b/assets/hero.gif differ
diff --git a/assets/hero.tape b/assets/hero.tape
new file mode 100644
index 0000000..a58b0fc
--- /dev/null
+++ b/assets/hero.tape
@@ -0,0 +1,81 @@
+# assets/hero.tape — generates the README hero GIF with VHS (charmbracelet/vhs).
+#
+# Run from the repo root:
+# vhs assets/hero.tape # writes assets/hero.gif
+#
+# Prereqs (vhs 0.11.0 + jq are pinned in mise's [tools]):
+# - `agent-tty` on PATH (npm i -g agent-tty, or `npm run build && npm link`)
+# - `jq`
+# It uses the fast, browser-free `libghostty-vt` renderer so the GIF stays short
+# (no Chromium boot). For a crisper, tighter, more "terminal" look, tune
+# FontFamily (must be installed!), FontSize, LineHeight, LetterSpacing, and
+# Padding below, plus the per-step Sleeps. The session is sized to 72x18 so a
+# 26pt font fills the frame without the 80-col default wrapping. Regenerate,
+# then replace the HERO DEMO comment block in README.md with:
+# 
+
+Output assets/hero.gif
+
+Require agent-tty
+Require jq
+
+Set Shell bash
+# Use a font that's actually installed (VHS silently falls back to an ugly
+# default otherwise). FiraCode Nerd Font Mono is on this machine and reads clean.
+# Bulletproof alternatives: "Menlo", "SF Mono", "Monaco", "JetBrains Mono".
+Set FontFamily "FiraCode Nerd Font Mono"
+Set FontSize 26
+Set Width 1280
+Set Height 640
+Set Padding 16 # tighter frame (was 28)
+Set LineHeight 1.0 # tight lines; nudge to ~1.15 if they touch
+Set LetterSpacing 0 # no extra tracking
+Set Theme "Catppuccin Mocha" # any VHS theme works; try "Dracula", "Nord"
+Set TypingSpeed 40ms
+Set PlaybackSpeed 1.0
+
+# --- hidden setup: isolated home + fast native renderer, then a clean screen ---
+Hide
+Type "export AGENT_TTY_HOME=$(mktemp -d) AGENT_TTY_RENDERER=libghostty-vt" Enter
+Type "clear" Enter
+Show
+
+Sleep 800ms
+Type "# open a long-lived terminal session" Enter
+Sleep 500ms
+Type 'SID=$(agent-tty create --json --cols 72 --rows 18 -- bash | jq -r .result.sessionId)' Enter
+Sleep 1200ms
+
+Type "# run a command inside it" Enter
+Sleep 500ms
+Type 'agent-tty run "$SID" "echo hello from agent-tty"' Enter
+Sleep 1500ms
+
+Type "# wait for the screen — no sleeps, no grep" Enter
+Sleep 500ms
+Type 'agent-tty wait "$SID" --text "hello from agent-tty"' Enter
+Sleep 1500ms
+
+Type "# inspect the rendered screen as text you can diff" Enter
+Sleep 500ms
+Type 'agent-tty snapshot "$SID" --format text' Enter
+Sleep 2800ms
+
+Type "# screenshots, asciicasts and WebM export come from the same session" Enter
+Sleep 1200ms
+
+# --- hidden teardown ---
+Hide
+Type 'agent-tty destroy "$SID" >/dev/null 2>&1' Enter
+Show
+Sleep 500ms
+
+# -----------------------------------------------------------------------------
+# ALTERNATIVE — dogfood it: record the loop with agent-tty itself, then convert.
+# Drive the same create/run/wait/snapshot sequence, then:
+# agent-tty record export "$SID" --format webm --out demo.webm
+# ffmpeg -i demo.webm -vf "fps=12,scale=1200:-1:flags=lanczos" assets/hero.gif
+# This makes the hero GIF literally the tool's own output ("recorded by the tool
+# it documents"), at the cost of the Chromium-backed ghostty-web render path.
+# ffmpeg isn't in mise's [tools] (it can't be cross-locked on Linux via conda);
+# install it yourself for this path (brew install ffmpeg / apt-get install ffmpeg).
diff --git a/assets/render-social-preview.mjs b/assets/render-social-preview.mjs
new file mode 100644
index 0000000..e4f0e6e
--- /dev/null
+++ b/assets/render-social-preview.mjs
@@ -0,0 +1,40 @@
+// Renders assets/social-preview.html -> assets/social-preview.png (OG card, 1200x630).
+// Supersamples at 2x then downscales with `sips` (macOS) so text stays crisp at
+// the recommended OG size. Usage: node assets/render-social-preview.mjs
+import { chromium } from 'playwright';
+import { execFileSync } from 'node:child_process';
+import { dirname, join } from 'node:path';
+import { rmSync } from 'node:fs';
+import { fileURLToPath, pathToFileURL } from 'node:url';
+
+const W = 1200;
+const H = 630;
+const dir = dirname(fileURLToPath(import.meta.url));
+const htmlPath = join(dir, 'social-preview.html');
+const outPath = join(dir, 'social-preview.png');
+const hiResPath = join(dir, 'social-preview@2x.png');
+
+const browser = await chromium.launch();
+const page = await browser.newPage({
+ viewport: { width: W, height: H },
+ deviceScaleFactor: 2, // -> 2400x1260 supersample
+});
+await page.goto(pathToFileURL(htmlPath).href);
+await page.evaluate(() => document.fonts.ready);
+await page.waitForTimeout(150);
+await page.screenshot({
+ path: hiResPath,
+ clip: { x: 0, y: 0, width: W, height: H },
+});
+await browser.close();
+
+// Downscale 2400x1260 -> 1200x630 (sips is built into macOS).
+execFileSync(
+ 'sips',
+ ['--resampleHeightWidth', String(H), String(W), hiResPath, '--out', outPath],
+ {
+ stdio: 'ignore',
+ },
+);
+rmSync(hiResPath, { force: true });
+console.log(`wrote ${outPath} (${W}x${H})`);
diff --git a/assets/social-preview-spec.md b/assets/social-preview-spec.md
new file mode 100644
index 0000000..b9fc9bd
--- /dev/null
+++ b/assets/social-preview-spec.md
@@ -0,0 +1,79 @@
+# Social preview (Open Graph) image spec
+
+This is the image GitHub shows when `github.com/coder/agent-tty` is shared on
+Hacker News, X, Slack, LinkedIn, etc. The repo currently has **no custom image**
+(`usesCustomOpenGraphImage: false`), so it falls back to GitHub's auto-generated
+avatar+stats card. Replacing it is the single highest-leverage pre-launch task —
+it's what people see _before_ they click.
+
+Target output: **`assets/social-preview.png`** (generated — see "How to produce"
+below) → upload via **repo Settings → General → Social preview → Edit → Upload an
+image**.
+
+## Hard specs
+
+| Property | Value |
+| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Dimensions | **1200 × 630 px** (universal OG 1.91:1 — passes opengraph.xyz; GitHub also accepts it. GitHub's own rec is 1280×640, but 1200×630 is the safer cross-platform card for X/Slack/LinkedIn) |
+| File size | **< 1 MB** (a flat dark bg + text exports well under this; run `pngquant` if needed) |
+| Format | PNG, sRGB (JPG/GIF also accepted) |
+| Min accepted | 640 × 320 px |
+
+**Safe area:** keep the wordmark and tagline inside a centered **~1120 × 500**
+region (≈80 px side / ≈70 px top-bottom margins). X/LinkedIn/Facebook re-crop to
+1.91:1, so anything near the edges can get clipped.
+
+## Layout
+
+```
+┌──────────────────────────────────────────────────────────────┐
+│ (dark terminal background — #11111b / #0d1117, flat) │
+│ │
+│ agent-tty ▏ ← optional │
+│ ───────── block cursor │
+│ Drive and inspect terminal sessions from the CLI — │
+│ reviewable snapshots, screenshots & recordings. │
+│ │
+│ $ agent-tty snapshot $SID --format text │
+│ ┌ hello from agent-tty ───────────────────┐ ← faux captured │
+│ │ user@host:~$ █ │ screen, dim │
+│ └──────────────────────────────────────────┘ │
+│ │
+│ github.com/coder/agent-tty Apache-2.0 · Ghostty VT │
+└──────────────────────────────────────────────────────────────┘
+```
+
+## Copy (use verbatim — matches the README + repo description)
+
+- **Wordmark:** `agent-tty`
+- **Tagline (one line):** `Drive and inspect terminal sessions from the CLI — reviewable snapshots, screenshots & recordings.`
+ - If it's too long at your font size, shorten to: `Scriptable terminal sessions with reviewable snapshots, screenshots & recordings.`
+- **Footer:** `github.com/coder/agent-tty` · optional honest credit `Powered by Ghostty's VT engine`
+- Do **not** put "for AI agents" in the image headline (saturated/risky per the launch research); the agent angle lives in the README body and your HN first comment.
+
+## Type & color
+
+- **Monospace throughout** (JetBrains Mono / Berkeley Mono / IBM Plex Mono / Geist Mono). It reads as an authentic terminal tool, not a marketing site.
+- High contrast: light text (`#cdd6f4` / `#e6edf3`) on a dark base. One accent color max (e.g. a green `#a6e3a1` for the prompt `$`).
+- Wordmark large (~96–120 px), tagline ~34–40 px, footer ~24 px.
+
+## Do / Don't
+
+- ✅ Flat dark terminal aesthetic, monospace, a real command + a snippet of captured screen.
+- ✅ Let the _artifact_ (a text snapshot of a real screen) be the visual idea.
+- ❌ Gradient hero blobs, neon glows, glassmorphism, "pulsing live" pills, emoji, 3D shapes, stock dev illustrations. These read as AI-generated "slop" and HN calls them out within minutes — the image must not undercut a launch built on "honest, inspectable tooling."
+
+## How to produce it
+
+**Implemented (HTML/CSS → Playwright screenshot):** edit [`social-preview.html`](./social-preview.html) and run `node assets/render-social-preview.mjs`. It renders at 2× and downscales with `sips` to a crisp 1200×630 PNG. This is the source of truth for the card.
+
+Other approaches if you'd rather start over:
+
+1. **Figma / design tool** — 1200×630 frame, paste the copy, export PNG.
+2. **VHS still** — a one-frame `.tape` (`Output assets/social-preview.png`, `Set Width 1200`, `Set Height 630`, type the command + snapshot, no playback) gives a real captured screen as the card.
+
+## Verify before launch
+
+Paste the repo URL into (or just DM yourself the link
+in Slack) and confirm the card renders with no clipped text. GitHub can take a
+few minutes to refresh its cache after upload.
diff --git a/assets/social-preview.html b/assets/social-preview.html
new file mode 100644
index 0000000..aaaee6c
--- /dev/null
+++ b/assets/social-preview.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
agent-tty_
+
+ Drive and inspect terminal sessions from the CLI —
+ reviewable snapshots, screenshots & recordings.
+
+
$ npm install -g agent-tty
+
+
+
+
+
diff --git a/assets/social-preview.png b/assets/social-preview.png
new file mode 100644
index 0000000..45fc98b
Binary files /dev/null and b/assets/social-preview.png differ
diff --git a/mise.lock b/mise.lock
index 4fc8d77..215e719 100644
--- a/mise.lock
+++ b/mise.lock
@@ -1,5 +1,945 @@
# @generated - this file is auto-generated by `mise lock` https://mise.en.dev/dev-tools/mise-lock.html
+[conda-packages.macos-arm64."aom-3.9.1-h7bae524_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda"
+checksum = "sha256:ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef"
+
+[conda-packages.macos-arm64."bzip2-1.0.8-hd037594_9"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda"
+checksum = "sha256:540fe54be35fac0c17feefbdc3e29725cce05d7367ffedfaaa1bdda234b019df"
+
+[conda-packages.macos-arm64."ca-certificates-2026.5.20-hbd8a1cb_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda"
+checksum = "sha256:9812a303a1395e1dafbd92e5bc8a1ff6013bcbba0a09c7f03a8d23e43560aa9b"
+
+[conda-packages.macos-arm64."cairo-1.18.4-he0f2337_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda"
+checksum = "sha256:cde9b79ee206fe3ba6ca2dc5906593fb7a1350515f85b2a1135a4ce8ec1539e3"
+
+[conda-packages.macos-arm64."dav1d-1.2.1-hb547adb_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda"
+checksum = "sha256:93e077b880a85baec8227e8c72199220c7f87849ad32d02c14fb3807368260b8"
+
+[conda-packages.macos-arm64."dbus-1.16.2-h3ff7a7c_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.16.2-h3ff7a7c_1.conda"
+checksum = "sha256:a8207751ed261764061866880da38e4d3063e167178bfe85b6db9501432462ba"
+
+[conda-packages.macos-arm64."font-ttf-dejavu-sans-mono-2.37-hab24e00_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2"
+checksum = "sha256:58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b"
+
+[conda-packages.macos-arm64."font-ttf-inconsolata-3.000-h77eed37_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2"
+checksum = "sha256:c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c"
+
+[conda-packages.macos-arm64."font-ttf-source-code-pro-2.038-h77eed37_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2"
+checksum = "sha256:00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139"
+
+[conda-packages.macos-arm64."font-ttf-ubuntu-0.83-h77eed37_3"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda"
+checksum = "sha256:2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14"
+
+[conda-packages.macos-arm64."fontconfig-2.18.0-h2b252f5_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.18.0-h2b252f5_0.conda"
+checksum = "sha256:938d18fca474d5a7ed716b88dbc4f962f9a44ac9f2fe29393d7d9d04ac6cbf15"
+
+[conda-packages.macos-arm64.fonts-conda-ecosystem-1-0]
+url = "https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2"
+checksum = "sha256:a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61"
+
+[conda-packages.macos-arm64.fonts-conda-forge-1-hc364b38_1]
+url = "https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda"
+checksum = "sha256:54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333"
+
+[conda-packages.macos-arm64."fribidi-1.0.16-hc919400_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda"
+checksum = "sha256:d856dc6744ecfba78c5f7df3378f03a75c911aadac803fa2b41a583667b4b600"
+
+[conda-packages.macos-arm64."gdk-pixbuf-2.44.6-h4e57454_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.6-h4e57454_0.conda"
+checksum = "sha256:07cbba4e12430de35ea608eb3006cf1f7f63832c4f89a081cd6f3872944c1aa6"
+
+[conda-packages.macos-arm64."glslang-16.3.0-h7cb4797_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/glslang-16.3.0-h7cb4797_0.conda"
+checksum = "sha256:d5bb8e2373cb39d1404ef7dc8019e764b27180c8a0f88ba234a595dc330caabb"
+
+[conda-packages.macos-arm64."gmp-6.3.0-h7bae524_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda"
+checksum = "sha256:76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd"
+
+[conda-packages.macos-arm64."graphite2-1.3.14-hec049ff_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda"
+checksum = "sha256:c507ae9989dbea7024aa6feaebb16cbf271faac67ac3f0342ef1ab747c20475d"
+
+[conda-packages.macos-arm64."harfbuzz-14.2.0-h3103d1b_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-14.2.0-h3103d1b_0.conda"
+checksum = "sha256:40ccd6a589c60a4cedb2f9921dfa60ea5845b5ce323477b042b6f90218b239f6"
+
+[conda-packages.macos-arm64."icu-78.3-hef89b57_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda"
+checksum = "sha256:3a7907a17e9937d3a46dfd41cffaf815abad59a569440d1e25177c15fd0684e5"
+
+[conda-packages.macos-arm64."lame-3.100-h1a8c8d9_1003"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2"
+checksum = "sha256:f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c"
+
+[conda-packages.macos-arm64."lcms2-2.19.1-hdfa7624_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19.1-hdfa7624_0.conda"
+checksum = "sha256:d589ff5294e42576563b22bdea0860cb80b0cbe0f3852836eddaadedf6eec4ef"
+
+[conda-packages.macos-arm64."lerc-4.1.0-h1eee2c3_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.1.0-h1eee2c3_0.conda"
+checksum = "sha256:66e5ffd301a44da696f3efc2f25d6d94f42a9adc0db06c44ad753ab844148c51"
+
+[conda-packages.macos-arm64."libabseil-20260107.1-cxx17_h2062a1b_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20260107.1-cxx17_h2062a1b_0.conda"
+checksum = "sha256:756611fbb8d2957a5b4635d9772bd8432cb6ddac05580a6284cca6fdc9b07fca"
+
+[conda-packages.macos-arm64."libass-0.17.4-hcbd7ca7_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libass-0.17.4-hcbd7ca7_0.conda"
+checksum = "sha256:079f5fdf7aace970a0db91cd2cc493c754dfdc4520d422ecec43d2561021167a"
+
+[conda-packages.macos-arm64."libbrotlicommon-1.2.0-hc919400_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda"
+checksum = "sha256:a7cb9e660531cf6fbd4148cff608c85738d0b76f0975c5fc3e7d5e92840b7229"
+
+[conda-packages.macos-arm64."libbrotlidec-1.2.0-hc919400_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda"
+checksum = "sha256:2eae444039826db0454b19b52a3390f63bfe24f6b3e63089778dd5a5bf48b6bf"
+
+[conda-packages.macos-arm64."libbrotlienc-1.2.0-hc919400_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda"
+checksum = "sha256:01436c32bb41f9cb4bcf07dda647ce4e5deb8307abfc3abdc8da5317db8189d1"
+
+[conda-packages.macos-arm64."libcxx-22.1.6-h55c6f16_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.6-h55c6f16_0.conda"
+checksum = "sha256:3e2f8ad32ddab88c5114b9aa2160f8c129f515df0e551d0d86ef5744446afdbd"
+
+[conda-packages.macos-arm64."libdeflate-1.25-hc11a715_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda"
+checksum = "sha256:5e0b6961be3304a5f027a8c00bd0967fc46ae162cffb7553ff45c70f51b8314c"
+
+[conda-packages.macos-arm64."libdovi-3.3.2-h78f8ca3_4"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libdovi-3.3.2-h78f8ca3_4.conda"
+checksum = "sha256:0eff0b03662d30b14b6f95a930fedf19948d45b05653389f59ae964ddf92ba9c"
+
+[conda-packages.macos-arm64."libexpat-2.8.1-hf6b4638_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_0.conda"
+checksum = "sha256:3133fb6bfa871288b92c8b8752696686a841bf4ffe035aa3038033c9e15b738e"
+
+[conda-packages.macos-arm64."libffi-3.5.2-hcf2aa1b_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda"
+checksum = "sha256:6686a26466a527585e6a75cc2a242bf4a3d97d6d6c86424a441677917f28bec7"
+
+[conda-packages.macos-arm64."libfreetype-2.14.3-hce30654_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.3-hce30654_0.conda"
+checksum = "sha256:a047a2f238362a37d484f9620e8cba29f513a933cd9eb68571ad4b270d6f8f3e"
+
+[conda-packages.macos-arm64."libfreetype6-2.14.3-hdfa99f5_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.3-hdfa99f5_0.conda"
+checksum = "sha256:ff764608e1f2839e95e2cf9b243681475f8778c36af7a42b3f78f476fdbb1dd3"
+
+[conda-packages.macos-arm64."libglib-2.88.1-ha08bb59_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.1-ha08bb59_2.conda"
+checksum = "sha256:3b32a7a710132d509f2ea38b2f0384414c863533e0fc7ac71b6a0763e4c67424"
+
+[conda-packages.macos-arm64."libhwloc-2.13.0-default_ha97f43a_1000"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.13.0-default_ha97f43a_1000.conda"
+checksum = "sha256:d47c3c030671d196ff1cdd343e93eb2ae0d7b665cb79f8164cc91488796db437"
+
+[conda-packages.macos-arm64."libhwy-1.4.0-ha332bbd_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.4.0-ha332bbd_0.conda"
+checksum = "sha256:4fcad3cbec60da940312e883b7866816517acc5f9baecfe9a778de57327a1b1b"
+
+[conda-packages.macos-arm64."libiconv-1.18-h23cfdf5_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda"
+checksum = "sha256:de0336e800b2af9a40bdd694b03870ac4a848161b35c8a2325704f123f185f03"
+
+[conda-packages.macos-arm64."libintl-0.25.1-h493aca8_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda"
+checksum = "sha256:99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a"
+
+[conda-packages.macos-arm64."libjpeg-turbo-3.1.4.1-h84a0fba_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.4.1-h84a0fba_0.conda"
+checksum = "sha256:17e035ae6a520ff6a6bb5dd93a4a7c3895891f4f9743bcb8c6ef607445a31cd0"
+
+[conda-packages.macos-arm64."libjxl-0.11.2-h934fa54_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h934fa54_1.conda"
+checksum = "sha256:948cf1370abb58e06a7c9554838c68672ef1d78e01c3fc4e62ccfc3072579645"
+
+[conda-packages.macos-arm64."liblzma-5.8.3-h8088a28_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda"
+checksum = "sha256:34878d87275c298f1a732c6806349125cebbf340d24c6c23727268184bba051e"
+
+[conda-packages.macos-arm64."libogg-1.3.5-h48c0fde_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h48c0fde_1.conda"
+checksum = "sha256:28bd1fe20fe43da105da41b95ac201e95a1616126f287985df8e86ddebd1c3d8"
+
+[conda-packages.macos-arm64."libopenvino-2026.0.0-h3e6d54f_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2026.0.0-h3e6d54f_1.conda"
+checksum = "sha256:ffbd4a3c8540dfaddbdd68cf3073967a3c8faadd97d7df912f73734e53f9213e"
+
+[conda-packages.macos-arm64."libopenvino-arm-cpu-plugin-2026.0.0-h3e6d54f_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2026.0.0-h3e6d54f_1.conda"
+checksum = "sha256:352ebc24805cb756ef11afa5c9606b3e19da99e434afc35cddc356538b5ec49d"
+
+[conda-packages.macos-arm64."libopenvino-auto-batch-plugin-2026.0.0-h2406d2e_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2026.0.0-h2406d2e_1.conda"
+checksum = "sha256:1cbbf43149334ccf793f782bd0924e08e5952c667578ac33a33076a4ab54ad47"
+
+[conda-packages.macos-arm64."libopenvino-auto-plugin-2026.0.0-h2406d2e_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2026.0.0-h2406d2e_1.conda"
+checksum = "sha256:fa6c01a897ccc92998cae1e75ac65c68f311ad0834182801d5d3139ac307309f"
+
+[conda-packages.macos-arm64."libopenvino-hetero-plugin-2026.0.0-h85cbfa6_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2026.0.0-h85cbfa6_1.conda"
+checksum = "sha256:18e6b6d061d27049e2a34fbd1a633209294eb700aa7eee7a3d2877ce4d45888b"
+
+[conda-packages.macos-arm64."libopenvino-ir-frontend-2026.0.0-h85cbfa6_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2026.0.0-h85cbfa6_1.conda"
+checksum = "sha256:166792875fe62f90a528a4931f29ea18cf74694469870e98c8772460f92fc653"
+
+[conda-packages.macos-arm64."libopenvino-onnx-frontend-2026.0.0-h41365f2_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2026.0.0-h41365f2_1.conda"
+checksum = "sha256:eb307ee1ad8eb47aa011d03d77995bfd1153b80893ab5880fd928093ad50cab4"
+
+[conda-packages.macos-arm64."libopenvino-paddle-frontend-2026.0.0-h41365f2_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2026.0.0-h41365f2_1.conda"
+checksum = "sha256:e3ca93158beac502b65256ae78736889e8b40184b0dc938a1b8136ae2a0c3a4d"
+
+[conda-packages.macos-arm64."libopenvino-pytorch-frontend-2026.0.0-hf6b4638_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2026.0.0-hf6b4638_1.conda"
+checksum = "sha256:c694e5dc1bbb2ea876e65c8c33b148a24f56b5f7a60f8449ca62b159d9020709"
+
+[conda-packages.macos-arm64."libopenvino-tensorflow-frontend-2026.0.0-hc295da0_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2026.0.0-hc295da0_1.conda"
+checksum = "sha256:f680809aef09ca68d7446e3f1810ca3f3d9f744cbfe3a8d8ec9bd807f17d80fd"
+
+[conda-packages.macos-arm64."libopenvino-tensorflow-lite-frontend-2026.0.0-hf6b4638_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2026.0.0-hf6b4638_1.conda"
+checksum = "sha256:3079cdc940a7e0b84376845accefd084f9a01c37af5901083ae47cc02fd5723d"
+
+[conda-packages.macos-arm64."libopus-1.6.1-h1a92334_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.6.1-h1a92334_0.conda"
+checksum = "sha256:5c95a5f7712f543c59083e62fc3a95efec8b7f3773fbf4542ad1fb87fbf51ff4"
+
+[conda-packages.macos-arm64."libplacebo-7.360.1-h176d363_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libplacebo-7.360.1-h176d363_0.conda"
+checksum = "sha256:e9b39572e2feaef496167ba9f4ab75ed3afa4c16c3aeb0bb8c71adc515a74536"
+
+[conda-packages.macos-arm64."libpng-1.6.58-h132b30e_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.58-h132b30e_0.conda"
+checksum = "sha256:66eae34546df1f098a67064970c92aa14ae7a7505091889e00468294d2882c36"
+
+[conda-packages.macos-arm64."libprotobuf-6.33.5-h2d4b707_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.33.5-h2d4b707_1.conda"
+checksum = "sha256:416c2244999d678dc9a4d8c3472336f8f754676125605399cf6e43956fa3d18b"
+
+[conda-packages.macos-arm64."librsvg-2.62.2-he8aa2a2_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.62.2-he8aa2a2_0.conda"
+checksum = "sha256:17c1544598dd50840e74ef17ea5b4fd27408140827f3f2c17c052086d4036a88"
+
+[conda-packages.macos-arm64."libtiff-4.7.1-h4030677_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda"
+checksum = "sha256:e9248077b3fa63db94caca42c8dbc6949c6f32f94d1cafad127f9005d9b1507f"
+
+[conda-packages.macos-arm64."libusb-1.0.29-hbc156a2_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.29-hbc156a2_0.conda"
+checksum = "sha256:5eee9a2bf359e474d4548874bcfc8d29ebad0d9ba015314439c256904e40aaad"
+
+[conda-packages.macos-arm64."libvorbis-1.3.7-h81086ad_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h81086ad_2.conda"
+checksum = "sha256:95768e4eceaffb973081fd986d03da15d93aa10609ed202e6fd5ca1e490a3dce"
+
+[conda-packages.macos-arm64."libvpx-1.15.2-ha759d40_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libvpx-1.15.2-ha759d40_0.conda"
+checksum = "sha256:d21729b04fe101d1b2f8cdd607faacf1070abba3702db699787a3fe026eeaca6"
+
+[conda-packages.macos-arm64."libvulkan-loader-1.4.341.0-h3feff0a_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libvulkan-loader-1.4.341.0-h3feff0a_0.conda"
+checksum = "sha256:d2790dafc9149b1acd45b9033d02cfa3f3e9ee5af97bd61e0a5718c414a0a135"
+
+[conda-packages.macos-arm64."libwebp-base-1.6.0-h07db88b_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda"
+checksum = "sha256:a4de3f371bb7ada325e1f27a4ef7bcc81b2b6a330e46fac9c2f78ac0755ea3dd"
+
+[conda-packages.macos-arm64."libxml2-16-2.15.3-h5ef1a60_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda"
+checksum = "sha256:ff75b84cdb9e8d123db2fa694a8ac2c2059516b6cbc98ac21fb68e235d0fd354"
+
+[conda-packages.macos-arm64."libxml2-2.15.3-h5654f7c_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda"
+checksum = "sha256:2fe1d8de0854342ae9cabe408b476935f82f5636e153b3b497456264dc8ff3a1"
+
+[conda-packages.macos-arm64."libzlib-1.3.2-h8088a28_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda"
+checksum = "sha256:361415a698514b19a852f5d1123c5da746d4642139904156ddfca7c922d23a05"
+
+[conda-packages.macos-arm64."openh264-2.6.0-hb5b2745_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/openh264-2.6.0-hb5b2745_0.conda"
+checksum = "sha256:fbea05722a8e8abfb41c989e2cec7ba6597eabe27cb6b88ff0b6443a5abb9069"
+
+[conda-packages.macos-arm64."openssl-3.6.2-hd24854e_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.2-hd24854e_0.conda"
+checksum = "sha256:c91bf510c130a1ea1b6ff023e28bac0ccaef869446acd805e2016f69ebdc49ea"
+
+[conda-packages.macos-arm64."pango-1.56.4-hf80efc4_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-hf80efc4_1.conda"
+checksum = "sha256:b57c59cf5abb06d407b3a79017b990ca5bfb10c15a10c62fc29e113f2b12d9a9"
+
+[conda-packages.macos-arm64."pcre2-10.47-h30297fc_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda"
+checksum = "sha256:5e2e443f796f2fd92adf7978286a525fb768c34e12b1ee9ded4000a41b2894ba"
+
+[conda-packages.macos-arm64."pixman-0.46.4-h81086ad_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda"
+checksum = "sha256:29c9b08a9b8b7810f9d4f159aecfd205fce051633169040005c0b7efad4bc718"
+
+[conda-packages.macos-arm64."pugixml-1.15-hd3d436d_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_0.conda"
+checksum = "sha256:5ad8d036040b095f85d23c70624d3e5e1e4c00bc5cea97831542f2dcae294ec9"
+
+[conda-packages.macos-arm64."sdl2-2.32.56-h248ca61_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.56-h248ca61_0.conda"
+checksum = "sha256:704c5cae4bc839a18c70cbf3387d7789f1902828c79c6ddabcd34daf594f4103"
+
+[conda-packages.macos-arm64."sdl3-3.4.8-h6fa9c73_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.4.8-h6fa9c73_0.conda"
+checksum = "sha256:0c15a7f3f46d175c70ca7b032cee3eee9ef602492688a79a6e734f2efc466dad"
+
+[conda-packages.macos-arm64."shaderc-2026.2-hf31e910_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/shaderc-2026.2-hf31e910_0.conda"
+checksum = "sha256:97870b15002b9e78a169681655a148049cd1763d4062114155268e84b3ef8793"
+
+[conda-packages.macos-arm64."snappy-1.2.2-hada39a4_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda"
+checksum = "sha256:cb9305ede19584115f43baecdf09a3866bfcd5bcca0d9e527bd76d9a1dbe2d8d"
+
+[conda-packages.macos-arm64."spirv-tools-2026.1-h4ddebb9_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/spirv-tools-2026.1-h4ddebb9_0.conda"
+checksum = "sha256:8c7b7b1f7a42f1a878f08e44ee94023285eb51ba8e5042f28d61dce305b10242"
+
+[conda-packages.macos-arm64."svt-av1-4.0.1-h0cb729a_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-4.0.1-h0cb729a_0.conda"
+checksum = "sha256:bdef3c1c4d2a396ad4f7dc64c5e9a02d4c5a21ff93ed07a33e49574de5d2d18d"
+
+[conda-packages.macos-arm64."tbb-2023.0.0-he0260a5_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2023.0.0-he0260a5_2.conda"
+checksum = "sha256:6f72a2984052444b9381020fa329b83dace95f335573dc21199f1b1d1a5f5473"
+
+[conda-packages.macos-arm64."x264-1!164.3095-h57fd34a_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/x264-1!164.3095-h57fd34a_2.tar.bz2"
+checksum = "sha256:debdf60bbcfa6a60201b12a1d53f36736821db281a28223a09e0685edcce105a"
+
+[conda-packages.macos-arm64."x265-3.5-hbc6ce65_3"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/x265-3.5-hbc6ce65_3.tar.bz2"
+checksum = "sha256:2fed6987dba7dee07bd9adc1a6f8e6c699efb851431bcb6ebad7de196e87841d"
+
+[conda-packages.macos-arm64."zstd-1.5.7-hbf9d68e_6"]
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda"
+checksum = "sha256:9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9"
+
+[conda-packages.macos-x64."aom-3.9.1-hf036a51_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/aom-3.9.1-hf036a51_0.conda"
+checksum = "sha256:3032f2f55d6eceb10d53217c2a7f43e1eac83603d91e21ce502e8179e63a75f5"
+
+[conda-packages.macos-x64."bzip2-1.0.8-h500dc9f_9"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda"
+checksum = "sha256:9f242f13537ef1ce195f93f0cc162965d6cc79da578568d6d8e50f70dd025c42"
+
+[conda-packages.macos-x64."ca-certificates-2026.5.20-hbd8a1cb_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda"
+checksum = "sha256:9812a303a1395e1dafbd92e5bc8a1ff6013bcbba0a09c7f03a8d23e43560aa9b"
+
+[conda-packages.macos-x64."cairo-1.18.4-h7656bdc_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h7656bdc_1.conda"
+checksum = "sha256:88e7e1efb6a0f6b1477e617338e0ed3d27d4572a3283f8341ce6143b7118e31a"
+
+[conda-packages.macos-x64."dav1d-1.2.1-h0dc2134_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/dav1d-1.2.1-h0dc2134_0.conda"
+checksum = "sha256:ec71a835866b42e946cd2039a5f7a6458851a21890d315476f5e66790ac11c96"
+
+[conda-packages.macos-x64."dbus-1.16.2-h6e7f9a9_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/dbus-1.16.2-h6e7f9a9_1.conda"
+checksum = "sha256:80ea0a20236ecb7006f7a89235802a34851eaac2f7f4323ca7acc094bcf7f372"
+
+[conda-packages.macos-x64."font-ttf-dejavu-sans-mono-2.37-hab24e00_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2"
+checksum = "sha256:58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b"
+
+[conda-packages.macos-x64."font-ttf-inconsolata-3.000-h77eed37_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2"
+checksum = "sha256:c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c"
+
+[conda-packages.macos-x64."font-ttf-source-code-pro-2.038-h77eed37_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2"
+checksum = "sha256:00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139"
+
+[conda-packages.macos-x64."font-ttf-ubuntu-0.83-h77eed37_3"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda"
+checksum = "sha256:2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14"
+
+[conda-packages.macos-x64."fontconfig-2.18.0-h7a4440b_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.18.0-h7a4440b_0.conda"
+checksum = "sha256:4495ee28d8c15c202a792ade053c9df8bfda81cdf50e78357edb536d6477c44f"
+
+[conda-packages.macos-x64.fonts-conda-ecosystem-1-0]
+url = "https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2"
+checksum = "sha256:a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61"
+
+[conda-packages.macos-x64.fonts-conda-forge-1-hc364b38_1]
+url = "https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda"
+checksum = "sha256:54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333"
+
+[conda-packages.macos-x64."fribidi-1.0.16-h8616949_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda"
+checksum = "sha256:53dd0a6c561cf31038633aaa0d52be05da1f24e86947f06c4e324606c72c7413"
+
+[conda-packages.macos-x64."gdk-pixbuf-2.44.6-hae309b2_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.6-hae309b2_0.conda"
+checksum = "sha256:27a223201fd86f85284c7e218121ac9ecf0be16e0a73eea42776701c8c90c50b"
+
+[conda-packages.macos-x64."glslang-16.3.0-he78e680_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/glslang-16.3.0-he78e680_0.conda"
+checksum = "sha256:7daad6c8e66ab4ced78305c3c55cd8fdfd4f694b1912b94e8420ae3993acd2df"
+
+[conda-packages.macos-x64."gmp-6.3.0-hf036a51_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda"
+checksum = "sha256:75aa5e7a875afdcf4903b7dc98577672a3dc17b528ac217b915f9528f93c85fc"
+
+[conda-packages.macos-x64."graphite2-1.3.14-h21dd04a_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h21dd04a_2.conda"
+checksum = "sha256:c356eb7a42775bd2bae243d9987436cd1a442be214b1580251bb7fdc136d804b"
+
+[conda-packages.macos-x64."harfbuzz-14.2.0-hf0bc557_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-14.2.0-hf0bc557_0.conda"
+checksum = "sha256:ab070b8961569fbdd3e414bee89887f1ca97522c73afb0fa2f055ad775c7dd20"
+
+[conda-packages.macos-x64."icu-78.3-h25d91c4_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_0.conda"
+checksum = "sha256:1294117122d55246bb83ad5b589e2a031aacdf2d0b1f99fd338aa4394f881735"
+
+[conda-packages.macos-x64."lame-3.100-hb7f2c08_1003"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/lame-3.100-hb7f2c08_1003.tar.bz2"
+checksum = "sha256:0f943b08abb4c748d73207594321b53bad47eea3e7d06b6078e0f6c59ce6771e"
+
+[conda-packages.macos-x64."lcms2-2.19.1-h5ea7634_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.19.1-h5ea7634_0.conda"
+checksum = "sha256:af14a2021a151b3bd98e5b40db0762b35ff54e57fa8c1968cca728cef8d13a8a"
+
+[conda-packages.macos-x64."lerc-4.1.0-h35c7297_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/lerc-4.1.0-h35c7297_0.conda"
+checksum = "sha256:f918716c71c8bebbc0c40e1050878aa512fea92c1d17c363ca35650bc60f6c35"
+
+[conda-packages.macos-x64."libabseil-20260107.1-cxx17_h7ed6875_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libabseil-20260107.1-cxx17_h7ed6875_0.conda"
+checksum = "sha256:2b4ff36082ddfbacc47ac6e11d4dd9f3403cd109ce8d7f0fbee0cdd47cdef013"
+
+[conda-packages.macos-x64."libass-0.17.4-h87c4fc2_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libass-0.17.4-h87c4fc2_0.conda"
+checksum = "sha256:7ddcb016d016919f1735fd2c6b826bb4d7dabd995d053b748d41ef47343fe001"
+
+[conda-packages.macos-x64."libbrotlicommon-1.2.0-h8616949_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda"
+checksum = "sha256:4c19b211b3095f541426d5a9abac63e96a5045e509b3d11d4f9482de53efe43b"
+
+[conda-packages.macos-x64."libbrotlidec-1.2.0-h8616949_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda"
+checksum = "sha256:729158be90ae655a4e0427fe4079767734af1f9b69ff58cf94ca6e8d4b3eb4b7"
+
+[conda-packages.macos-x64."libbrotlienc-1.2.0-h8616949_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda"
+checksum = "sha256:8ece7b41b6548d6601ac2c2cd605cf2261268fc4443227cc284477ed23fbd401"
+
+[conda-packages.macos-x64."libcxx-22.1.6-h19cb2f5_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.6-h19cb2f5_0.conda"
+checksum = "sha256:6d60efb63fe4d0299526fcb26e06de1933de55c36fc2ae5a1478f1aa734604bb"
+
+[conda-packages.macos-x64."libdeflate-1.25-h517ebb2_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda"
+checksum = "sha256:025f8b1e85dd8254e0ca65f011919fb1753070eb507f03bca317871a884d24de"
+
+[conda-packages.macos-x64."libdovi-3.3.2-h59a3c7f_4"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libdovi-3.3.2-h59a3c7f_4.conda"
+checksum = "sha256:74e5c45cb86449bd7141e6be6d38ad5e7b11286a18f7adf338c2a763ade47add"
+
+[conda-packages.macos-x64."libexpat-2.8.1-hcc62823_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_0.conda"
+checksum = "sha256:460afe7ba0882e6d2fcc0ad1568dce27025110ec09c2b9ce9e3b49d61e52ce6b"
+
+[conda-packages.macos-x64."libffi-3.5.2-hd1f9c09_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda"
+checksum = "sha256:951958d1792238006fdc6fce7f71f1b559534743b26cc1333497d46e5903a2d6"
+
+[conda-packages.macos-x64."libfreetype-2.14.3-h694c41f_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.3-h694c41f_0.conda"
+checksum = "sha256:b5daa4cee3beb98a0317e81a20aa507b9f897a9e21b11fe0b2e32852e372f746"
+
+[conda-packages.macos-x64."libfreetype6-2.14.3-h58fbd8d_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.3-h58fbd8d_0.conda"
+checksum = "sha256:9d34b5b2be6ebdd3bcd9e21d6598d493afce4d3fcd2d419f3356022cb4d746fd"
+
+[conda-packages.macos-x64."libglib-2.88.1-hf28f236_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libglib-2.88.1-hf28f236_2.conda"
+checksum = "sha256:9e10d37f49b4efef3426ac323dd8cec88a48df57d49e335d5aef8eac08ea9226"
+
+[conda-packages.macos-x64."libhwloc-2.13.0-default_h4e3125e_1000"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.13.0-default_h4e3125e_1000.conda"
+checksum = "sha256:8e051b990da280ca6eca2f025640572459a0ddfa2b3b71a113e4d14b4277aa33"
+
+[conda-packages.macos-x64."libhwy-1.4.0-hca42a69_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.4.0-hca42a69_0.conda"
+checksum = "sha256:fb82a974f5bc029963665a77a0d669cacecfd067e1f3b32fe427d806ec21d52b"
+
+[conda-packages.macos-x64."libiconv-1.18-h57a12c2_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda"
+checksum = "sha256:a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6"
+
+[conda-packages.macos-x64."libintl-0.25.1-h3184127_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda"
+checksum = "sha256:8c352744517bc62d24539d1ecc813b9fdc8a785c780197c5f0b84ec5b0dfe122"
+
+[conda-packages.macos-x64."libjpeg-turbo-3.1.4.1-ha1e9b39_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.4.1-ha1e9b39_0.conda"
+checksum = "sha256:6b809d8acb6b97bbb1a858eb4ba7b7163c67257b6c3f199dd9d1e0751f4c5b18"
+
+[conda-packages.macos-x64."libjxl-0.11.2-h473410d_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-h473410d_1.conda"
+checksum = "sha256:5c59a02fcb345c49ef8bdd5e1889de8aa918bedd95917f9805d20659cec65da1"
+
+[conda-packages.macos-x64."liblzma-5.8.3-hbb4bfdb_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda"
+checksum = "sha256:d9e2006051529aec5578c6efeb13bb6a7200a014b2d5a77a579e83a8049d5f3c"
+
+[conda-packages.macos-x64."libogg-1.3.5-he3325bb_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libogg-1.3.5-he3325bb_1.conda"
+checksum = "sha256:26691d40c70e83d3955a8daaee713aa7d087aa351c5a1f43786bbb0e871f29da"
+
+[conda-packages.macos-x64."libopenvino-2026.0.0-hb00a3bc_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-2026.0.0-hb00a3bc_1.conda"
+checksum = "sha256:5b7438c6e51cfda96081777fa9eeb912e1cfa8ae347805623ae1fe33c8283b09"
+
+[conda-packages.macos-x64."libopenvino-auto-batch-plugin-2026.0.0-hb282e6e_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-batch-plugin-2026.0.0-hb282e6e_1.conda"
+checksum = "sha256:74449b53eddf09e3f5ac77d0d63c295408693eb35c2f3f06497739228c6fd43e"
+
+[conda-packages.macos-x64."libopenvino-auto-plugin-2026.0.0-hb282e6e_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-plugin-2026.0.0-hb282e6e_1.conda"
+checksum = "sha256:7f6d0e5c59355d26349bcda3d6f93e87d80c4558c8d3a250c46828043be7d142"
+
+[conda-packages.macos-x64."libopenvino-hetero-plugin-2026.0.0-hdd33d0b_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-hetero-plugin-2026.0.0-hdd33d0b_1.conda"
+checksum = "sha256:80f35bd1d5bb1e5576d21033dc45fd9bb4851b3c83a6fd038513e5ae2f5f9aea"
+
+[conda-packages.macos-x64."libopenvino-intel-cpu-plugin-2026.0.0-hb00a3bc_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-intel-cpu-plugin-2026.0.0-hb00a3bc_1.conda"
+checksum = "sha256:50a2239be28a1d25b2bfdb9db8544af7757ac5a7bfb03237e182a433540a47ac"
+
+[conda-packages.macos-x64."libopenvino-ir-frontend-2026.0.0-hdd33d0b_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-ir-frontend-2026.0.0-hdd33d0b_1.conda"
+checksum = "sha256:3a11682b364affb7c9ef6d12834b58a5ca3062ab685667382273770a03a29e07"
+
+[conda-packages.macos-x64."libopenvino-onnx-frontend-2026.0.0-h4178b9d_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-onnx-frontend-2026.0.0-h4178b9d_1.conda"
+checksum = "sha256:1ad9ceacfe4bb1b33ef5b233c68b445d00052972c5798a21576d29f76aa5cb4b"
+
+[conda-packages.macos-x64."libopenvino-paddle-frontend-2026.0.0-h4178b9d_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-paddle-frontend-2026.0.0-h4178b9d_1.conda"
+checksum = "sha256:7156655d855ea7c2a58fbfa8fe691cf9dcca546027fec360d8f9651ad15aa393"
+
+[conda-packages.macos-x64."libopenvino-pytorch-frontend-2026.0.0-hcc62823_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-pytorch-frontend-2026.0.0-hcc62823_1.conda"
+checksum = "sha256:b2488eb49b1b33bbe2a2ae4b544f4e816564ace190b15d69f81e47ed9c476591"
+
+[conda-packages.macos-x64."libopenvino-tensorflow-frontend-2026.0.0-hc17a88c_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-frontend-2026.0.0-hc17a88c_1.conda"
+checksum = "sha256:195cc0ffc34f4f5d1d0d05c52c312755224b068b3103bef728a50f50573dee26"
+
+[conda-packages.macos-x64."libopenvino-tensorflow-lite-frontend-2026.0.0-hcc62823_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-lite-frontend-2026.0.0-hcc62823_1.conda"
+checksum = "sha256:53a85cb10d8add9072b8a38d8cb299a0c2cbc452aba4be16099d33cf8bef5570"
+
+[conda-packages.macos-x64."libopus-1.6.1-hc6ced15_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libopus-1.6.1-hc6ced15_0.conda"
+checksum = "sha256:14389effc1a614456cfe013e4b34e0431f28c5e0047bb6fc80b7dbdab3df4d25"
+
+[conda-packages.macos-x64."libplacebo-7.351.0-he17f467_3"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libplacebo-7.351.0-he17f467_3.conda"
+checksum = "sha256:bf83d4df6edb2da98cf00f79c8afb7b728e9ae12f72456671e854473b9ac2737"
+
+[conda-packages.macos-x64."libpng-1.6.58-he930e7c_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.58-he930e7c_0.conda"
+checksum = "sha256:a669b22978e546484d18d99a210801b1823360a266d7035c713d8d1facd035f7"
+
+[conda-packages.macos-x64."libprotobuf-6.33.5-hff14b61_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.33.5-hff14b61_1.conda"
+checksum = "sha256:c511b4e8026c94b152031a9ee410583991b4a610ebbb1b86992724c37d9abf50"
+
+[conda-packages.macos-x64."librsvg-2.62.2-h7321050_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.62.2-h7321050_0.conda"
+checksum = "sha256:891a5c97cf7f1795f5e480c9f6c50f4758a77695c5e649809da69d98edc61f87"
+
+[conda-packages.macos-x64."libtiff-4.7.1-ha0a348c_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-ha0a348c_1.conda"
+checksum = "sha256:e53424c34147301beae2cd9223ebf593720d94c038b3f03cacd0535e12c9668e"
+
+[conda-packages.macos-x64."libusb-1.0.29-h2287256_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libusb-1.0.29-h2287256_0.conda"
+checksum = "sha256:b46c1c71d8be2d19615a10eaa997b3547848d1aee25a7e9486ad1ca8d61626a7"
+
+[conda-packages.macos-x64."libvorbis-1.3.7-ha059160_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libvorbis-1.3.7-ha059160_2.conda"
+checksum = "sha256:7b79c0e867db70c66e57ea0abf03ea940070ed8372289d6dc5db7ab59e30acc1"
+
+[conda-packages.macos-x64."libvpx-1.15.2-heffb93a_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libvpx-1.15.2-heffb93a_0.conda"
+checksum = "sha256:e82f4e3e40e1d31eaecda27970bace1f13037c39ff65c043fc451a07defeddce"
+
+[conda-packages.macos-x64."libvulkan-loader-1.4.341.0-ha6bc089_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libvulkan-loader-1.4.341.0-ha6bc089_0.conda"
+checksum = "sha256:ce9bc992ffffdefbde5f7977b0a3ad9036650f8323611e4024908755891674e0"
+
+[conda-packages.macos-x64."libwebp-base-1.6.0-hb807250_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda"
+checksum = "sha256:00dbfe574b5d9b9b2b519acb07545380a6bc98d1f76a02695be4995d4ec91391"
+
+[conda-packages.macos-x64."libxml2-16-2.15.3-h7a90416_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.3-h7a90416_0.conda"
+checksum = "sha256:437f003e299d77403db42d17e532d686236f357ac5c3d6bf466558c697902597"
+
+[conda-packages.macos-x64."libxml2-2.15.3-h953d39d_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.3-h953d39d_0.conda"
+checksum = "sha256:24248928e63b5de45012c8ad3fd6b350ae1fe2fc355613bb89ee5f0a35835bea"
+
+[conda-packages.macos-x64."libzlib-1.3.2-hbb4bfdb_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda"
+checksum = "sha256:4c6da089952b2d70150c74234679d6f7ac04f4a98f9432dec724968f912691e7"
+
+[conda-packages.macos-x64."openh264-2.6.0-h4883158_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/openh264-2.6.0-h4883158_0.conda"
+checksum = "sha256:a6d734ddbfed9b6b972e7564f5d5eeaab9db2ba128ef92677abd11d36192ff2f"
+
+[conda-packages.macos-x64."openssl-3.6.2-hc881268_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.2-hc881268_0.conda"
+checksum = "sha256:334fd49ea31b99114f5afb1ec44555dc8c90640648302a4f8f838ee345d1ec50"
+
+[conda-packages.macos-x64."pango-1.56.4-hf280016_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-hf280016_1.conda"
+checksum = "sha256:c1150e6a405985b25830c18f896d5e89b9777ef7e420bc0b1d88634f9a614769"
+
+[conda-packages.macos-x64."pcre2-10.47-h13923f0_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda"
+checksum = "sha256:8d64a9d36073346542e5ea042ef8207a45a0069a2e65ce3323ee3146db78134c"
+
+[conda-packages.macos-x64."pixman-0.46.4-ha059160_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-ha059160_1.conda"
+checksum = "sha256:ff8b679079df25aa3ed5daf3f4e3a9c7ee79e7d4b2bd8a21de0f8e7ec7207806"
+
+[conda-packages.macos-x64."pugixml-1.15-h46091d4_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/pugixml-1.15-h46091d4_0.conda"
+checksum = "sha256:d22fd205d2db21c835e233c30e91e348735e18418c35327b0406d2d917e39a90"
+
+[conda-packages.macos-x64."sdl2-2.32.56-h53ec75d_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/sdl2-2.32.56-h53ec75d_0.conda"
+checksum = "sha256:3f64f2cabdfe2f4ed8df6adf26a86bd9db07380cb8fa28d18a80040cc8b8b7d9"
+
+[conda-packages.macos-x64."sdl3-3.4.8-hf9078ff_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/sdl3-3.4.8-hf9078ff_0.conda"
+checksum = "sha256:48f52ad61d8d5b0fc59643fd079a83f4b8c58f02dadd3a0454fdaf44c9fcc477"
+
+[conda-packages.macos-x64."shaderc-2026.2-hce4445a_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/shaderc-2026.2-hce4445a_0.conda"
+checksum = "sha256:53b067144e8eb8393c27d56c13fc4164bf984a55ff11b7f12c1c5b7f4496409f"
+
+[conda-packages.macos-x64."snappy-1.2.2-h01f5ddf_1"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda"
+checksum = "sha256:1525e6d8e2edf32dabfe2a8e2fc8bf2df81c5ef9f0b5374a3d4ccfa672bfd949"
+
+[conda-packages.macos-x64."spirv-tools-2026.1-h06b67a2_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/spirv-tools-2026.1-h06b67a2_0.conda"
+checksum = "sha256:88a446dd143d9d318343fa2c92e67b6cbefd0d48b71693aacb3f2dcba6a4eaf3"
+
+[conda-packages.macos-x64."svt-av1-4.0.1-h991f03e_0"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/svt-av1-4.0.1-h991f03e_0.conda"
+checksum = "sha256:5f8c150f558437364bfe6dade1a81cf1b3fe8ba291d8d8db01f889c32a310f08"
+
+[conda-packages.macos-x64."tbb-2023.0.0-he3dc2fa_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/tbb-2023.0.0-he3dc2fa_2.conda"
+checksum = "sha256:f57b374fa5bbb1823a9e1b7e4a9db044c42964313c59d4c652b948f20b55d1a0"
+
+[conda-packages.macos-x64."x264-1!164.3095-h775f41a_2"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/x264-1!164.3095-h775f41a_2.tar.bz2"
+checksum = "sha256:de611da29f4ed0733a330402e163f9260218e6ba6eae593a5f945827d0ee1069"
+
+[conda-packages.macos-x64."x265-3.5-hbb4e6a2_3"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/x265-3.5-hbb4e6a2_3.tar.bz2"
+checksum = "sha256:6b6a57710192764d0538f72ea1ccecf2c6174a092e0bc76d790f8ca36bbe90e4"
+
+[conda-packages.macos-x64."zstd-1.5.7-h3eecb57_6"]
+url = "https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda"
+checksum = "sha256:47101a4055a70a4876ffc87b750ab2287b67eca793f21c8224be5e1ee6394d3f"
+
+[conda-packages.windows-x64."aom-3.9.1-he0c23c2_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/aom-3.9.1-he0c23c2_0.conda"
+checksum = "sha256:0524d0c0b61dacd0c22ac7a8067f977b1d52380210933b04141f5099c5b6fec7"
+
+[conda-packages.windows-x64."bzip2-1.0.8-h0ad9c76_9"]
+url = "https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda"
+checksum = "sha256:76dfb71df5e8d1c4eded2dbb5ba15bb8fb2e2b0fe42d94145d5eed4c75c35902"
+
+[conda-packages.windows-x64."ca-certificates-2026.5.20-h4c7d964_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-h4c7d964_0.conda"
+checksum = "sha256:86981d764e4ea1883409d30447ff9da46127426d31a63df08315aaded768e652"
+
+[conda-packages.windows-x64."cairo-1.18.4-h477c42c_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h477c42c_1.conda"
+checksum = "sha256:9ee4ad706c5d3e1c6c469785d60e3c2b263eec569be0eac7be33fbaef978bccc"
+
+[conda-packages.windows-x64."dav1d-1.2.1-hcfcfb64_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/dav1d-1.2.1-hcfcfb64_0.conda"
+checksum = "sha256:2aa2083c9c186da7d6f975ccfbef654ed54fff27f4bc321dbcd12cee932ec2c4"
+
+[conda-packages.windows-x64."font-ttf-dejavu-sans-mono-2.37-hab24e00_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2"
+checksum = "sha256:58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b"
+
+[conda-packages.windows-x64."font-ttf-inconsolata-3.000-h77eed37_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2"
+checksum = "sha256:c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c"
+
+[conda-packages.windows-x64."font-ttf-source-code-pro-2.038-h77eed37_0"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2"
+checksum = "sha256:00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139"
+
+[conda-packages.windows-x64."font-ttf-ubuntu-0.83-h77eed37_3"]
+url = "https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda"
+checksum = "sha256:2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14"
+
+[conda-packages.windows-x64."fontconfig-2.18.0-hd47e2ca_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.18.0-hd47e2ca_0.conda"
+checksum = "sha256:b1bd6a9a15517d32ffa3165f3562808c6b02319ffed0b49d39a7d15381fb0527"
+
+[conda-packages.windows-x64.fonts-conda-ecosystem-1-0]
+url = "https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2"
+checksum = "sha256:a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61"
+
+[conda-packages.windows-x64.fonts-conda-forge-1-hc364b38_1]
+url = "https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda"
+checksum = "sha256:54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333"
+
+[conda-packages.windows-x64."fribidi-1.0.16-hfd05255_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_0.conda"
+checksum = "sha256:15011071ee56c216ffe276c8d734427f1f893f275ef733f728d13f610ed89e6e"
+
+[conda-packages.windows-x64."gdk-pixbuf-2.44.6-h1f5b9c4_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/gdk-pixbuf-2.44.6-h1f5b9c4_0.conda"
+checksum = "sha256:3b8a4bdb183b3b9b70caa91498680add15fb70678ec2a21391e6860c5dfed3e7"
+
+[conda-packages.windows-x64."glslang-16.3.0-h294ba9c_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/glslang-16.3.0-h294ba9c_0.conda"
+checksum = "sha256:d80276b89d8aeab6ff0d8d7d4b9af336b368fc0b8fa28ea8cde6f6f2aa07bacf"
+
+[conda-packages.windows-x64."graphite2-1.3.14-hac47afa_2"]
+url = "https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-hac47afa_2.conda"
+checksum = "sha256:5f1714b07252f885a62521b625898326ade6ca25fbc20727cfe9a88f68a54bfd"
+
+[conda-packages.windows-x64."harfbuzz-14.2.0-h5a1b470_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/harfbuzz-14.2.0-h5a1b470_0.conda"
+checksum = "sha256:82abc468768c5130b45e4025fe289e0c84ea015d7fa23059503da212c89097cb"
+
+[conda-packages.windows-x64."icu-78.3-h637d24d_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/icu-78.3-h637d24d_0.conda"
+checksum = "sha256:1bda728d70a619731b278c859eda364146cb5b4b8c739a64da8128353d81d1c4"
+
+[conda-packages.windows-x64."lame-3.100-hcfcfb64_1003"]
+url = "https://conda.anaconda.org/conda-forge/win-64/lame-3.100-hcfcfb64_1003.tar.bz2"
+checksum = "sha256:824988a396b97bb9138823a1b3aabd8326e06da5834b3011253d72bb45fd3a88"
+
+[conda-packages.windows-x64."lerc-4.1.0-hd936e49_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/lerc-4.1.0-hd936e49_0.conda"
+checksum = "sha256:45df58fca800b552b17c3914cc9ab0d55a82c5172d72b5c44a59c710c06c5473"
+
+[conda-packages.windows-x64."libbrotlicommon-1.2.0-hfd05255_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.2.0-hfd05255_1.conda"
+checksum = "sha256:5097303c2fc8ebf9f9ea9731520aa5ce4847d0be41764edd7f6dee2100b82986"
+
+[conda-packages.windows-x64."libbrotlidec-1.2.0-hfd05255_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.2.0-hfd05255_1.conda"
+checksum = "sha256:3239ce545cf1c32af6fffb7fc7c75cb1ef5b6ea8221c66c85416bb2d46f5cccb"
+
+[conda-packages.windows-x64."libbrotlienc-1.2.0-hfd05255_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.2.0-hfd05255_1.conda"
+checksum = "sha256:3226df6b7df98734440739f75527d585d42ca2bfe912fbe8d1954c512f75341a"
+
+[conda-packages.windows-x64."libdeflate-1.25-h51727cc_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.25-h51727cc_0.conda"
+checksum = "sha256:834e4881a18b690d5ec36f44852facd38e13afe599e369be62d29bd675f107ee"
+
+[conda-packages.windows-x64."libexpat-2.8.1-hac47afa_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.1-hac47afa_0.conda"
+checksum = "sha256:a65e518c20d1482182bc0f1f6dd5d992f25ca44c3b32307be39ae8310db8f060"
+
+[conda-packages.windows-x64."libffi-3.5.2-h3d046cb_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda"
+checksum = "sha256:59d01f2dfa8b77491b5888a5ab88ff4e1574c9359f7e229da254cdfe27ddc190"
+
+[conda-packages.windows-x64."libfreetype-2.14.3-h57928b3_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.14.3-h57928b3_0.conda"
+checksum = "sha256:71fae9ae05563ceec70adceb7bc66faa326a81a6590a8aac8a5074019070a2d8"
+
+[conda-packages.windows-x64."libfreetype6-2.14.3-hdbac1cb_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.14.3-hdbac1cb_0.conda"
+checksum = "sha256:497e9ab7c80f579e1b2850523740d6a543b8020f6b43be6bd6e83b3a6fb7fb32"
+
+[conda-packages.windows-x64."libglib-2.88.1-h7ce1215_2"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libglib-2.88.1-h7ce1215_2.conda"
+checksum = "sha256:f61277e224e9889c221bb2eac0f57d5aeeb82fc45d3dc326957d251c97444f7c"
+
+[conda-packages.windows-x64."libhwy-1.4.0-h172a326_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libhwy-1.4.0-h172a326_0.conda"
+checksum = "sha256:4b45bf59ee46d3c746272c27651da9ce709fda4eee8536c7424acea60d0e2ad0"
+
+[conda-packages.windows-x64."libiconv-1.18-hc1393d2_2"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda"
+checksum = "sha256:0dcdb1a5f01863ac4e8ba006a8b0dc1a02d2221ec3319b5915a1863254d7efa7"
+
+[conda-packages.windows-x64."libintl-0.22.5-h5728263_3"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda"
+checksum = "sha256:c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511"
+
+[conda-packages.windows-x64."libjpeg-turbo-3.1.4.1-hfd05255_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.4.1-hfd05255_0.conda"
+checksum = "sha256:698d57b5b90120270eaa401298319fcb25ea186ae95b340c2f4813ed9171083d"
+
+[conda-packages.windows-x64."libjxl-0.11.2-h932607e_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.2-h932607e_1.conda"
+checksum = "sha256:4715e22c602526c85da09f73865676add67e0995a944b821fbff84547a9db533"
+
+[conda-packages.windows-x64."liblzma-5.8.3-hfd05255_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.3-hfd05255_0.conda"
+checksum = "sha256:d636d1a25234063642f9c531a7bb58d84c1c496411280a36ea000bd122f078f1"
+
+[conda-packages.windows-x64."libogg-1.3.5-h2466b09_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.5-h2466b09_1.conda"
+checksum = "sha256:c63e5fb169dbd192aacdcee6e37235407f106b8ca9c9036942a25e0366cbc73c"
+
+[conda-packages.windows-x64."libopus-1.6.1-h6a83c73_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libopus-1.6.1-h6a83c73_0.conda"
+checksum = "sha256:c3678f111866235b44fa65265966abae7d90b6387178f1459afaedcee8b4a997"
+
+[conda-packages.windows-x64."libpng-1.6.58-h7351971_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.58-h7351971_0.conda"
+checksum = "sha256:218913aeee391460bd0e341b834dbd9c6fa6ae0a4276c0c300266cc99a816a28"
+
+[conda-packages.windows-x64."librsvg-2.62.2-h15cfe45_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/librsvg-2.62.2-h15cfe45_0.conda"
+checksum = "sha256:972bcb47055863e7a7e13d6c8af415b7df8963f149a8cd279252e8890678088f"
+
+[conda-packages.windows-x64."libtiff-4.7.1-h8f73337_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h8f73337_1.conda"
+checksum = "sha256:f1b8cccaaeea38a28b9cd496694b2e3d372bb5be0e9377c9e3d14b330d1cba8a"
+
+[conda-packages.windows-x64."libusb-1.0.29-h1839187_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libusb-1.0.29-h1839187_0.conda"
+checksum = "sha256:9837f8e8de20b6c9c033561cd33b4554cd551b217e3b8d2862b353ed2c23d8b8"
+
+[conda-packages.windows-x64."libvorbis-1.3.7-h5112557_2"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libvorbis-1.3.7-h5112557_2.conda"
+checksum = "sha256:429124709c73b2e8fae5570bdc6b42f5418a7551ba72e591bb960b752e87b365"
+
+[conda-packages.windows-x64."libvulkan-loader-1.4.341.0-h477610d_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.341.0-h477610d_0.conda"
+checksum = "sha256:0f0965edca8b255187604fc7712c53fe9064b31a1845a7dfb2b63bf660de84a7"
+
+[conda-packages.windows-x64."libwebp-base-1.6.0-h4d5522a_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda"
+checksum = "sha256:7b6316abfea1007e100922760e9b8c820d6fc19df3f42fb5aca684cfacb31843"
+
+[conda-packages.windows-x64."libxml2-16-2.15.3-h3cfd58e_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.3-h3cfd58e_0.conda"
+checksum = "sha256:3b61ee3caba702d2ff432fa3920835db963026e5c99c4e6fdca0c6114f59e7ce"
+
+[conda-packages.windows-x64."libxml2-2.15.3-h8ef44ab_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.3-h8ef44ab_0.conda"
+checksum = "sha256:a4599c6bbbbdd7db570896e520c557eec8e66d94e839a59d17dc1f24a3d5f82b"
+
+[conda-packages.windows-x64."libzlib-1.3.2-hfd05255_2"]
+url = "https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_2.conda"
+checksum = "sha256:88609816e0cc7452bac637aaf65783e5edf4fee8a9f8e22bdc3a75882c536061"
+
+[conda-packages.windows-x64."openh264-2.6.0-hb17fa0b_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/openh264-2.6.0-hb17fa0b_0.conda"
+checksum = "sha256:914702d9a64325ff3afb072c8bc0f8cbea3f19955a8395a8c190e45604f83c76"
+
+[conda-packages.windows-x64."openssl-3.6.2-hf411b9b_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.2-hf411b9b_0.conda"
+checksum = "sha256:feb5815125c60f2be4a411e532db1ed1cd2d7261a6a43c54cb6ae90724e2e154"
+
+[conda-packages.windows-x64."pango-1.56.4-h13911b6_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h13911b6_1.conda"
+checksum = "sha256:3d4e6e541e633f6fd22fc2c1d79ad5ec39503dea3ba04fc3e01d5be904ec7cea"
+
+[conda-packages.windows-x64."pcre2-10.47-hd2b5f0e_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda"
+checksum = "sha256:3e9e02174edf02cb4bcdd75668ad7b74b8061791a3bc8bdb8a52ae336761ba3e"
+
+[conda-packages.windows-x64."pixman-0.46.4-h5112557_1"]
+url = "https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-h5112557_1.conda"
+checksum = "sha256:246fce4706b3f8b247a7d6142ba8d732c95263d3c96e212b9d63d6a4ab4aff35"
+
+[conda-packages.windows-x64."sdl2-2.32.56-h5112557_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/sdl2-2.32.56-h5112557_0.conda"
+checksum = "sha256:d17da21386bdbf32bce5daba5142916feb95eed63ef92b285808c765705bbfd2"
+
+[conda-packages.windows-x64."sdl3-3.4.8-h5112557_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/sdl3-3.4.8-h5112557_0.conda"
+checksum = "sha256:54412f664cfe7f9bebb1cf0eabeb8b4b83c8e37791a2e0fa3692a2b3cfd95888"
+
+[conda-packages.windows-x64."shaderc-2026.2-h8fa7867_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/shaderc-2026.2-h8fa7867_0.conda"
+checksum = "sha256:3a4edc274c947d34258af01886d9ca301098fe037dacd91ccd5f5291dda5ca0b"
+
+[conda-packages.windows-x64."spirv-tools-2026.1-h49e36cd_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/spirv-tools-2026.1-h49e36cd_0.conda"
+checksum = "sha256:9976eeaf650d43833c110447ba264a72f470928d8a8fa5d1cfbadcd2a276184c"
+
+[conda-packages.windows-x64."svt-av1-4.0.1-hac47afa_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/svt-av1-4.0.1-hac47afa_0.conda"
+checksum = "sha256:4d77eec06ee4c5de38d330fb7dfd6dac2f867ec007123acb901be9942e12c08a"
+
+[conda-packages.windows-x64."ucrt-10.0.26100.0-h57928b3_0"]
+url = "https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda"
+checksum = "sha256:3005729dce6f3d3f5ec91dfc49fc75a0095f9cd23bab49efb899657297ac91a5"
+
+[conda-packages.windows-x64."vc-14.5-h1b7c187_38"]
+url = "https://conda.anaconda.org/conda-forge/win-64/vc-14.5-h1b7c187_38.conda"
+checksum = "sha256:61b68e5a4fc71a17f8d64b12e013a2f971ad980bd08e9c389d5e68efe1a67de0"
+
+[conda-packages.windows-x64."vc14_runtime-14.51.36231-h1b9f54f_38"]
+url = "https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.51.36231-h1b9f54f_38.conda"
+checksum = "sha256:957c7c65583c7107a5e76f39756c6361fcb7b0dc101ac7c0aea86e7ca09fe49c"
+
+[conda-packages.windows-x64."vcomp14-14.51.36231-h1b9f54f_38"]
+url = "https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.51.36231-h1b9f54f_38.conda"
+checksum = "sha256:c645fdc1f0f47718431d973386e946754a10200e7ba2c32032560913a970cacd"
+
+[conda-packages.windows-x64."vs2015_runtime-14.51.36231-h84cd919_38"]
+url = "https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.51.36231-h84cd919_38.conda"
+checksum = "sha256:c4f38268563dc6b8322b0191481e5d20002fc6e37b076c15e0b955a553c8b4a0"
+
+[conda-packages.windows-x64."x264-1!164.3095-h8ffe710_2"]
+url = "https://conda.anaconda.org/conda-forge/win-64/x264-1!164.3095-h8ffe710_2.tar.bz2"
+checksum = "sha256:97166b318f8c68ffe4d50b2f4bd36e415219eeaef233e7d41c54244dc6108249"
+
+[conda-packages.windows-x64."x265-3.5-h2d74725_3"]
+url = "https://conda.anaconda.org/conda-forge/win-64/x265-3.5-h2d74725_3.tar.bz2"
+checksum = "sha256:02b9874049112f2b7335c9a3e880ac05d99a08d9a98160c5a98898b2b3ac42b2"
+
+[conda-packages.windows-x64."zstd-1.5.7-h534d264_6"]
+url = "https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda"
+checksum = "sha256:368d8628424966fd8f9c8018326a9c779e06913dd39e646cf331226acc90e5b2"
+
[[tools.actionlint]]
version = "1.7.12"
backend = "aqua:rhysd/actionlint"
@@ -119,6 +1059,302 @@ url = "https://github.com/jdx/communique/releases/download/v1.1.3/communique-x86
url_api = "https://api.github.com/repos/jdx/communique/releases/assets/413755231"
provenance = "github-attestations"
+[[tools.ffmpeg]]
+version = "8.1.1"
+backend = "conda:ffmpeg"
+
+[tools.ffmpeg."platforms.macos-arm64"]
+checksum = "sha256:0ae2fddd81ad657d18eee5f8273d290f039f2f0075c0da74c2edd60110c62243"
+url = "https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-8.1.1-gpl_h246f3d5_101.conda"
+conda_deps = [
+ "svt-av1-4.0.1-h0cb729a_0",
+ "shaderc-2026.2-hf31e910_0",
+ "sdl2-2.32.56-h248ca61_0",
+ "openh264-2.6.0-hb5b2745_0",
+ "libzlib-1.3.2-h8088a28_2",
+ "libwebp-base-1.6.0-h07db88b_0",
+ "libvulkan-loader-1.4.341.0-h3feff0a_0",
+ "libvpx-1.15.2-ha759d40_0",
+ "libplacebo-7.360.1-h176d363_0",
+ "libopus-1.6.1-h1a92334_0",
+ "liblzma-5.8.3-h8088a28_0",
+ "libfreetype6-2.14.3-hdfa99f5_0",
+ "libfreetype-2.14.3-hce30654_0",
+ "libass-0.17.4-hcbd7ca7_0",
+ "harfbuzz-14.2.0-h3103d1b_0",
+ "fonts-conda-ecosystem-1-0",
+ "dav1d-1.2.1-hb547adb_0",
+ "aom-3.9.1-h7bae524_0",
+ "spirv-tools-2026.1-h4ddebb9_0",
+ "icu-78.3-hef89b57_0",
+ "cairo-1.18.4-he0f2337_1",
+ "bzip2-1.0.8-hd037594_9",
+ "fontconfig-2.18.0-h2b252f5_0",
+ "libintl-0.25.1-h493aca8_0",
+ "libexpat-2.8.1-hf6b4638_0",
+ "gmp-6.3.0-h7bae524_2",
+ "lame-3.100-h1a8c8d9_1003",
+ "libcxx-22.1.6-h55c6f16_0",
+ "libiconv-1.18-h23cfdf5_2",
+ "libjxl-0.11.2-h934fa54_1",
+ "libhwy-1.4.0-ha332bbd_0",
+ "libopenvino-2026.0.0-h3e6d54f_1",
+ "pugixml-1.15-hd3d436d_0",
+ "libopenvino-tensorflow-lite-frontend-2026.0.0-hf6b4638_1",
+ "libopenvino-tensorflow-frontend-2026.0.0-hc295da0_1",
+ "libopenvino-pytorch-frontend-2026.0.0-hf6b4638_1",
+ "libopenvino-paddle-frontend-2026.0.0-h41365f2_1",
+ "libopenvino-onnx-frontend-2026.0.0-h41365f2_1",
+ "libopenvino-ir-frontend-2026.0.0-h85cbfa6_1",
+ "libopenvino-hetero-plugin-2026.0.0-h85cbfa6_1",
+ "libopenvino-auto-plugin-2026.0.0-h2406d2e_1",
+ "libopenvino-auto-batch-plugin-2026.0.0-h2406d2e_1",
+ "libopenvino-arm-cpu-plugin-2026.0.0-h3e6d54f_1",
+ "libabseil-20260107.1-cxx17_h2062a1b_0",
+ "librsvg-2.62.2-he8aa2a2_0",
+ "gdk-pixbuf-2.44.6-h4e57454_0",
+ "libvorbis-1.3.7-h81086ad_2",
+ "libxml2-2.15.3-h5654f7c_0",
+ "libxml2-16-2.15.3-h5ef1a60_0",
+ "openssl-3.6.2-hd24854e_0",
+ "x264-1!164.3095-h57fd34a_2",
+ "x265-3.5-hbc6ce65_3",
+ "fonts-conda-forge-1-hc364b38_1",
+ "font-ttf-dejavu-sans-mono-2.37-hab24e00_0",
+ "graphite2-1.3.14-hec049ff_2",
+ "libglib-2.88.1-ha08bb59_2",
+ "pcre2-10.47-h30297fc_0",
+ "fribidi-1.0.16-hc919400_0",
+ "libpng-1.6.58-h132b30e_0",
+ "libbrotlienc-1.2.0-hc919400_1",
+ "libbrotlicommon-1.2.0-hc919400_1",
+ "libbrotlidec-1.2.0-hc919400_1",
+ "tbb-2023.0.0-he0260a5_2",
+ "libhwloc-2.13.0-default_ha97f43a_1000",
+ "libprotobuf-6.33.5-h2d4b707_1",
+ "snappy-1.2.2-hada39a4_1",
+ "libdovi-3.3.2-h78f8ca3_4",
+ "lcms2-2.19.1-hdfa7624_0",
+ "libjpeg-turbo-3.1.4.1-h84a0fba_0",
+ "pango-1.56.4-hf80efc4_1",
+ "libogg-1.3.5-h48c0fde_1",
+ "ca-certificates-2026.5.20-hbd8a1cb_0",
+ "sdl3-3.4.8-h6fa9c73_0",
+ "libusb-1.0.29-hbc156a2_0",
+ "glslang-16.3.0-h7cb4797_0",
+ "font-ttf-ubuntu-0.83-h77eed37_3",
+ "font-ttf-inconsolata-3.000-h77eed37_0",
+ "font-ttf-source-code-pro-2.038-h77eed37_0",
+ "pixman-0.46.4-h81086ad_1",
+ "libffi-3.5.2-hcf2aa1b_0",
+ "libtiff-4.7.1-h4030677_1",
+ "libdeflate-1.25-hc11a715_0",
+ "dbus-1.16.2-h3ff7a7c_1",
+ "lerc-4.1.0-h1eee2c3_0",
+ "zstd-1.5.7-hbf9d68e_6",
+]
+
+[tools.ffmpeg."platforms.macos-x64"]
+checksum = "sha256:45dc1a765347263a66548376f4f71bb7ae36e446495ac2457d1c0a74b2bc8128"
+url = "https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-8.1.1-gpl_h4173f9d_100.conda"
+conda_deps = [
+ "svt-av1-4.0.1-h991f03e_0",
+ "shaderc-2026.2-hce4445a_0",
+ "sdl2-2.32.56-h53ec75d_0",
+ "openh264-2.6.0-h4883158_0",
+ "libzlib-1.3.2-hbb4bfdb_2",
+ "libwebp-base-1.6.0-hb807250_0",
+ "libvulkan-loader-1.4.341.0-ha6bc089_0",
+ "libvpx-1.15.2-heffb93a_0",
+ "libopus-1.6.1-hc6ced15_0",
+ "liblzma-5.8.3-hbb4bfdb_0",
+ "libfreetype6-2.14.3-h58fbd8d_0",
+ "libfreetype-2.14.3-h694c41f_0",
+ "libass-0.17.4-h87c4fc2_0",
+ "harfbuzz-14.2.0-hf0bc557_0",
+ "fonts-conda-ecosystem-1-0",
+ "dav1d-1.2.1-h0dc2134_0",
+ "aom-3.9.1-hf036a51_0",
+ "spirv-tools-2026.1-h06b67a2_0",
+ "icu-78.3-h25d91c4_0",
+ "libplacebo-7.351.0-he17f467_3",
+ "cairo-1.18.4-h7656bdc_1",
+ "bzip2-1.0.8-h500dc9f_9",
+ "fontconfig-2.18.0-h7a4440b_0",
+ "libexpat-2.8.1-hcc62823_0",
+ "gmp-6.3.0-hf036a51_2",
+ "lame-3.100-hb7f2c08_1003",
+ "libcxx-22.1.6-h19cb2f5_0",
+ "libiconv-1.18-h57a12c2_2",
+ "libjxl-0.11.2-h473410d_1",
+ "libhwy-1.4.0-hca42a69_0",
+ "libopenvino-2026.0.0-hb00a3bc_1",
+ "pugixml-1.15-h46091d4_0",
+ "libopenvino-tensorflow-lite-frontend-2026.0.0-hcc62823_1",
+ "libopenvino-tensorflow-frontend-2026.0.0-hc17a88c_1",
+ "libopenvino-pytorch-frontend-2026.0.0-hcc62823_1",
+ "libopenvino-paddle-frontend-2026.0.0-h4178b9d_1",
+ "libopenvino-onnx-frontend-2026.0.0-h4178b9d_1",
+ "libopenvino-ir-frontend-2026.0.0-hdd33d0b_1",
+ "libopenvino-intel-cpu-plugin-2026.0.0-hb00a3bc_1",
+ "libopenvino-hetero-plugin-2026.0.0-hdd33d0b_1",
+ "libopenvino-auto-plugin-2026.0.0-hb282e6e_1",
+ "libopenvino-auto-batch-plugin-2026.0.0-hb282e6e_1",
+ "libabseil-20260107.1-cxx17_h7ed6875_0",
+ "librsvg-2.62.2-h7321050_0",
+ "gdk-pixbuf-2.44.6-hae309b2_0",
+ "libvorbis-1.3.7-ha059160_2",
+ "libxml2-2.15.3-h953d39d_0",
+ "libxml2-16-2.15.3-h7a90416_0",
+ "openssl-3.6.2-hc881268_0",
+ "x264-1!164.3095-h775f41a_2",
+ "x265-3.5-hbb4e6a2_3",
+ "libintl-0.25.1-h3184127_1",
+ "fonts-conda-forge-1-hc364b38_1",
+ "font-ttf-dejavu-sans-mono-2.37-hab24e00_0",
+ "graphite2-1.3.14-h21dd04a_2",
+ "libglib-2.88.1-hf28f236_2",
+ "pcre2-10.47-h13923f0_0",
+ "fribidi-1.0.16-h8616949_0",
+ "libpng-1.6.58-he930e7c_0",
+ "libbrotlienc-1.2.0-h8616949_1",
+ "libbrotlicommon-1.2.0-h8616949_1",
+ "libbrotlidec-1.2.0-h8616949_1",
+ "tbb-2023.0.0-he3dc2fa_2",
+ "libhwloc-2.13.0-default_h4e3125e_1000",
+ "libprotobuf-6.33.5-hff14b61_1",
+ "snappy-1.2.2-h01f5ddf_1",
+ "lcms2-2.19.1-h5ea7634_0",
+ "libjpeg-turbo-3.1.4.1-ha1e9b39_0",
+ "libdovi-3.3.2-h59a3c7f_4",
+ "pango-1.56.4-hf280016_1",
+ "libogg-1.3.5-he3325bb_1",
+ "ca-certificates-2026.5.20-hbd8a1cb_0",
+ "sdl3-3.4.8-hf9078ff_0",
+ "libusb-1.0.29-h2287256_0",
+ "glslang-16.3.0-he78e680_0",
+ "font-ttf-ubuntu-0.83-h77eed37_3",
+ "font-ttf-inconsolata-3.000-h77eed37_0",
+ "font-ttf-source-code-pro-2.038-h77eed37_0",
+ "pixman-0.46.4-ha059160_1",
+ "libffi-3.5.2-hd1f9c09_0",
+ "libtiff-4.7.1-ha0a348c_1",
+ "libdeflate-1.25-h517ebb2_0",
+ "dbus-1.16.2-h6e7f9a9_1",
+ "lerc-4.1.0-h35c7297_0",
+ "zstd-1.5.7-h3eecb57_6",
+]
+
+[tools.ffmpeg."platforms.windows-x64"]
+checksum = "sha256:edf430689fdc2194a13df5a39773f95fe76be8c707679f22926942be862492ff"
+url = "https://conda.anaconda.org/conda-forge/win-64/ffmpeg-8.1.1-gpl_h7d7abef_901.conda"
+conda_deps = [
+ "x265-3.5-h2d74725_3",
+ "svt-av1-4.0.1-hac47afa_0",
+ "shaderc-2026.2-h8fa7867_0",
+ "sdl2-2.32.56-h5112557_0",
+ "openh264-2.6.0-hb17fa0b_0",
+ "libzlib-1.3.2-hfd05255_2",
+ "libwebp-base-1.6.0-h4d5522a_0",
+ "libvulkan-loader-1.4.341.0-h477610d_0",
+ "libopus-1.6.1-h6a83c73_0",
+ "liblzma-5.8.3-hfd05255_0",
+ "libfreetype6-2.14.3-hdbac1cb_0",
+ "libfreetype-2.14.3-h57928b3_0",
+ "harfbuzz-14.2.0-h5a1b470_0",
+ "fonts-conda-ecosystem-1-0",
+ "dav1d-1.2.1-hcfcfb64_0",
+ "aom-3.9.1-he0c23c2_0",
+ "spirv-tools-2026.1-h49e36cd_0",
+ "icu-78.3-h637d24d_0",
+ "cairo-1.18.4-h477c42c_1",
+ "bzip2-1.0.8-h0ad9c76_9",
+ "fontconfig-2.18.0-hd47e2ca_0",
+ "libexpat-2.8.1-hac47afa_0",
+ "lame-3.100-hcfcfb64_1003",
+ "libiconv-1.18-hc1393d2_2",
+ "libjxl-0.11.2-h932607e_1",
+ "libhwy-1.4.0-h172a326_0",
+ "librsvg-2.62.2-h15cfe45_0",
+ "gdk-pixbuf-2.44.6-h1f5b9c4_0",
+ "libvorbis-1.3.7-h5112557_2",
+ "libxml2-2.15.3-h8ef44ab_0",
+ "libxml2-16-2.15.3-h3cfd58e_0",
+ "openssl-3.6.2-hf411b9b_0",
+ "ucrt-10.0.26100.0-h57928b3_0",
+ "vc-14.5-h1b7c187_38",
+ "vc14_runtime-14.51.36231-h1b9f54f_38",
+ "vcomp14-14.51.36231-h1b9f54f_38",
+ "vs2015_runtime-14.51.36231-h84cd919_38",
+ "x264-1!164.3095-h8ffe710_2",
+ "libintl-0.22.5-h5728263_3",
+ "fonts-conda-forge-1-hc364b38_1",
+ "font-ttf-dejavu-sans-mono-2.37-hab24e00_0",
+ "graphite2-1.3.14-hac47afa_2",
+ "libglib-2.88.1-h7ce1215_2",
+ "pcre2-10.47-hd2b5f0e_0",
+ "libpng-1.6.58-h7351971_0",
+ "libbrotlienc-1.2.0-hfd05255_1",
+ "libbrotlicommon-1.2.0-hfd05255_1",
+ "libbrotlidec-1.2.0-hfd05255_1",
+ "pango-1.56.4-h13911b6_1",
+ "fribidi-1.0.16-hfd05255_0",
+ "libogg-1.3.5-h2466b09_1",
+ "ca-certificates-2026.5.20-h4c7d964_0",
+ "sdl3-3.4.8-h5112557_0",
+ "libusb-1.0.29-h1839187_0",
+ "glslang-16.3.0-h294ba9c_0",
+ "font-ttf-ubuntu-0.83-h77eed37_3",
+ "font-ttf-inconsolata-3.000-h77eed37_0",
+ "font-ttf-source-code-pro-2.038-h77eed37_0",
+ "pixman-0.46.4-h5112557_1",
+ "libffi-3.5.2-h3d046cb_0",
+ "libjpeg-turbo-3.1.4.1-hfd05255_0",
+ "libtiff-4.7.1-h8f73337_1",
+ "libdeflate-1.25-h51727cc_0",
+ "lerc-4.1.0-hd936e49_0",
+ "zstd-1.5.7-h534d264_6",
+]
+
+[[tools.jq]]
+version = "1.8.1"
+backend = "aqua:jqlang/jq"
+
+[tools.jq."platforms.linux-arm64"]
+checksum = "sha256:6bc62f25981328edd3cfcfe6fe51b073f2d7e7710d7ef7fcdac28d4e384fc3d4"
+url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-arm64"
+provenance = "github-attestations"
+
+[tools.jq."platforms.linux-arm64-musl"]
+checksum = "sha256:6bc62f25981328edd3cfcfe6fe51b073f2d7e7710d7ef7fcdac28d4e384fc3d4"
+url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-arm64"
+provenance = "github-attestations"
+
+[tools.jq."platforms.linux-x64"]
+checksum = "sha256:020468de7539ce70ef1bceaf7cde2e8c4f2ca6c3afb84642aabc5c97d9fc2a0d"
+url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-amd64"
+provenance = "github-attestations"
+
+[tools.jq."platforms.linux-x64-musl"]
+checksum = "sha256:020468de7539ce70ef1bceaf7cde2e8c4f2ca6c3afb84642aabc5c97d9fc2a0d"
+url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-linux-amd64"
+provenance = "github-attestations"
+
+[tools.jq."platforms.macos-arm64"]
+checksum = "sha256:a9fe3ea2f86dfc72f6728417521ec9067b343277152b114f4e98d8cb0e263603"
+url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-macos-arm64"
+provenance = "github-attestations"
+
+[tools.jq."platforms.macos-x64"]
+checksum = "sha256:e80dbe0d2a2597e3c11c404f03337b981d74b4a8504b70586c354b7697a7c27f"
+url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-macos-amd64"
+provenance = "github-attestations"
+
+[tools.jq."platforms.windows-x64"]
+checksum = "sha256:23cb60a1354eed6bcc8d9b9735e8c7b388cd1fdcb75726b93bc299ef22dd9334"
+url = "https://github.com/jqlang/jq/releases/download/jq-1.8.1/jq-windows-amd64.exe"
+provenance = "github-attestations"
+
[[tools.node]]
version = "26.2.0"
backend = "core:node"
@@ -190,6 +1426,38 @@ checksum = "sha256:4d26ade49e9571ccb3bd1a88cfc72c52b11a9a9f6e204a57f38592aed1375
url = "https://github.com/astral-sh/python-build-standalone/releases/download/20260510/cpython-3.14.5+20260510-x86_64-pc-windows-msvc-install_only_stripped.tar.gz"
provenance = "github-attestations"
+[[tools.vhs]]
+version = "0.11.0"
+backend = "aqua:charmbracelet/vhs"
+
+[tools.vhs."platforms.linux-arm64"]
+checksum = "sha256:af782cddbf844a377df6ea41c0e72339393fa021be3f6cb70a2f47d48675d92b"
+url = "https://github.com/charmbracelet/vhs/releases/download/v0.11.0/vhs_0.11.0_Linux_arm64.tar.gz"
+
+[tools.vhs."platforms.linux-arm64-musl"]
+checksum = "sha256:af782cddbf844a377df6ea41c0e72339393fa021be3f6cb70a2f47d48675d92b"
+url = "https://github.com/charmbracelet/vhs/releases/download/v0.11.0/vhs_0.11.0_Linux_arm64.tar.gz"
+
+[tools.vhs."platforms.linux-x64"]
+checksum = "sha256:99cb634587eaae0473c1ea377db80c3a048c27f99fe0a7febb1a1e8cb7ee5009"
+url = "https://github.com/charmbracelet/vhs/releases/download/v0.11.0/vhs_0.11.0_Linux_x86_64.tar.gz"
+
+[tools.vhs."platforms.linux-x64-musl"]
+checksum = "sha256:99cb634587eaae0473c1ea377db80c3a048c27f99fe0a7febb1a1e8cb7ee5009"
+url = "https://github.com/charmbracelet/vhs/releases/download/v0.11.0/vhs_0.11.0_Linux_x86_64.tar.gz"
+
+[tools.vhs."platforms.macos-arm64"]
+checksum = "sha256:eec91ee450ba50b6d4fce2800593b2ac5fdd88a73056367d2c3b870ee44de3f7"
+url = "https://github.com/charmbracelet/vhs/releases/download/v0.11.0/vhs_0.11.0_Darwin_arm64.tar.gz"
+
+[tools.vhs."platforms.macos-x64"]
+checksum = "sha256:dd5c86c1cec1cf9ebd5ac6cf8119efcb731f055bbe7c7010408c741ee7770f64"
+url = "https://github.com/charmbracelet/vhs/releases/download/v0.11.0/vhs_0.11.0_Darwin_x86_64.tar.gz"
+
+[tools.vhs."platforms.windows-x64"]
+checksum = "sha256:e3d87403b25e1e88addec6548bdbfdbee772a5c313c9f6f96c495b8e163f18ba"
+url = "https://github.com/charmbracelet/vhs/releases/download/v0.11.0/vhs_0.11.0_Windows_x86_64.zip"
+
[[tools.zizmor]]
version = "1.25.2"
backend = "aqua:zizmorcore/zizmor"
diff --git a/mise.toml b/mise.toml
index 011282a..d7c1b37 100644
--- a/mise.toml
+++ b/mise.toml
@@ -1,12 +1,12 @@
[tools]
actionlint = "1.7.12"
+aube = "1.10.4"
communique = "1.1.3"
-zizmor = "1.25.2"
-
-# CI installs [tools] with `mise install --locked`; update mise.lock whenever tool versions or supported CI platforms change.
+jq = "1.8.1"
node = "26"
python = "3"
-aube = "1.10.4"
+vhs = "0.11.0"
+zizmor = "1.25.2"
[tasks.bootstrap]
description = "Install deps and Chromium for local development"