# baton-run

Local run control plane for people and coding agents: launch, hot-reload, screenshot and check Flutter, web, React Native and native iOS/Android apps.

- **Type:** MCP server
- **Trust:** 85/100 (A), scored on the package rubric
- **Verification:** verified (build provenance)
- **Version:** 0.2.10
- **Author:** kanumuri9593
- **License:** MIT
- **npm:** baton-run
- **Source:** https://github.com/kanumuri9593/Baton
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

85/100 (A), scored on the package rubric
- Publisher verified: no
- Build provenance: verified attestation
- npm trusted publishing (OIDC): yes
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-10-13T11:42:49.284Z
- **Version scanned:** 0.2.10
- **CVEs:** none found by OSV at scan time

## Tools

29 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `diagnose` — Search bounded log and network evidence across projects. Defaults to errors only and 20 findings.
- `run_workflow` — Launch up to eight project targets in dependency order and wait for each to become ready, in one call. Stops launching dependents on failure. Returns compact se
- `inspect_project` — Read fresh launch sources, configuration problems, nested projects and guidance file paths. Does not run commands or expose environment values. Use before choos
- `list_targets` — List everything runnable in a project: launch.json configs, package.json dev scripts, Flutter entrypoints.
- `list_sessions` — List running sessions with their status, capabilities, URLs and device.
- `list_checkouts` — List git checkouts this project can run from: This checkout, linked worktrees, local branches, remotes.
- `run_target` — Start a target by name. Returns the new session id to use with the other tools. Optional branch or checkout runs from a git worktree without moving the current 
- `hot_reload` — Hot reload a session, keeping app state. Flutter only. Returns code 0 on success; a non-zero code carries the compile error.
- `hot_restart` — Hot restart a session, dropping app state. For web dev servers and plain processes this reboots the process.
- `stop_session` — Stop one session, or every running session with all=true.
- `forget_session` — Remove stopped sessions from the list. Running sessions must be stopped first. Use all=true to clear every stopped session.
- `read_logs` — Read recent output from a session, newest last. Use filter to grep for an error: it searches
- `list_run_history` — List past and current runs persisted on disk -- survives daemon restarts. Each line is
- `list_network_requests` — List HTTP requests the app has made, newest last. One line each:
- `get_network_request` — One captured request in full: headers, timeline events, and optionally the bodies.
- `clear_network_requests` — Forget every captured request for a session, in the daemon and in the app itself.
- `read_launch_config` — Read a project's launch.json exactly as written -- comments, formatting and all -- plus the
- `write_launch_config` — OVERWRITE a project's launch.json with the text given. The whole file is replaced, so read it
- `list_devices` — List connected devices, simulators and emulators available to Flutter. Use boot_device to start one that is not running.
- `set_debug_flag` — Toggle a framework debug flag on a running Flutter session, e.g. ext.flutter.debugPaint with {enabled: true} or ext.flutter.timeDilation with {timeDilation: 5}.
- `screenshot` — Capture the screen of a running session so the visual result of a change can be checked.
- `check_change` — After editing code: apply the change and return the evidence in one call, instead of
- `boot_device` — Boot an iOS simulator or Android emulator by name (e.g. "iPhone 17 Pro", "Pixel_8") or id,
- `wait_for` — Block until a session reaches a state. Use after run_target or hot_restart instead of polling read_logs.
- `session_summary` — Cheap structured overview -- call this before deciding what to do next.
- `run_proof` — Run proof verification and return a zip with screenshots, network call counts, response times and logs.
- `list_proofs` — List past proof bundles, newest first.
- `show_dashboard` — Show a live Baton control panel in the chat: every running app with its simulator or URL, status, CPU and memory;
- `dashboard_action` — Used by the Baton card: refresh; catalog (projects and devices for New run); run a project target on a device; boot a device;

## Install

**Verdict: install** — No blocking findings and no open coverage gaps — safe to install as configured.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"baton-run\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"baton-run\"\n      ]\n    }\n  }\n}"
```

## Blast radius

Moderate to extensive — no credential declaration found, from the publisher, the upstream registry, or the README. Known so far: mutates data; runs on your machine.
- Floor 30, ceiling 54 (tier: unknown)
- `unknown` means the floor and ceiling land in different bands — not measured enough to name one. It does not mean low.
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/baton-run
- Install plan: https://forgeregistry.com/api/v1/packages/baton-run/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/baton-run
- HTML page: https://forgeregistry.com/registry/baton-run
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
