glina doctor
Invocation
glina doctor [--config <path>] [--text]
Purpose
Check every dependency the pipeline needs, each against the real thing, and say which one failed and at which step. The checks are config (the config parses, every role:// reference resolves through the selected credential source, and one supported model backend has the required settings), sculptor (the Blender MCP bridge: handshake, tool list, and a print("health-probe") that must come back from Blender itself) and browser (the browser layer the config declares, browser.weles or browser.playwright_mcp: its MCP server's handshake and the tools it exposes). The bridges are details of the checks, never the operation: the same report is what glina-mcp returns from glina_doctor and what Glina Desktop shows under Doctor.
Inputs and options
--config <path>selects the pipeline config; the default is the checkout'spipeline.config.json. The config'sblender.mcpandbrowsersettings select the bridges to probe; a config that cannot be loaded fails thesculptorandbrowserchecks with that cause instead of probing a default server.--textprints the report as onepath: valueline per field instead of JSON.
Output and state
Read-only. Prints {healthy, checks} where each check is {name, ok, detail} and a failed check carries error, the message of the step that broke. sculptor.detail.tools lists the Blender bridge's tools; browser.detail is {bridge, command, tools}, bridge being weles or playwright_mcp. Exits 0 when every check is ok and 1 otherwise.
The MCP for Blender server starts and answers the handshake even when Blender is not running, and then answers the probe with its own "could not connect" text instead of the printed line. The sculptor check is therefore ok only when the probe's marker comes back; a tool list, installed addon file, or a call that did not throw never counts. glina setup installs the matching addon on disk but does not prove the running Blender process loaded it.
Refusals
confignot ok: the parse, vault, or model backend error, for exampleENOENT: no such file or directory, open '<path>',pipeline config is not valid JSON: <path>, ormodels.openrouter, models.backend is not a model backend: declare models.brama, or models.openai_compatible for a provider without Brama.sculptornot ok:the bridge does not expose execute_blender_code,execute_blender_code did not reach Blender: <the bridge's answer>(for exampleError executing code: Could not connect to Blender. Make sure the Blender addon is running.), or the session-start error.browsernot ok:no browser layer is configured,the browser section is empty,browser.<key> is not a browser layer,both browser.weles and browser.playwright_mcp are declared,browser.playwright_mcp.command must name the program …,browser.playwright_mcp.args must be a list of strings …, or the declared server's process-start, handshake or listing error (MCP server <command> process failed to start: …).
A failed check is a report line and exit 1, never a usage error; --help prints the usage and runs nothing.