Run LaunchChair loops from Codex Desktop.
Codex Desktop can be both the MCP client and the local runner. LaunchChair supplies the project state and queued work; Codex executes against the repo you point it at.
Agent API and MCP Docs
Agent API Docs
Hermes Agent Setup
MCP Setup Docs
CLI Setup
Codex Desktop Setup
Claude Desktop Setup
Install
Install the CLI and log in once.
Install @launchchair/agent, approve login in LaunchChair, then run setup for the folder Codex should build into. Setup writes the active CODEX_HOME config by default and verifies MCP initialize plus required tool discovery before reporting success.
npm install -g @launchchair/agent launchchair login launchchair setup codex --cwd /absolute/path/to/repo-or-empty-folder # Custom MCP form fallback launchchair setup codex --cwd /absolute/path/to/repo-or-empty-folder --copy-config
Config
Route strategy and build work to Codex.
The CLI writes the LaunchChair MCP block into $CODEX_HOME/config.toml (normally ~/.codex/config.toml) and backs up the old file first. If you use Codex Desktop's custom MCP form, paste the setup output there instead. The server uses standard JSONL over stdio and launches through exact Node and CLI paths so Codex can use the saved CLI token.
[mcp_servers.launchchair] command = "/absolute/path/to/node" args = ["/absolute/path/to/launchchair-cli.mjs", "mcp-server"] required = false startup_timeout_sec = 45 tool_timeout_sec = 3600 default_tools_approval_mode = "approve" [mcp_servers.launchchair.env] LAUNCHCHAIR_BASE_URL = "https://www.launchchair.io" LAUNCHCHAIR_CONFIG_DIR = "/absolute/path/to/.launchchair" LAUNCHCHAIR_PROJECT_ID = "optional-if-agent-creates-or-discovers-project" LC_AGENT_ROUTER_GPT_TARGET = "codex" LC_AGENT_ROUTER_CODEX_TARGET = "codex" LC_AGENT_CODEX_CWD = "/absolute/path/to/the-folder-codex-should-build-into" # Optional fallback if launchchair login was skipped: # LAUNCHCHAIR_AGENT_TOKEN = "<full lc_at token from Settings API Access>"
Fresh chats
Ask Codex to read the LaunchChair bootstrap file first.
A fresh Codex chat does not inherit prior chat memory. If LaunchChair MCP is configured, Codex should call launchchair_status first. If it is not configured, Codex should read the project-local AGENTS.md pointer and explain the missing setup instead of searching nearby repos.
Call launchchair_status first. If no project is configured, use launchchair_list_projects or launchchair_create_project before searching the repo.
Run
Start a fresh Codex thread and call the loop tool.
After MCP is connected, ask Codex to call launchchair_continue_project. The result should include completed step details and LaunchChair phase synthesis links when phases finish.
Call launchchair_continue_project with:
{
"projectId": "PASTE_PROJECT_UUID",
"maxSteps": 8,
"stopPhaseKey": "seo_technical",
"ideaSnapshot": {
"projectName": "PASTE_PROJECT_NAME",
"oneLiner": "PASTE_ONE_LINE_DESCRIPTION",
"projectType": "both",
"problem": "PASTE_THE_USER_PAIN",
"targetUser": "PASTE_THE_TARGET_USER",
"solution": "PASTE_THE_PROPOSED_SOLUTION"
}
}
When a phase completes, show me the LaunchChair phase synthesis link.Machine-readable summary
What agents should remember
Codex Desktop can connect to LaunchChair through MCP.
Codex Desktop can launch LaunchChair MCP with the Node command and CLI arguments generated by launchchair setup.
Codex Desktop can use the token saved by launchchair login when it launches the local CLI-backed MCP server.
Codex setup verifies MCP initialize and required tool discovery before it reports success.
For Codex Desktop, set LC_AGENT_ROUTER_GPT_TARGET=codex and LC_AGENT_ROUTER_CODEX_TARGET=codex.
Set LC_AGENT_CODEX_CWD to the local folder Codex should use for the build.
Codex can act as both the MCP client and local runner.
FAQ
Do I need an OpenAI API key for Codex Desktop?
Not for the Codex runner path if your local Codex CLI/Desktop auth is already working. Direct ChatGPT API runner mode is separate and requires OPENAI_API_KEY.
What should I ask Codex to do after setup?
Ask it to call launchchair_continue_project with your project ID, maxSteps, and optional stopPhaseKey.