{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://www.schemastore.org/claude-code-launch.json","title":"launch configuration","description":"Configuration for preview servers in Claude Code Desktop.\nhttps://code.claude.com/docs/en/desktop#configure-preview-servers","type":"object","required":["version","configurations"],"additionalProperties":true,"properties":{"$schema":{"type":"string","description":"JSON Schema reference for this configuration file."},"version":{"type":"string","const":"0.0.1","description":"Version of the launch configuration format."},"autoVerify":{"type":"boolean","default":true,"description":"Whether Claude automatically verifies changes after editing files.\nhttps://code.claude.com/docs/en/desktop#auto-verify-changes"},"configurations":{"type":"array","description":"Preview server configurations.","items":{"$ref":"#/definitions/configuration"}}},"definitions":{"configuration":{"title":"preview server configuration","type":"object","required":["name"],"additionalProperties":true,"properties":{"name":{"type":"string","minLength":1,"description":"Unique identifier for this server."},"runtimeExecutable":{"type":"string","minLength":1,"description":"Command used to start the server, such as npm, yarn, or node."},"runtimeArgs":{"type":"array","description":"Arguments passed to runtimeExecutable.","items":{"type":"string"}},"port":{"type":"integer","minimum":1,"maximum":65535,"default":3000,"description":"Port on which the server listens."},"cwd":{"type":"string","description":"Working directory relative to the project root. Use ${workspaceFolder} to reference the project root explicitly."},"env":{"type":"object","description":"Additional environment variables passed to the server. Do not store secrets here because launch.json is committed to the repository.","additionalProperties":{"type":"string"}},"autoPort":{"type":"boolean","description":"Whether Claude automatically selects a free port when the configured port is unavailable. When omitted, Claude asks the user."},"program":{"type":"string","minLength":1,"description":"Standalone script run directly with Node.js."},"args":{"type":"array","description":"Arguments passed to program.","items":{"type":"string"}},"url":{"type":"string","format":"uri","pattern":"^https?://","description":"Address opened by the preview instead of http://localhost:<port>. Must use HTTP or HTTPS and must not contain a username or password. Localhost URLs must contain only the origin, and their port must match port.\nhttps://code.claude.com/docs/en/desktop#open-the-preview-at-a-specific-url"}},"dependencies":{"runtimeArgs":["runtimeExecutable"],"args":["program"]},"anyOf":[{"properties":{"runtimeExecutable":{}},"required":["runtimeExecutable"]},{"properties":{"program":{}},"required":["program"]},{"properties":{"url":{}},"required":["url"]}]}},"examples":[{"version":"0.0.1","configurations":[{"name":"web","runtimeExecutable":"npm","runtimeArgs":["run","dev"],"port":3000}]},{"version":"0.0.1","configurations":[{"name":"server","program":"server.js","args":["--verbose"],"port":4000}]},{"version":"0.0.1","configurations":[{"name":"existing-server","url":"https://app.localhost:3000"}]}]}