Skip to main content
The inspector.json file tells Inspector how to install dependencies and start your dev server. Place it at the root of your project. Inspector auto-detects most projects, but inspector.json gives you full control — especially useful for monorepos, multi-service setups, and non-standard configurations.

Quick start

The simplest config has one field:
{
  "dev": "npm run dev"
}

Let your AI agent generate it

If you’re not sure what the right config is for your project, copy this prompt and paste it into your AI coding agent (Cursor, Claude Code, Copilot, etc.). The agent will analyze your project and generate the right inspector.json.

Generate an inspector.json for this project

CursorOpen in Cursor

Scenarios

Simple project

{
  "dev": "npm run dev"
}
Inspector runs the command, detects the URL from stdout (e.g., http://localhost:3000), and connects.

With an install step

{
  "install": "npm install",
  "dev": "npm run dev"
}
install runs to completion before dev starts. It is skipped on dev server restart.

Explicit URL

{
  "dev": "make dev",
  "url": "http://localhost:3000"
}
Use url when the dev command doesn’t print a localhost URL to stdout, or when you want to skip auto-detection entirely. This is common with orchestration tools like make, docker compose, or custom scripts.

Multi-service (concurrent processes)

{
  "dev": [
    "docker compose up postgres redis",
    "cd api && pnpm run dev",
    "cd web && pnpm run dev"
  ],
  "url": "http://localhost:3000"
}
When dev is an array, Inspector spawns all commands concurrently as long-running processes. Use url to tell Inspector where to connect — it can’t auto-detect from multiple processes.

Monorepo targets

{
  "install": "pnpm install",
  "dev": {
    "Web App": "pnpm --filter web dev",
    "Admin Panel": "pnpm --filter admin dev"
  }
}
When dev is an object, Inspector shows a picker and runs only the selected target. The keys are display names; the values are the dev commands.

Existing orchestration

{
  "dev": "docker compose up",
  "url": "http://localhost:3000"
}
If your project already has a single command that starts everything (e.g., docker compose, foreman, overmind), use it as dev and set url explicitly.

Field reference

FieldRequiredTypeDescription
devYesstring | string[] | objectThe dev server command(s). See scenarios above.
installNostringInstall command. Runs before dev, skipped on restart.
urlNostringURL for Inspector to connect to. Bypasses stdout detection.
buildNostringBuild command.
nodeNostringNode.js version constraint.
htmlEntryNostringMain HTML file for static HTML projects.

dev behavior by type

  • string — Run one command. Inspector monitors the process and detects the URL from stdout.
  • string[] — Run all commands as concurrent long-running processes. Inspector connects to url.
  • object — Show a picker. Run only the selected entry.

Backward compatibility

Inspector reads both inspector.json (preferred) and the legacy .inspector.json (dotfile) filename. If both exist, inspector.json takes priority. Older field names are also supported:
  • setup is treated as install
  • run is treated as dev
  • targets is treated as dev in object form
When saving, Inspector always writes to inspector.json using the new field names.