Agent skill

Dynamo Frontend Benchmark

by ai-dynamo in ai-dynamo/dynamo

Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker).

Apache-2.0Auto-check: notesFrontend & Design

Install Dynamo Frontend Benchmark

skills CLI
$ npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ai-dynamo/dynamo dynamo-frontend-benchmark --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/dynamo-frontend-benchmark .claude/skills/dynamo-frontend-benchmark && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dynamo-frontend-benchmark
GitHub stars
8.2k
Token cost
~3.5k tokens
SKILL.md length
1,536 words
Files
12 (incl. scripts)
Skills in repo
27
Repo updated
First seen
Licence
Apache-2.0

At a glance

Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker).

  • Works in 6 steps: Request plane — Dynamo needs etcd… → Build the bindings into a venv: `uv venv… → aiperf: pip install aiperf (the… → …
  • Measuring frontend throughput/latency
  • SKILL.md covers TL;DR workflow, What this measures (and what…, Setup (one-time) and Topology & config (env.sh), plus 5 more sections
  • Runs Shell and Python scripts from its folder; calls bash, python3 and pip; reaches github.com

What it does

Dynamo Frontend Benchmark is an agent skill from ai-dynamo/dynamo. Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker). Use when measuring frontend throughput/latency, A/B-testing a frontend change, or on-CPU/off-CPU profiling the frontend or mock workers to find bottlenecks. Covers topology setup, CPU isolation, aiperf load generation, perf/BPF profiling, throughput analysis, and the sharp edges of this setup.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts (for example `scripts/analyze_folded.py`, `scripts/capture_offcpu.sh` and `scripts/env.sh`).

It sits in Frontend & Design, covering A/B testing. The repository describes itself as: A Datacenter Scale Distributed Inference Serving Framework. The licence is Apache-2.0.

When your agent uses it

  • Measuring frontend throughput/latency
  • A/B-testing a frontend change
  • On-CPU/off-CPU profiling the frontend
  • Mock workers to find bottlenecks

Example prompts

  • “/dynamo-frontend-benchmark”

Requirements

  • Python 3
  • A Bash shell

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Request plane — Dynamo needs etcd (:2379) + NATS with JetStream (:4222)
  2. Build the bindings into a venv: `uv venv && source .venv/bin/activate &&
  3. aiperf: pip install aiperf (the GenAI-perf successor) in some venv; set AIPERF.
  4. FlameGraph: git clone https://github.com/brendangregg/FlameGraph and set
  5. jemalloc (optional, for the frontend): get a libjemalloc.so and pass it
  6. perf access for on-CPU profiling: `sudo sysctl kernel.perf_event_paranoid=-1

What it can do on your machine

Read from SKILL.md and the folder at commit 1668037. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 11 files in scripts/ (Shell and Python), which the agent can run.

    Shell commands in SKILL.md call:

    • bash
    • python3
    • pip
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dynamo Frontend Benchmark loads about 3.5k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 1,536 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~112
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:28
    sudo bash scripts/isolate.sh             # optional but recommended: CPU isolation
  • NoteRuns commands with sudoSKILL.md:67
    . **perf access** for on-CPU profiling: `sudo sysctl kernel.perf_event_paranoid=-1
  • NoteRuns commands with sudoSKILL.md:120
    sudo DYN_REPO=$DYN_REPO bash scripts/capture_offcpu.sh --frontend --conc 2048
  • NoteRuns commands with sudoSKILL.md:173
    a non-root `pkill` can't reap it — use `sudo pkill -9 -f aiperf`.
  • NoteRuns commands with sudoSKILL.md:203
    cpusets on system.slice). Re-run `sudo bash scripts/isolate.sh` after every

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from ai-dynamo/dynamo at commit 1668037, republished under its Apache-2.0 licence (© ai-dynamo). 1,536 words, ~3,479 tokens.

Download SKILL.mdSave it as .claude/skills/dynamo-frontend-benchmark/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.
name
dynamo-frontend-benchmark
description
Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker). Use when measuring frontend throughput/latency, A/B-testing a frontend change, or on-CPU/off-CPU profiling the frontend or mock workers to find bottlenecks. Covers topology setup, CPU isolation, aiperf load generation, perf/BPF profiling, throughput analysis, and the sharp edges of this setup.
license
Apache-2.0
metadata.author
NVIDIA
metadata.tags
dynamo, performance, benchmarking, profiling, frontend, kv-router

Dynamo frontend benchmarking

End-to-end harness for measuring and profiling the Dynamo frontend under load from a configurable client, served by mock workers so the backend isn't the variable under test. Bundled scripts are in scripts/; they all source env.sh, which requires DYN_REPO to point at your Dynamo checkout.

TL;DR workflow

bash
export DYN_REPO=/path/to/dynamo          # checkout with built .venv
# 0. one-time: request plane up, venv built, FlameGraph cloned (see Setup)
sudo bash scripts/isolate.sh             # optional but recommended: CPU isolation
BLOCK_SIZE=512 FRONTEND_LD_PRELOAD=$DYN_REPO/bench/jemalloc/libjemalloc.so \
  bash scripts/start.sh                  # frontend (pinned) + N mockers
WARMUP_REQUESTS=512 bash scripts/run_aiperf.sh   # one measured run
python3 scripts/extract_throughput.py $DYN_REPO/bench/results/aiperf-*  # robust numbers
bash scripts/stop.sh                     # teardown + etcd drain

For an A/B: teardown + restart between every run, interleave arms, take the median of 3+. For profiling: profile_oncpu.sh (non-root) and capture_offcpu.sh (sudo).

What this measures (and what it doesn't)

  • Frontend: HTTP (axum/hyper), tokenization (fastokens or HF), KV-router block hashing + radix-tree scheduling, request dispatch, SSE response relay.
  • Mock workers (dynamo.mocker): simulate generation with --speedup-ratio (e.g. 1e6 = ~instant) and KV-cache block bookkeeping. Not a real vLLM worker — no GPU compute. Use them to remove backend variance, not to model production backends.
  • Closed-loop client (aiperf): fixed --concurrency, so throughput ≈ concurrency / request_latency (Little's law). This is the single most important fact for interpreting results (see Pitfalls).

Setup (one-time)

  1. Request plane — Dynamo needs etcd (:2379) + NATS with JetStream (:4222):
    • etcd is often a systemd service (survives reboot). Check: etcdctl endpoint health.
    • NATS is usually a user binary that does NOT auto-start on reboot. Start: nohup nats-server -js > /tmp/nats.log 2>&1 & then confirm ss -ltn | grep 4222.
  2. Build the bindings into a venv: uv venv && source .venv/bin/activate && (cd lib/bindings/python && maturin develop --uv --release). Rust changes require rebuilding this; never run a build concurrently with a benchmark — it steals cores and contaminates results.
  3. aiperf: pip install aiperf (the GenAI-perf successor) in some venv; set AIPERF.
  4. FlameGraph: git clone https://github.com/brendangregg/FlameGraph and set FLAMEGRAPH_DIR.
  5. jemalloc (optional, for the frontend): get a libjemalloc.so and pass it via FRONTEND_LD_PRELOAD to start.sh. Big alloc-churn reductions vs glibc.
  6. perf access for on-CPU profiling: sudo sysctl kernel.perf_event_paranoid=-1 kernel.kptr_restrict=0. Off-CPU (sched tracepoints / BPF) still needs root even with paranoid=-1 (tracefs event files are root-only).

Topology & config (env.sh)

  • FRONTEND_CORES (e.g. 0-3), OTHER_CORES (e.g. 4-23): frontend is pinned with taskset; mockers + client share OTHER_CORES. Keep FRONTEND_CORES small so frontend CPU effects are observable, but give OTHER_CORES enough headroom that the client doesn't starve the mockers (see Pitfalls).
  • BLOCK_SIZE: frontend --kv-cache-block-size and mocker --block-size MUST match. Affects both sides — see "Block size" below.
  • DYN_TOKENIZER = fastokens (PCRE2+rayon, fast) or default (HF tokenizers).
  • DYN_TOKENIZER_CACHE / _BYTES: L1 prefix cache (helps with shared system prompts).

Running a throughput benchmark — methodology

The harness encodes hard-won protocol. Follow it or results drift:

  1. Full teardown + fresh restart between every run (stop.sh then start.sh). The KV router and tokenizer cache accumulate state across runs; reusing an instance inflates later runs.
  2. Drain etcd to 0 workers between runs (stop.sh does this; verify with count_workers). Dead frontends/mockers leave lease-backed keys that expire, but verify the slate is clean before starting.
  3. Warmup (WARMUP_REQUESTS=512) to prime the prefix cache + warm the allocator before the measured phase. The first run after a fresh build is still a cold-start outlier — discard it.
  4. jemalloc on the frontend via FRONTEND_LD_PRELOAD for stable allocator behavior.
  5. A/B: same binary serves both arms when the difference is a runtime flag; otherwise rebuild between arms (never during a run). Interleave arms (A,B,A,B,…) to cancel drift, run 3+ each, compare medians (means get dragged by the cold first run).

run_aiperf.sh knobs (env overrides): CONCURRENCY, REQUEST_COUNT, WARMUP_REQUESTS. Default workload: shared-system-prompt 48000 + user-context 12000 (≈60k-token prompts), output-tokens-mean 500, conversation-turn-mean 4.

Profiling

On-CPU (where compute goes) — non-root
bash
bash scripts/profile_oncpu.sh --frontend --conc 2048   # or --mocker, or --pid N --cores 0-3
python3 scripts/analyze_folded.py <out>/oncpu.folded
  • Uses perf record -F 99 --call-graph dwarf. DWARF is required: release .sos have no frame pointers, so -g (FP unwinding) truncates Rust stacks.
  • Also samples the target's cores (mpstat) and process CPU (pidstat) so you can see if it saturates. analyze_folded.py prints top self-time leaves.
Off-CPU (what blocked threads wait on) — REQUIRES sudo
bash
sudo DYN_REPO=$DYN_REPO bash scripts/capture_offcpu.sh --frontend --conc 2048
python3 scripts/analyze_folded.py <out>/offcpu_bcc.folded --offcpu
  • Captures two ways: offcputime-bpfcc -df (duration-weighted, user+kernel, folded) and perf -e sched:sched_switch --call-graph dwarf (backup, reliable Rust user frames). bcc's folded format uses a literal - frame to separate user (root→leaf) from kernel stacks; the innermost user frame before - is what called into the blocking syscall — analyze_folded.py --offcpu aggregates by it.
  • Interpreting categories: futex/park = tokio workers idle (no runnable task) OR mutex; epoll = waiting on network/backend; __lll_lock_wait = glibc malloc-arena contention; rayon = fastokens pool idle/spin. Lock contention in app code shows as parking_lot/Mutex/RwLock frames — if those are ~0%, the process is idle-waiting, not internally serialized.

Analysis cheatsheet

  • Throughput: extract_throughput.py <artifact_dir> — recompute from raw JSONL (do NOT trust the finalizer; see Pitfalls). Closed-loop sanity check: throughput ≈ concurrency / mean_latency.
  • Cores busy (avg): from mpstat per-core %idle → busy = 100 - idle; or cpu_ms_per_req × req_per_s / 1000. Per-request CPU = Δ(utime+stime from /proc/<pid>/stat)/CLK_TCK ÷ requests.
  • Latency decomposition: request_latency ≈ TTFT + (output_tokens × ITL). If TTFT dominates and explodes under load → queueing upstream of generation.
Show full SKILL.md (776 more words)Show less

Pitfalls & gotchas (read this)

Benchmark methodology

  • Closed-loop, not open-loop. Fixed concurrency means you measure concurrency / latency, NOT the server's max throughput. Idle frontend cores usually mean the system is latency-bound (each request spends most of its life waiting between streamed tokens), not that the frontend is slow. To push the frontend toward saturation: raise concurrency AND lower per-request latency (smaller block size → more frontend KV work; shorter outputs).
  • Congestion collapse at high concurrency. Pushing concurrency too high can lower throughput (latency explodes faster than concurrency rises). Sweep concurrency to find the knee; don't assume "more load = more throughput".
  • Client/server core contention. aiperf is CPU-heavy (client-side tokenizes every prompt, manages every stream across ~25 procs). Co-located with the mockers on OTHER_CORES, it can saturate those cores and starve the mockers — making a "collapse" that's really the load generator running out of CPU. Always check the CPU split (pidstat mocker vs mpstat on OTHER_CORES); if cores are pegged but the mocker is low, the client is the bottleneck.
  • Cold-start first run is systematically slow even with warmup — discard it.
  • Don't build while benchmarking. Compiles steal cores and ruin the run.

aiperf

  • The finalizer hangs/deadlocks on large runs ("processing records…"). The per-request profile_export.jsonl is written incrementally — kill the finalizer and use extract_throughput.py. Don't wait for profile_export_aiperf.json.
  • Orphan processes. aiperf's controller spawns many workers; killing the parent can orphan them. Worse: if you ran a capture with sudo, aiperf ran as root and a non-root pkill can't reap it — use sudo pkill -9 -f aiperf. Stray aiperf workers hold ZMQ/mmap resources and make the next run stall.
  • --benchmark-duration N (time-based) avoids the giant fixed --request-count
    • finalizer problem for profiling loads.

Profiling

  • Off-CPU needs root. Tracepoints (sched:sched_switch) and BPF (offcputime) require root even at perf_event_paranoid=-1 (tracefs event files are root-readable only). On-CPU perf -F.. -g works non-root at paranoid≤1.
  • Native perf --off-cpu is often NOT compiled in (needs BUILD_BPF_SKEL=1); it silently no-ops with a warning. Use offcputime-bpfcc / bpftrace instead.
  • No frame pointers in release builds → BPF user-stack walking truncates. Prefer perf --call-graph dwarf; bcc still gives good kernel stacks + partial user frames. analyze_folded.py handles the bcc - separator.
  • Async-runtime off-CPU is dominated by worker park (futex) which is benign idle, not contention. Look for app-level lock frames (parking_lot/Mutex) to find real serialization. A blocked async task ≠ a blocked thread.

Topology / environment

  • Block size must match frontend and mocker. And very large block sizes break the current mocker: at BLOCK_SIZE=2048 requests are received but the mocker never emits a token (40s hang → client cancel, output_tokens=0, "Failed to publish response"). 512 and 1024 work; 64 is realistic. Smoke-test a single request after any block-size change.
  • Block size is a lever, not just a detail. Smaller blocks → more blocks per prompt → more frontend KV-routing work (radix tree, hashing) AND more mocker block bookkeeping. At bs=64 a 60k-token prompt is ~940 blocks and the mocker's KV bookkeeping can dominate (~48% of its CPU); at bs=512 (~117 blocks) it drops to ~3%. Pick the block size deliberately for what you're stressing.
  • CPU isolation doesn't survive reboot (isolate.sh sets runtime cgroup cpusets on system.slice). Re-run sudo bash scripts/isolate.sh after every reboot. unisolate.sh reverts. Check: cat /sys/fs/cgroup/system.slice/cpuset.cpus.effective.
  • NATS doesn't auto-start after reboot (user binary); etcd usually does (systemd). After a reboot, restart NATS before start.sh.
  • jemalloc is frontend-only here (via FRONTEND_LD_PRELOAD); the mocker runs on glibc, so its alloc churn can show glibc-arena lock contention (__lll_lock_wait under __libc_free/Vec::finish_grow) in off-CPU. Preload jemalloc on the mocker too if that matters.
  • DYN_RUNTIME_NUM_WORKER_THREADS and DYN_RUNTIME_MAX_BLOCKING_THREADS are applied to every runtime the bindings build, including the one the pyo3 async bridge builds for itself. Thread counts are still worth checking in /proc/<pid>/task: if the bridge builds its runtime before a DistributedRuntime is created, the process ends up with two runtimes and twice the threads the configuration describes (a warning says so).

Known result (calibration): with mock workers, the Dynamo frontend is rarely the bottleneck — it's latency/IO-bound, sitting ~60–85% of its pinned cores with ~0 internal lock contention. Frontend micro-opts therefore show flat e2e throughput on this setup; their value is CPU-efficiency/headroom. To make the frontend the bottleneck, use small block size + high concurrency, or real backends, or move the client off-box.

Script reference (scripts/)

  • env.sh — config; set DYN_REPO; everything else overridable.
  • start.sh — launch frontend (pinned, optional FRONTEND_LD_PRELOAD/FASTOKENS_*)
    • NUM_WORKERS mockers; port preflight, etcd worker-count verify.
  • stop.sh — teardown both + drain etcd to 0.
  • run_aiperf.sh — one measured run (CONCURRENCY/REQUEST_COUNT/WARMUP_REQUESTS).
  • isolate.sh / unisolate.sh — CPU isolation (sudo; Lite by default, --full for max).
  • smoke.sh — single-request sanity check (use after any topology/block-size change).
  • profile_oncpu.sh — on-CPU perf + flamegraph (non-root): --frontend/--mocker/--pid.
  • capture_offcpu.sh — off-CPU bcc + perf (sudo): --frontend/--mocker/--pid.
  • analyze_folded.py — top self-time (on-CPU) or innermost-frame + category (off-CPU).
  • extract_throughput.py — robust throughput/latency from raw aiperf JSONL.

© ai-dynamo, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 11 other files (scripts) in .agents/skills/dynamo-frontend-benchmark of ai-dynamo/dynamo.

  • SKILL.md
  • scripts/analyze_folded.py
  • scripts/capture_offcpu.sh
  • scripts/env.sh
  • scripts/extract_throughput.py
  • scripts/isolate.sh
  • scripts/profile_oncpu.sh
  • scripts/run_aiperf.sh
  • scripts/smoke.sh
  • scripts/start.sh
  • scripts/stop.sh
  • scripts/unisolate.sh

Open the folder on GitHubat commit 1668037

Compare with similar skills

Dynamo Frontend Benchmark next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dynamo Frontend Benchmark compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dynamo Frontend Benchmark this skillai-dynamo/dynamo8.2k—~3.5kAutomated safety check: NotesApache-2.0
Product Appeal Analyzercuriositech/some_claude_skills2431 repos~2.4kAutomated safety check: PassMIT
Landing CraftEliasOulkadi/shokunin114—~4.5kAutomated safety check: PassMIT
Finding ExperimentsPostHog/posthog40k—~783Automated safety check: PassCustom licence
Htmldropooiyeefei/ccc494—~5.2kAutomated safety check: WarnMIT
Ecommerce Landing Pagenexscope-ai/eCommerce-Skills1.1k—~617Automated safety check: PassMIT

Similar skills

  • Product Appeal Analyzer

    curiositech/some_claude_skills

    Evaluate product desirability, market positioning, and emotional resonance—the complement to friction analysis.

    243 GitHub starsUsed in 1 repo~2.4k tokens
    Frontend & DesignAuto-check passed
  • Landing Craft

    EliasOulkadi/shokunin

    Build conversion-optimized landing pages with CRO frameworks (Conversion Research, LIFT Model), scroll effects, A/B testing, personalization, form optimization, and Core Web Vitals (INP, LCP, CLS).

    114 GitHub stars~4.5k tokensUpdated 3 days ago
    Frontend & DesignAuto-check passed
  • Finding Experiments

    PostHog/posthog

    Official

    Resolves a PostHog experiment reference from natural language to a concrete experiment ID by browsing experiment-list (not feature-flag tools), with disambiguation when multiple experiments match.

    40k GitHub stars~783 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Htmldrop

    ooiyeefei/ccc

    Reach for this skill when an HTML artifact — report, deck, brief, mockup, dashboard, proposal, spec, or landing page, whether the user already has it or you just generated it — needs to reach other…

    494 GitHub stars~5.2k tokensUpdated 2 mo ago
    Frontend & DesignAuto-check: warnings
  • Ecommerce Landing Page

    nexscope-ai/eCommerce-Skills

    Audit and optimize e-commerce landing pages for conversion. An agent skill from nexscope-ai/eCommerce-Skills.

    1.1k GitHub stars~617 tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Shopify Landing Page Builder

    nexscope-ai/eCommerce-Skills

    High-converting landing pages — campaign pages, collection pages, seasonal promos, A/B testing

    1.1k GitHub stars~476 tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed

More from ai-dynamo/dynamo

All 27 skills in this repo
  • Visual Review

    ai-dynamo/dynamo

    Create self-contained interactive HTML code-review dashboards from GitHub or GitLab pull requests, checked-out branch diffs, or supplied unified diffs, with correctness and safe-to-merge scores…

    8.2k GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Fern Components

    ai-dynamo/dynamo

    Knowledge of Fern's built-in MDX component library (accordions, callouts, cards, steps, tabs, code blocks, API-reference snippets, and more) for authoring docs pages.

    8.2k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Fern Navigation

    ai-dynamo/dynamo

    Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in docs.yml (and product/version .yml files) using sections, pages, folders, tabs, tab variants…

    8.2k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Dynamo Agent Harness

    ai-dynamo/dynamo

    Drives persistent Claude Code, Codex, or OpenCode agent sessions through a Dynamo OpenAI/Anthropic-compatible endpoint over Agent Client Protocol (ACP).

    8.2k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Selects and freezes a question-driven AIPerf workload, objective, load policy, and Kubernetes execution manifest for a successfully deployed Dynamo candidate.

    8.2k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Debug Session

    ai-dynamo/dynamo

    Sets up a structured debugging session for a Dynamo bug — pull the report from a Linear ticket, GitHub issue, or pasted text, capture the environment, create a persistent worklog markdown file, and…

    8.2k GitHub stars~1.2k tokensUpdated today
    Auto-check passed

Questions about Dynamo Frontend Benchmark

What does Dynamo Frontend Benchmark do?

Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker). Dynamo Frontend Benchmark is an agent skill from ai-dynamo/dynamo.mocker).

When should I use Dynamo Frontend Benchmark?

Dynamo Frontend Benchmark fits situations like: measuring frontend throughput/latency; A/B-testing a frontend change; on-CPU/off-CPU profiling the frontend; mock workers to find bottlenecks.

How do I install Dynamo Frontend Benchmark in Claude Code?

Run `npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a claude-code`. Or copy the skill folder (.agents/skills/dynamo-frontend-benchmark in ai-dynamo/dynamo) into .claude/skills/dynamo-frontend-benchmark in your project. Claude Code loads it when a task matches its description.

How do I install Dynamo Frontend Benchmark in Codex?

Run `npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a codex`. Or copy the skill folder (.agents/skills/dynamo-frontend-benchmark in ai-dynamo/dynamo) into .agents/skills/dynamo-frontend-benchmark in your project. Codex loads it when a task matches its description.

Can I use Dynamo Frontend Benchmark in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ai-dynamo/dynamo --skill dynamo-frontend-benchmark -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dynamo-frontend-benchmark, .gemini/skills/dynamo-frontend-benchmark, .github/skills/dynamo-frontend-benchmark and .opencode/skills/dynamo-frontend-benchmark in your project.

What does Dynamo Frontend Benchmark need to run?

Going by SKILL.md and its folder, Dynamo Frontend Benchmark needs a shell and Python for the scripts in its folder and the command-line tools its instructions call (bash, python3, pip and git). Our summary lists: Python 3; A Bash shell.

Does Dynamo Frontend Benchmark access the network?

SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Dynamo Frontend Benchmark safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Dynamo Frontend Benchmark use?

Dynamo Frontend Benchmark is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dynamo Frontend Benchmark use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dynamo Frontend Benchmark?

Skills that share tags, products or a category with Dynamo Frontend Benchmark: Product Appeal Analyzer (curiositech/some_claude_skills, 243 stars), Landing Craft (EliasOulkadi/shokunin, 114 stars), Finding Experiments (PostHog/posthog, 40k stars) and Htmldrop (ooiyeefei/ccc, 494 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dynamo Frontend Benchmark?

ai-dynamo (a GitHub organization) maintains it in ai-dynamo/dynamo, which has 8,245 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 8, 2026.

Source: ai-dynamo/dynamo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.