v8-utils
CLI and MCP tools for V8 JavaScript engine developers.
Requirements
- Python 3.12+
- uv
- luci-auth on
$PATH(for Pinpoint job creation) gcloud auth application-default login(optional, for CAS data access)
Installation
# Everything -- all CLIs and all MCP tool groups:
uv tool install v8-utils --index-url https://pypi.org/simple/
# Or install directly from GitHub:
uv tool install "v8-utils @ git+https://github.com/schuay/v8-utils.git"
# Upgrade:
uv tool upgrade v8-utils
All CLIs (pp, vt, jsb, pd, lv, v8-mcp) support --version.
See RELEASING.md for release preparation and publishing.
There are no extras to remember: a forgotten one breaks a console script
outright (the CLIs import their dependencies at module scope) and silently drops
MCP tool groups, so the v8-utils distribution installs the full stack.
Subsetting the install
Deployments that want only part of the surface install the companion
v8-utils-core distribution from packaging/core/ instead. Same code, same
entry points, but the scientific/cloud stack sits behind extras that the MCP
server loads lazily; groups whose extra is missing are skipped at startup with a
warning naming the extra:
# MCP server core plus the git-backed tool groups only:
uv pip install "git+https://github.com/schuay/v8-utils.git#subdirectory=packaging/core"
# ... plus a subset:
uv pip install "v8-utils-core[analysis] @ git+https://github.com/schuay/v8-utils.git#subdirectory=packaging/core"
| Extra | Enables |
|---|---|
| (none) | repo_git_*, worktree and gerrit_* MCP groups |
analysis |
the pd and performance MCP groups, the pd / jsb CLIs (numpy/pandas/scipy/ruptures) |
pinpoint |
the pinpoint MCP group and the pp CLI |
gchat |
the Google Chat frontend (pp daemon) |
spanner |
the Spanner-backed perf timeseries adaptor |
all |
everything -- equivalent to the v8-utils distribution |
Both distributions install the same v8_utils module, so they are alternatives
rather than layers: an environment gets one or the other.
Update prompts
Interactive pp and vt commands check GitHub's main/VERSION at most once
per day. A larger integer than the installed stamp prompts Update from GitHub? [y/N].
Accepting runs:
uv tool install "v8-utils @ git+https://github.com/schuay/v8-utils.git" --reinstall --index-url https://pypi.org/simple/
After installation, rerun your command. Declining continues the command and
suppresses checks for a day. Check failures silently continue; installation
failures exit with an error and are not retried for the same stamp. Retry
explicitly with pp upgrade.
Set auto_update = false at the top level of ~/.config/v8-utils/config.toml
(or the file selected by V8_UTILS_CONFIG) to disable checks. For a one-off
skip, use V8_UTILS_NO_AUTO_UPDATE=1 pp ... (also works for vt). Manual
pp upgrade remains available regardless of these settings.
Checks apply to the full distribution installed by uv tool from PyPI or the
upstream Git repository's default branch or main. Accepting a prompt on a PyPI
install switches it to GitHub. Local/editable installs, pinned Git revisions,
forks, and v8-utils-core are skipped. Noninteractive commands,
--help, and vt create --json do not check. MCP integration is deferred.
To promote an update, increase the repository's root VERSION integer in the
same commit as the change. The wheel bundles this file; the package metadata
version is also 1984 for the initial PyPI release. Installation fetches the latest default branch,
including changes since the stamp was bumped. Existing installs need one
manual upgrade to acquire the checker. To roll back to a known commit:
V8_UTILS_NO_AUTO_UPDATE=1 uv tool install "v8-utils @ git+https://github.com/schuay/v8-utils.git@<commit-sha>" --reinstall --index-url https://pypi.org/simple/
Configuration
Create ~/.config/v8-utils/config.toml:
user = "you@chromium.org"
Run pp config to see all available options.
CLI tools
pp— Pinpoint job management: create, list, inspect, compare results, watch with notifications. Runpp --helpfor usage.jsb— JetStream/Speedometer benchmark runner and result comparison.pd— Performance data analysis: change-point detection and AB comparison.
MCP server
v8-mcp exposes tools for use with AI assistants (Claude, Gemini, etc.):
- Pinpoint — create/list/inspect jobs, compare results
- Perf — hotspot analysis, flamegraphs, annotation, TMA, stat, diff
- Repository — git grep/find/log/show across configured repos
- Gerrit — fetch CLs and comments
- Godbolt — compile C/C++ snippets and inspect assembly, with llvm-mca and optimization remarks
- d8 — run scripts, trace index for navigating verbose V8 trace output
Add to your MCP client config (e.g. ~/.gemini/settings.json):
{
"mcpServers": {
"v8-utils": {
"command": "v8-mcp"
}
}
}
Metadata
Release files for v8-utils 1984
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| v8_utils-1984.tar.gz | 331.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| v8_utils-1984-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 550.7 kB
Release files / v8_utils-1984.tar.gz
| Download URL | v8_utils-1984.tar.gz |
|---|---|
| Size | 331.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0cad9e1a10f92374ad1e190fe03dd9b00c4ce1e62b47d4464fb26d2f0710483c
|
|
BLAKE2b-256 checksum How to use checksums |
48c0c519d9379806756807ed0d023a04e11dde2368e099b590ba1252f8bb94b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / v8_utils-1984-py3-none-any.whl
| Download URL | v8_utils-1984-py3-none-any.whl |
|---|---|
| Size | 219.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
65ff8895819a04d1ce850e79ca6621266aee30f49a4823a48328049de1f19b7e
|
|
BLAKE2b-256 checksum How to use checksums |
a509fcad60115861a38dc7b9578fdda67c411d28fb3655759ed60a916cd6f104
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|