Skip to main content

Set up ChatGPT Desktop app

Both Sense AI servers run as commands on your own machine, which the browser version of ChatGPT has no way to start. The desktop app is required here, not just an account.

OpenAI's desktop app is called ChatGPT, and Codex is the coding agent inside it. The two names appear in different places, which is worth knowing before you go looking for settings:

  • The app in your Applications folder is ChatGPT.
  • Its configuration lives under ~/.codex/, because the app began life as a separate Codex app. Its bundle identifier is still com.openai.codex.
  • In the Builderius settings screen, the AI client dropdown calls it Codex.

They are the same thing. The ChatGPT desktop app, the Codex IDE extension and the codex command line all read one configuration file, so setting it up once covers all three.

Before you start, make sure Node.js 20 or newer is installed (node -v in a terminal) and that you have finished the steps in Introduction: Sense AI switched on, and an application password created.

Step 1: Copy the config

In WordPress, go to Builderius → Settings → Sense AI, scroll to Connect your client, and choose Codex from the dropdown. That is the entry for the ChatGPT desktop app.

The Connect your client step with Codex selected

Press Copy. Codex uses TOML rather than JSON, so each server is a pair of tables: one for the command, one for its environment.

What you get depends on which modes you switched on, because each mode is its own MCP server. Live editing runs a connector on your machine that talks to the open builder tab over a port. Abilities go to the site over HTTP, through the WordPress MCP remote. They share nothing but your credentials, so turning both on means two servers.

Live editing only

[mcp_servers.builderius-example]
command = "npx"
args = ["-y", "@builderius/sense-ai@latest", "mcp", "--port=7681"]

[mcp_servers.builderius-example.env]
WP_API_URL = "https://example.com"
WP_API_USERNAME = "your-wp-username"
WP_API_PASSWORD = "YOUR-APP-PASSWORD"

--port=7681 must match the Port setting in the Sense AI screen. That is how the connector finds the builder tab.

Abilities only

[mcp_servers.wordpress-example]
command = "npx"
args = ["-y", "@automattic/mcp-wordpress-remote@latest"]

[mcp_servers.wordpress-example.env]
WP_API_URL = "https://example.com"
WP_API_USERNAME = "your-wp-username"
WP_API_PASSWORD = "YOUR-APP-PASSWORD"

No port here. Nothing has to be open in a browser, and no connector runs on your machine.

Both

[mcp_servers.builderius-example]
command = "npx"
args = ["-y", "@builderius/sense-ai@latest", "mcp", "--port=7681"]

[mcp_servers.builderius-example.env]
WP_API_URL = "https://example.com"
WP_API_USERNAME = "your-wp-username"
WP_API_PASSWORD = "YOUR-APP-PASSWORD"

[mcp_servers.wordpress-example]
command = "npx"
args = ["-y", "@automattic/mcp-wordpress-remote@latest"]

[mcp_servers.wordpress-example.env]
WP_API_URL = "https://example.com"
WP_API_USERNAME = "your-wp-username"
WP_API_PASSWORD = "YOUR-APP-PASSWORD"

Four tables, two servers, the same three environment variables in both. Paste them whole. With both on, Sense AI should pick the right one for the task on its own. If you need a particular mode, name its server in your request: builderius-example for live editing, wordpress-example for abilities. Those are the table names in the block above, and on your own site they carry your site's name instead of example. That naming matters most once you connect more than one site, since every site adds its own pair to the same file. See Notes for ChatGPT desktop below.

Local sites over HTTPS

For a site on a reserved name such as .test or .local, the settings screen adds NODE_OPTIONS = "--use-system-ca" to each env table, so Node accepts your development certificate. Keep it if it is printed, and leave it out otherwise.

Step 2: Open the config file

~/.codex/config.toml

Create the file if it is not there.

Step 3: Append, do not wrap

Add your tables to the end of the file. TOML tables are independent, so unlike JSON there is no wrapper to merge into and no key to overwrite by accident. A file with servers already in it simply grows:

[mcp_servers.some-server-you-already-had]
# ...

[mcp_servers.builderius-example]
# ...

[mcp_servers.wordpress-example]
# ...

The one thing to avoid is defining the same table name twice. TOML rejects that outright, so you will see a parse error rather than a silent overwrite.

Step 4: Fill in the password

Replace YOUR-APP-PASSWORD with the application password from the settings screen. It looks like six groups of four characters. With both servers configured, the same password goes in both env tables.

Step 5: Restart ChatGPT

Quit the app and open it again. If you also use codex in a terminal, start a new session there too.

Verify it worked

Ask it:

List my Builderius templates.

  • With Abilities on, it answers straight away.
  • With only Live editing on, open a Builderius template in your browser first. Live editing drives a builder tab and needs one open.

Per-project configuration, and the trap in it

Codex can also read .codex/config.toml from the folder you start it in, which is useful if you want one site per project rather than one config for everything.

A project config is ignored unless the folder is trusted

Codex only loads a project-scoped server from a folder you have marked trusted. In an untrusted folder the file is skipped silently: no error, no warning, and the server simply is not there.

codex mcp list will still print the server as though it were fine, so the listing is not proof. If a project config appears to do nothing, trust the folder or move the entry into the global ~/.codex/config.toml.

The lookup is also exact to the directory you start in. Codex does not walk up to a repository root, so starting one folder deeper means the project file is not found.

If that sounds like more trouble than it is worth, use the global file. It is what the settings screen recommends by default, and it works from anywhere.

Notes for ChatGPT desktop

One file, three front ends. The ChatGPT desktop app, the Codex IDE extension and the codex CLI share ~/.codex/config.toml. Configure it once.

Two sites, four tables. Connecting another WordPress site with both modes on means another pair of servers in the same file, each with its own address, username and password. The settings screen names them after the site so they cannot collide.

Troubleshooting

  • The server does not appear. Check the file is valid TOML and that the app was fully restarted. In a project config, check the folder is trusted.
  • codex mcp list shows it but nothing works. The untrusted-folder symptom. Move the entry to the global file.
  • spawn npx ENOENT. Node.js is not installed or not on the PATH the app inherits. Install the LTS from nodejs.org.
  • "No builderius page is connected". No builder tab open, a port mismatch, or a config missing the username or site URL. All three environment variables are required.
  • Abilities work but live editing does not. Only the live editing server uses the port, so check --port= against the settings screen, and make sure a builder tab is open.
  • Live editing works but abilities do not. The port is not involved, so check that the MCP Adapter plugin is active on the site and publishing the abilities.