hzdb

August 21, 2026 · View on GitHub

Horizon Debug Bridge - CLI for Meta Quest device development

Usage:

hzdb [OPTIONS] [COMMAND]

Options:

OptionDescription
-d, --device <DEVICE>Target device ID (also reads HZDB_DEVICE env var)
--format <FORMAT>Output format (table, json, plain) (default: table)
--jsonOutput in JSON format (shorthand for --format json)
--markdown-helpPrint help in markdown format
-v, --verboseIncrease logging verbosity
-q, --quietDecrease logging verbosity

Subcommands:

CommandDescription
initSet up hzdb — install AI agent skills and configure MCP servers
adbLow-level ADB-compatible commands (devices, shell, logcat, etc.)
appManage applications on the device (install, uninstall, launch, etc.)
assetSearch Meta's 3D asset library for models
audioDevice audio volume and mute control
captureCapture screenshots and screen recordings from the device
configManage hzdb configuration settings
deviceManage connected Meta Quest devices (list, info, connect, battery, etc.)
docsSearch and fetch Meta Quest developer documentation
filesManage files on the device (ls, push, pull, rm, mkdir)
logView device logs (shortcut for adb logcat)
mcpMCP server for AI assistant integration
perfPerformance analysis and Perfetto trace tools
shellRun a shell command on the device (shortcut for adb shell)

init

Set up hzdb — install AI agent skills and configure MCP servers

Usage:

init [OPTIONS]

Options:

OptionDescription
-y, --no-promptSkip interactive prompts (install to all detected agents)
--claude-codeInstall skill for Claude Code
--cursorInstall skill for Cursor
--geminiInstall skill for Gemini CLI
--copilotInstall skill for GitHub Copilot
--codexInstall skill for OpenAI Codex
--opencodeInstall skill for OpenCode
--guidedRun in guided interactive mode (legacy flag, now the default)

adb

Low-level ADB-compatible commands (devices, shell, logcat, etc.)

Usage:

adb <COMMAND>

Subcommands:

CommandDescription
devicesList connected devices
connectConnect to a device over WiFi
disconnectDisconnect from a device
shellRun a shell command on the device
pullPull a file from the device
pushPush a file to the device
installInstall an APK on the device
uninstallUninstall a package from the device
rebootReboot the device
logcatView device logs (logcat)
forwardForward port connections (host -> device)
reverseReverse port connections (device -> host)
rootRestart adbd with root permissions
getpropGet a device property
setpropSet a device property
tcpipSwitch device to TCP/IP mode on the given port
usbSwitch device back to USB mode
versionPrint version information

devices

List connected devices

Usage:

devices [OPTIONS]

Options:

OptionDescription
-l, --longShow extended device info (model, device, transport_id)

connect

Connect to a device over WiFi

Usage:

connect <ADDRESS>

Arguments:

ArgumentDescription
<address> (required)Device address (ip:port)

disconnect

Disconnect from a device

Usage:

disconnect [ADDRESS]

Arguments:

ArgumentDescription
<address>Device address to disconnect (disconnects all if omitted)

shell

Run a shell command on the device

Usage:

shell [COMMANDS]...

Arguments:

ArgumentDescription
<commands>Command and arguments to run (interactive shell if omitted)

pull

Pull a file from the device

Usage:

pull <SOURCE> [DESTINATION]

Arguments:

ArgumentDescription
<source> (required)Path on the device
<destination>Local destination path (defaults to current directory)

push

Push a file to the device

Usage:

push <LOCAL> <REMOTE>

Arguments:

ArgumentDescription
<local> (required)Local file path
<remote> (required)Path on the device

install

Install an APK on the device

Usage:

install [OPTIONS] <PATH>

Arguments:

ArgumentDescription
<path> (required)Path to the APK file

Options:

OptionDescription
-r, --replaceReplace existing application (keep data)
-g, --grant-permissionsGrant all runtime permissions on install
--downgradeAllow version downgrade (no short form — -d is reserved for the top-level --device selector)

uninstall

Uninstall a package from the device

Usage:

uninstall <PACKAGE>

Arguments:

ArgumentDescription
<package> (required)Package name to uninstall

reboot

Reboot the device

Usage:

reboot [MODE]

Arguments:

ArgumentDescription
<mode>Reboot mode: system (default), bootloader, recovery, sideload, fastboot

logcat

View device logs (logcat)

Usage:

logcat [OPTIONS]

Options:

OptionDescription
-n, --lines <LINES>Number of recent lines to show (use 0 for all available) (default: 100)
-t, --tag <TAG>Filter by tag (simple filter, use 'filter' for complex expressions)
-l, --level <LEVEL>Minimum log level: V (Verbose), D (Debug), I (Info), W (Warning), E (Error), F (Fatal)
-F, --filter <FILTER>Filter expressions in tag:priority format (e.g., "Unity:W ActivityManager:I *:S")
--out-format <OUT_FORMAT>Output format: brief, long, process, raw, tag, thread, threadtime (default), time
-b, --buffer <BUFFER>Log buffer: main, system, crash, radio, events, all, default
--pid <PID>Filter by process ID
-e, --regex <REGEX>Regex pattern to filter log messages
-C, --clearClear the log buffer before reading
-f, --followFollow log output continuously (stream mode)

forward

Forward port connections (host -> device)

Usage:

forward <LOCAL> <REMOTE>

Arguments:

ArgumentDescription
<local> (required)Local port spec (e.g., tcp:8080)
<remote> (required)Remote port spec (e.g., tcp:8080)

reverse

Reverse port connections (device -> host)

Usage:

reverse <REMOTE> <LOCAL>

Arguments:

ArgumentDescription
<remote> (required)Remote port spec (e.g., tcp:8080)
<local> (required)Local port spec (e.g., tcp:8080)

root

Restart adbd with root permissions

Usage:

root

getprop

Get a device property

Usage:

getprop <PROPERTY>

Arguments:

ArgumentDescription
<property> (required)Property name (e.g., ro.product.model)

setprop

Set a device property

Usage:

setprop <PROPERTY> <VALUE>

Arguments:

ArgumentDescription
<property> (required)Property name
<value> (required)Property value

tcpip

Switch device to TCP/IP mode on the given port

Usage:

tcpip [PORT]

Arguments:

ArgumentDescription
<port>Port number (default: 5555)

usb

Switch device back to USB mode

Usage:

usb

version

Print version information

Usage:

version

app

Manage applications on the device (install, uninstall, launch, etc.)

Usage:

app <COMMAND>

Subcommands:

CommandDescription
installInstall an APK to the device
uninstallUninstall an app from the device
listList installed apps
launchLaunch an app
stopForce stop an app
clearClear app data
infoShow app info
pathGet the path to an installed APK
foregroundDetect the current foreground app

install

Install an APK to the device

Usage:

install [OPTIONS] <APK>

Arguments:

ArgumentDescription
<apk> (required)Path to the APK file

Options:

OptionDescription
-t, --allow-testAllow installation of test-only APKs
-g, --grant-permissionsGrant all runtime permissions on install
-r, --replaceReplace existing application (keep data)
--downgradeAllow version downgrade

uninstall

Uninstall an app from the device

Usage:

uninstall [OPTIONS] <PACKAGE>

Arguments:

ArgumentDescription
<package> (required)Package name (e.g., com.oculus.myapp)

Options:

OptionDescription
-k, --keep-dataKeep app data and cache

list

List installed apps

Usage:

list [OPTIONS]

Options:

OptionDescription
-3, --third-partyShow only third-party apps (default) (default: true)
-s, --systemShow system apps
-a, --allShow all apps (system and third-party)
-f, --filter <FILTER>Filter by package name substring

launch

Launch an app

Usage:

launch [OPTIONS] <PACKAGE>

Arguments:

ArgumentDescription
<package> (required)Package name (e.g., com.oculus.myapp)

Options:

OptionDescription
-a, --activity <ACTIVITY>Activity to launch (optional, uses default launcher activity)
--cold-startForce-stop the app before launching, so the launch is from a fresh process (cold start) rather than a warm resume
--wait-for-idleAfter launching, poll until the app appears as the focused window. Returns once the app is on screen and idle, or fails after --wait-timeout seconds. Useful for scripting and tests that need the app to be ready before continuing
--wait-timeout <WAIT_TIMEOUT>Maximum time to wait for the app to become focused, in seconds. Only used with --wait-for-idle. Default: 15 (default: 15)
--measure-launch-timePrint the wall-clock launch time in milliseconds. Measured from the moment the launch intent is sent to either (a) the AppLaunchTool returning, if --wait-for-idle is off, or (b) the app appearing as the focused window, if --wait-for-idle is on
--verifyAfter launching, scan recent logcat for FATAL EXCEPTION, ANR, or native crash signatures attributable to this package. Exits with status 1 if a crash signal is found. Implies a short post-launch settle window of --verify-window seconds before scanning
--verify-window <VERIFY_WINDOW>Settle window (seconds) to wait after launch before scanning logcat for crash signals. Only used with --verify. Default: 3 (default: 3)

stop

Force stop an app

Usage:

stop <PACKAGE>

Arguments:

ArgumentDescription
<package> (required)Package name (e.g., com.oculus.myapp)

clear

Clear app data

Usage:

clear <PACKAGE>

Arguments:

ArgumentDescription
<package> (required)Package name (e.g., com.oculus.myapp)

info

Show app info

Usage:

info <PACKAGE>

Arguments:

ArgumentDescription
<package> (required)Package name (e.g., com.oculus.myapp)

path

Get the path to an installed APK

Usage:

path <PACKAGE>

Arguments:

ArgumentDescription
<package> (required)Package name (e.g., com.oculus.myapp)

foreground

Detect the current foreground app

Usage:

foreground

asset

Search Meta's 3D asset library for models

Usage:

asset <COMMAND>

Subcommands:

CommandDescription
searchSearch for 3D models in Meta's asset library

Search for 3D models in Meta's asset library

Usage:

search [OPTIONS] <QUERY>

Arguments:

ArgumentDescription
<query> (required)Text description of the 3D model to search for (e.g., "red car", "fantasy sword", "office chair")

Options:

OptionDescription
-c, --count <COUNT>Number of models to return (default: 5, max: 10) (default: 5)

audio

Device audio volume and mute control

Usage:

audio <COMMAND>

Subcommands:

CommandDescription
statusGet current volume level
setSet volume level (0-15)
muteMute audio (saves current volume for unmute)
unmuteUnmute audio (restores volume from before mute)

status

Get current volume level

Usage:

status

set

Set volume level (0-15)

Usage:

set <LEVEL>

Arguments:

ArgumentDescription
<level> (required)Volume level to set (0-15)

mute

Mute audio (saves current volume for unmute)

Usage:

mute

unmute

Unmute audio (restores volume from before mute)

Usage:

unmute

capture

Capture screenshots and screen recordings from the device

Usage:

capture <COMMAND>

Subcommands:

CommandDescription
screenshotTake a screenshot from the device

screenshot

Take a screenshot from the device

Usage:

screenshot [OPTIONS]

Options:

OptionDescription
-o, --output <OUTPUT>Output file path (defaults to screenshot_.png)
--width <WIDTH>Screenshot width in pixels (default: 1024)
--height <HEIGHT>Screenshot height in pixels (default: 1024)
--method <METHOD>Capture method: 'metacam' (default) or 'screencap' (default: metacam)

config

Manage hzdb configuration settings

Usage:

config <COMMAND>

Subcommands:

CommandDescription
getGet a configuration value
setSet a configuration value
resetReset a configuration value to its default
listList all configuration settings

get

Get a configuration value

Usage:

get <KEY>

Arguments:

ArgumentDescription
<key> (required)The configuration key to get

set

Set a configuration value

Usage:

set <KEY> <VALUE>

Arguments:

ArgumentDescription
<key> (required)The configuration key to set
<value> (required)The value to set

reset

Reset a configuration value to its default

Usage:

reset <KEY>

Arguments:

ArgumentDescription
<key> (required)The configuration key to reset

list

List all configuration settings

Usage:

list

device

Manage connected Meta Quest devices (list, info, connect, battery, etc.)

Usage:

device <COMMAND>

Subcommands:

CommandDescription
listList connected devices
infoShow detailed device information
connectConnect to a device over WiFi
disconnectDisconnect from a device
rebootReboot the device
wakeWake the device from sleep
waitWait for the device to reach an ADB state (default: device)
batteryGet battery information
controllersShow connected controller information
configure-testingConfigure device for testing (disable animations, stay awake) or restore defaults
health-checkRun pre-test device health validation (connectivity, battery, storage, UI)
proximityEnable or disable the proximity sensor
setupSet up a Quest device for development over BLE (scan, connect, dev-mode)

list

List connected devices

Usage:

list

info

Show detailed device information

Usage:

info <DEVICE_ID>

Arguments:

ArgumentDescription
<device_id> (required)Device ID to get info for

connect

Connect to a device over WiFi

Usage:

connect <ADDRESS>

Arguments:

ArgumentDescription
<address> (required)IP address and optional port (e.g., 192.168.1.100:5555)

disconnect

Disconnect from a device

Usage:

disconnect [ADDRESS]

Arguments:

ArgumentDescription
<address>Device address to disconnect (disconnects all if not specified)

reboot

Reboot the device

Usage:

reboot

wake

Wake the device from sleep

Usage:

wake

wait

Wait for the device to reach an ADB state (default: device)

Usage:

wait [OPTIONS]

Options:

OptionDescription
--state <STATE>State to wait for: device, recovery, sideload, or bootloader (default: device)
--timeout-secs <TIMEOUT_SECS>Maximum time to wait, in seconds (default: 60)

battery

Get battery information

Usage:

battery

controllers

Show connected controller information

Usage:

controllers

configure-testing

Configure device for testing (disable animations, stay awake) or restore defaults

Usage:

configure-testing <COMMAND>

Subcommands:

CommandDescription
setupConfigure device for testing (disable animations, stay awake, etc.)
restoreRestore device to default settings after testing

setup

Configure device for testing (disable animations, stay awake, etc.)

Usage:

setup

restore

Restore device to default settings after testing

Usage:

restore

health-check

Run pre-test device health validation (connectivity, battery, storage, UI)

Usage:

health-check

proximity

Enable or disable the proximity sensor

Usage:

proximity [OPTIONS]

Options:

OptionDescription
-e, --enableEnable the proximity sensor (restores normal behavior)
--disableDisable the proximity sensor (keeps headset awake regardless of wear)
-s, --statusShow the current proximity sensor status
--duration-ms <DURATION_MS>Duration in milliseconds to keep sensor disabled (auto-reenables after)

setup

Set up a Quest device for development over BLE (scan, connect, dev-mode)

Usage:

setup <COMMAND>

Subcommands:

CommandDescription
scanScan for nearby Quest devices over BLE
connectConnect to a Quest device and perform HELLO handshake
dev-modeSet developer mode on a Quest device via BLE
interactiveFull interactive setup flow (scan → connect → Wi-Fi → dev mode → USB instructions)

scan

Scan for nearby Quest devices over BLE

Usage:

scan [OPTIONS]

Options:

OptionDescription
-t, --timeout <TIMEOUT>Scan duration in seconds (default: 10)

connect

Connect to a Quest device and perform HELLO handshake

Usage:

connect <DEVICE_ID>

Arguments:

ArgumentDescription
<device_id> (required)Device identifier (from scan results)

dev-mode

Set developer mode on a Quest device via BLE

Usage:

dev-mode [OPTIONS] <DEVICE_ID>

Arguments:

ArgumentDescription
<device_id> (required)Device identifier (from scan results)

Options:

OptionDescription
--disableDisable developer mode instead of enabling it

interactive

Full interactive setup flow (scan → connect → Wi-Fi → dev mode → USB instructions)

Usage:

interactive

Options:

OptionDescription
--bridge-modeHidden plumbing flag: switch stdout to NDJSON event stream and stdin to NDJSON command stream so an embedded host (e.g. MQDH) can drive the flow programmatically. See setup_bridge.rs for the protocol. Without this flag, the command runs the existing human-driven TTY wizard

docs

Search and fetch Meta Quest developer documentation

Usage:

docs <COMMAND>

Subcommands:

CommandDescription
searchSearch Meta Quest developer documentation
fetchFetch a documentation page from developers.meta.com/horizon
api-searchSearch API references using BM25 ranking
api-detailsGet full details for an API entry
api-statsShow statistics about loaded API reference indexes

search

Search Meta Quest developer documentation

Usage:

search [OPTIONS] <QUERY>

Arguments:

ArgumentDescription
<query> (required)Natural language query describing what you want to learn or build

Options:

OptionDescription
-c, --category <CATEGORY>Document category filter (ALL, UNITY, UNREAL, SPATIAL_SDK, ANDROID, NATIVE, WEB, RESOURCES, DESIGN, POLICY) (default: ALL)

fetch

Fetch a documentation page from developers.meta.com/horizon

Usage:

fetch <URL>

Arguments:

ArgumentDescription
<url> (required)Documentation path or URL. Accepts: - Full URL: https://developers.meta.com/horizon/documentation/unity/ts-adb - Short path: documentation/unity/ts-adb.md

Search API references using BM25 ranking

Usage:

api-search [OPTIONS] <QUERY>

Arguments:

ArgumentDescription
<query> (required)Search query

Options:

OptionDescription
-p, --platform <PLATFORM>Platform to search (unity, unreal_ue4, unreal_ue5) (default: unity)
-n, --max-results <MAX_RESULTS>Maximum number of results (default: 20)

api-details

Get full details for an API entry

Usage:

api-details [OPTIONS] <NAME>

Arguments:

ArgumentDescription
<name> (required)Name of the API entry (e.g., "OVRInput", "OVRSpatialAnchor")

Options:

OptionDescription
-p, --platform <PLATFORM>Platform to search (unity, unreal_ue4, unreal_ue5) (default: unity)

api-stats

Show statistics about loaded API reference indexes

Usage:

api-stats

files

Manage files on the device (ls, push, pull, rm, mkdir)

Usage:

files <COMMAND>

Subcommands:

CommandDescription
lsList files and directories on the device
pullDownload a file from the device
pushUpload a file to the device
rmDelete a file or directory on the device
mkdirCreate a directory on the device

ls

List files and directories on the device

Usage:

ls [OPTIONS] [PATH]

Arguments:

ArgumentDescription
<path>Path on the device to list (default: /sdcard/)

Options:

OptionDescription
-a, --allShow hidden files (starting with .)

pull

Download a file from the device

Usage:

pull <REMOTE_PATH> [LOCAL_PATH]

Arguments:

ArgumentDescription
<remote_path> (required)Path to the file on the device
<local_path>Local path to save the file (default: current directory)

push

Upload a file to the device

Usage:

push <LOCAL_PATH> <REMOTE_PATH>

Arguments:

ArgumentDescription
<local_path> (required)Path to the local file to upload
<remote_path> (required)Path on the device to save the file

rm

Delete a file or directory on the device

Usage:

rm [OPTIONS] <PATH>

Arguments:

ArgumentDescription
<path> (required)Path to the file or directory on the device

Options:

OptionDescription
-r, --recursiveRecursively delete directories

mkdir

Create a directory on the device

Usage:

mkdir [OPTIONS] <PATH>

Arguments:

ArgumentDescription
<path> (required)Path of the directory to create

Options:

OptionDescription
-p, --parentsCreate parent directories as needed (default: true) (default: true)

log

View device logs (shortcut for adb logcat)

Usage:

log [OPTIONS]

Options:

OptionDescription
-n, --lines <LINES>Number of recent lines to show (default: 100)
-t, --tag <TAG>Filter by tag
-l, --level <LEVEL>Minimum log level (V, D, I, W, E, F)
-c, --clearClear the log buffer before reading

mcp

MCP server for AI assistant integration

Usage:

mcp <COMMAND>

Subcommands:

CommandDescription
serverStart the MCP server for AI assistant integration
installInstall MCP server configuration into an AI tool

server

Start the MCP server for AI assistant integration

Usage:

server [OPTIONS]

Options:

OptionDescription
--transport <TRANSPORT>Transport type (stdio, sse, streamable-http) (default: stdio)
--log-level <LOG_LEVEL>Logging level (DEBUG, INFO, WARNING, ERROR). Can also be set via HZDB_LOG_LEVEL env var
--log-output <LOG_OUTPUT>Where to send logs (stderr, file, none). Defaults to 'file' if ODH is installed, otherwise 'stderr'
--log-file <LOG_FILE>Path to log file. Can also be set via HZDB_LOG_PATH env var
--debugEnable debug mode
--meta-wand-token <META_WAND_TOKEN>Meta Wand API token for 3D model search
--no-telemetryDisable telemetry
--enable-full-docsEnable full documentation tools
--disable-perf-toolsDisable performance profiling tools
--updateCheck for updates before starting the server (self-update builds only)

install

Install MCP server configuration into an AI tool

Usage:

install <COMMAND>

Subcommands:

CommandDescription
android-studioInstall into Android Studio (Gemini MCP servers)
cursorInstall into Cursor AI editor
claude-desktopInstall into Claude Desktop
claude-codeShow command to install into Claude Code CLI
vscodeInstall into VS Code (uses deep link by default, or --file for mcp.json)
vscode-insidersInstall into VS Code Insiders (uses deep link by default)
codexInstall into OpenAI Codex CLI (TOML config)
zedInstall into Zed editor
windsurfInstall into Windsurf (Codeium)
antigravityInstall into Google Antigravity
gemini-cliInstall into Gemini CLI
open-codeInstall into OpenCode
lm-studioInstall into LM Studio (uses deep link)
projectInstall into a project directory (creates mcp.json or .mcp.json)

android-studio

Install into Android Studio (Gemini MCP servers)

Usage:

android-studio [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)

cursor

Install into Cursor AI editor

Usage:

cursor [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)
--workspace <WORKSPACE>Install to workspace directory (creates .cursor/mcp.json in the specified directory)

claude-desktop

Install into Claude Desktop

Usage:

claude-desktop [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)

claude-code

Show command to install into Claude Code CLI

Usage:

claude-code [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)
--executeExecute the installation command directly

vscode

Install into VS Code (uses deep link by default, or --file for mcp.json)

Usage:

vscode [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)
--workspace <WORKSPACE>Install to workspace directory (creates .vscode/mcp.json in the specified directory) Uses file-based installation by default
--devmateInstall to DevMate configuration (~/.devmate/mcp.json) instead of using deep link
--fileUse file-based installation instead of deep link (writes to ~/.devmate/mcp.json) This is the default for --workspace installs

vscode-insiders

Install into VS Code Insiders (uses deep link by default)

Usage:

vscode-insiders [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)
--workspace <WORKSPACE>Install to workspace directory (creates .vscode/mcp.json in the specified directory) Uses file-based installation by default
--fileUse file-based installation instead of deep link

codex

Install into OpenAI Codex CLI (TOML config)

Usage:

codex [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)

zed

Install into Zed editor

Usage:

zed [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)

windsurf

Install into Windsurf (Codeium)

Usage:

windsurf [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)

antigravity

Install into Google Antigravity

Usage:

antigravity [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)

gemini-cli

Install into Gemini CLI

Usage:

gemini-cli [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)
--workspace <WORKSPACE>Install to project directory (creates .gemini/settings.json)

open-code

Install into OpenCode

Usage:

open-code [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)
--workspace <WORKSPACE>Install to project directory (creates opencode.json)

lm-studio

Install into LM Studio (uses deep link)

Usage:

lm-studio [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)

project

Install into a project directory (creates mcp.json or .mcp.json)

Usage:

project [OPTIONS]

Options:

OptionDescription
--dry-runPerform dry run without writing changes
--name <NAME>Custom server name (default: "hzdb") (default: hzdb)
--forceForce overwrite existing configuration
--executable <EXECUTABLE>Path to hzdb executable (auto-detected if not specified)
-y, --confirmSkip confirmation prompt (automatically accept changes)
-p, --project <PROJECT>Project directory (defaults to current working directory)
--dotfile <DOTFILE>Use dotfile format (.mcp.json instead of mcp.json) If not specified, auto-detects based on existing files in the project
--command-type <COMMAND_TYPE>Command type to use in configuration If not specified, will prompt interactively (or auto-detect based on how hzdb was invoked)

perf

Performance analysis and Perfetto trace tools

Usage:

perf <COMMAND>

Subcommands:

CommandDescription
captureCapture a timed Perfetto trace from a connected device
contextGet performance analysis context/prompt
gpu-countersGet GPU counter metrics for frame ranges
analyze-tracePerform a complete performance analysis on a Perfetto trace
hex-to-datetimeConvert a hexadecimal timestamp to datetime
loadLoad a Perfetto trace for analysis
openOpen a Perfetto trace in the Perfetto UI (ui.perfetto.dev)
queryRun a SQL query on a loaded trace
startStart a background Perfetto capture (manual start/stop)
stopStop a background Perfetto capture and pull the trace
thread-stateGet thread state information from a trace
compareCompare two Perfetto traces and produce a delta report
tracesList available Perfetto traces

capture

Capture a timed Perfetto trace from a connected device

Usage:

capture [OPTIONS]

Options:

OptionDescription
-m, --mode <MODE>Capture mode preset: standard (default), gpu, cpu, lightweight, full, vr, custom (default: standard)
--duration <DURATION>Duration of capture in milliseconds (default: 5000)
--app <APP>App package name to trace (auto-detects if not specified)
-o, --output <OUTPUT>Output filename (without extension)
--gpu-render-stageEnable GPU render stage tracing (only with --mode custom)
--gpu-metricsEnable GPU metrics tracing (only with --mode custom) (default: true)
--cpu-schedulingEnable CPU scheduling tracing (only with --mode custom) (default: true)
--xr-runtimeEnable XR runtime metrics (only with --mode custom)
--vulkan-layerEnable Vulkan OS layer tracing (only with --mode custom)
--extended-schedulingEnable extended scheduling events (only with --mode custom)

context

Get performance analysis context/prompt

Usage:

context [SESSION_ID]

Arguments:

ArgumentDescription
<session_id>Optional session ID for trace-specific context

gpu-counters

Get GPU counter metrics for frame ranges

Usage:

gpu-counters [OPTIONS] <SESSION_ID>

Arguments:

ArgumentDescription
<session_id> (required)Session ID (trace file name)

Options:

OptionDescription
--start-ts <START_TS>Start timestamps in nanoseconds (comma-separated)
--end-ts <END_TS>End timestamps in nanoseconds (comma-separated)

analyze-trace

Perform a complete performance analysis on a Perfetto trace

Usage:

analyze-trace [OPTIONS] [SESSION_ID]

Arguments:

ArgumentDescription
<session_id>Session ID (trace file name). If omitted, uses the most recently captured trace

Options:

OptionDescription
--focus <FOCUS>Analysis focus area: overview (default), gpu, cpu, frames, threads (default: overview)

hex-to-datetime

Convert a hexadecimal timestamp to datetime

Usage:

hex-to-datetime <HEX_STR>

Arguments:

ArgumentDescription
<hex_str> (required)Hexadecimal string representing Unix timestamp

load

Load a Perfetto trace for analysis

Usage:

load <SESSION_ID>

Arguments:

ArgumentDescription
<session_id> (required)Session ID (trace file name)

open

Open a Perfetto trace in the Perfetto UI (ui.perfetto.dev)

Usage:

open <SESSION_ID>

Arguments:

ArgumentDescription
<session_id> (required)Session ID (trace file name)

query

Run a SQL query on a loaded trace

Usage:

query <SESSION_ID> <QUERY>

Arguments:

ArgumentDescription
<session_id> (required)Session ID (trace file name)
<query> (required)SQL query to execute

start

Start a background Perfetto capture (manual start/stop)

Usage:

start [OPTIONS]

Options:

OptionDescription
-m, --mode <MODE>Capture mode preset: standard (default), gpu, cpu, lightweight, full, vr, custom (default: standard)
--app <APP>App package name to trace (auto-detects if not specified)
-o, --output <OUTPUT>Output filename (without extension)
--gpu-render-stageEnable GPU render stage tracing (only with --mode custom)
--gpu-metricsEnable GPU metrics tracing (only with --mode custom) (default: true)
--cpu-schedulingEnable CPU scheduling tracing (only with --mode custom) (default: true)
--xr-runtimeEnable XR runtime metrics (only with --mode custom)
--vulkan-layerEnable Vulkan OS layer tracing (only with --mode custom)
--extended-schedulingEnable extended scheduling events (only with --mode custom)

stop

Stop a background Perfetto capture and pull the trace

Usage:

stop <PID> <OUTPUT_NAME>

Arguments:

ArgumentDescription
<pid> (required)PID of the background perfetto process (from 'hzdb perf start' output)
<output_name> (required)Output name (from 'hzdb perf start' output)

thread-state

Get thread state information from a trace

Usage:

thread-state [OPTIONS] <SESSION_ID> <UTID>

Arguments:

ArgumentDescription
<session_id> (required)Session ID (trace file name)
<utid> (required)Unique thread identifier (utid)

Options:

OptionDescription
--start-ts <START_TS>Start time in nanoseconds (default: 0)
--end-ts <END_TS>End time in nanoseconds (default: 1000000000000000000)

compare

Compare two Perfetto traces and produce a delta report

Usage:

compare <BASELINE_ID> <COMPARISON_ID>

Arguments:

ArgumentDescription
<baseline_id> (required)Session ID of the baseline trace (before optimization)
<comparison_id> (required)Session ID of the comparison trace (after optimization)

traces

List available Perfetto traces

Usage:

traces [OPTIONS]

Options:

OptionDescription
-l, --limit <LIMIT>Maximum number of traces to list (default: 10)

shell

Run a shell command on the device (shortcut for adb shell)

Usage:

shell [COMMANDS]...

Arguments:

ArgumentDescription
<commands>Command and arguments to run (interactive shell if omitted)