The interesting thing about the April 2026 Codex update isn't computer use. It isn't the model bump either. The real story is that Codex stopped being a CLI.
The Codex App Server is the underlying agent harness OpenAI just made public — the same engine that powers the official desktop app, now exposed as a first-class integration surface for anyone building on top of Codex. For most of last year, "using Codex" meant either typing into the Codex CLI or living inside OpenAI's app. As of this month, that framing is wrong. The CLI is one client. The desktop app is another client. Your product can be a third, on equal footing, and OpenAI is openly recommending you treat the App Server as the integration target instead of wrapping the binary.
I spent the last week wiring it into my own internal admin dashboard, and the shift in mental model is bigger than the diff suggests.
Why you'd embed Codex instead of pointing users at the official app
The honest answer is context. The Codex desktop app is great if your job is "write code in a generic project." It is not great if your job is "review every PR opened against our internal monorepo, with our lint rules, our test commands, our deploy gates, and our reviewer persona, and post the result back into the same admin panel where I already triage incidents." That second job is mine, and the official app cannot be it. It does not know my repo. It does not share state with my dashboard. It does not get to keep a warm sandbox between PRs.
When Codex was a CLI, the workaround was ugly. You spawned a child process, parsed stdout, and reinvented session management on top of a tool that did not want to be a library. With the App Server, the harness becomes a long-lived runtime you mount, not a binary you shell out to. Threads are addressable. Environments are sticky. Plugins are first-class. The CLI is just one of the things that talks to it.
That reframing — Codex as runtime, not Codex as command — is the entire post.
What the App Server actually is
The App Server runs locally and speaks JSON-RPC. The official client is the TypeScript SDK, which is the path I'd recommend for almost everyone today. It gives you a small, sharp surface — start a thread, run a task on it, resume a past thread by ID — and hides the transport entirely.
import { Codex } from "@openai/codex-sdk";
const codex = new Codex();
const thread = await codex.startThread({ workdir: "/repo" });
const run = await thread.run("Review PR #482 against our style guide.");
console.log(run.finalMessage);
const resumed = await codex.resumeThread(thread.id);
await resumed.run("Now check the migration in 0042_add_index.sql.");
That snippet is load-bearing. A thread is the unit of agent state. startThread boots a session, run sends a task into it, and resumeThread lets you reattach by ID hours or days later — which makes "PR #482 reviewer" a durable concept instead of a fresh prompt. Recent changelog entries added Unix socket transport, pagination-friendly resume and fork, sticky environments, remote thread config and storage, and a plugin marketplace you can install and upgrade from. Together it is the difference between scripting an agent and hosting one.
There is also an experimental Python SDK that drives a local App Server checkout over JSON-RPC and needs Python 3.10+. It is fine for prototyping, but TypeScript is where the supported road is. And because the App Server can also expose itself as an MCP server, anything else in your stack — agents you've built with the OpenAI Agents SDK, Claude Code, your IDE — can call into the same Codex instance as a tool. That is the move that turns Codex from "an app I open" into "infrastructure other agents reach for."
Architecturally, the picture I keep in my head looks like this:
your-app (Next.js admin panel)
│ TS SDK
▼
Codex App Server ◄────── MCP clients
│ (Agents SDK, IDE, etc.)
▼
agent runtime
│
┌────────┴────────┐
▼ ▼
tools / shell plugins (marketplace)
│
▼
MCP fanout
(linear, github, db)
Your app talks to one process. That process is also a server other agents talk to. The agent runtime fans back out to tools and plugins, and several of those plugins are themselves MCP bridges. Codex sits in the middle, not at the edge.
Honest comparison: Agents SDK, Claude Agent SDK, raw model API
Embedding Codex is not the only option, and I want to be fair about the alternatives because I tried them all on the same use case before settling.
The OpenAI Agents SDK directly is the closest competitor. It is more flexible — you define your own tools, your own loop, your own memory — and it is the right answer if your agent is not primarily about code. But for a code-review bot, you end up rebuilding most of what the Codex harness already does: sandboxed shell, diff-aware context, repo-rooted file ops, plugin lifecycle. Picking Agents SDK over the App Server here meant writing the harness myself. Possible, not wise.
Anthropic's Claude Agent SDK is genuinely good and, in some workflows, more pleasant. The reason I did not pick it is narrow: I wanted my bot to share the same reasoning surface as the Codex sessions my team already runs in their editors. If your team is Claude-native, flip the recommendation.
Building from the raw model API is the option I wasted a weekend on. You will write your own thread store, your own tool dispatcher, your own sandbox, your own plugin format, and a month later you will have a worse Codex. Do this only if your requirements are weird enough that the harness is in your way.
What I actually shipped
The concrete embed is a code-review bot that lives inside our internal admin panel. When a PR is opened against our main monorepo, the panel calls startThread with the repo path and tags the thread with the PR number. The first run installs a small set of plugins from the marketplace — our linter, a database migration checker, and a Linear bridge over MCP — into a sticky environment. That environment survives across runs, which matters more than I expected: warm node_modules, warm type-check cache, warm git index. A second push to the same PR resumes the thread by ID instead of starting cold, so the model has the entire prior review in working memory and only re-reads the diff.
The MCP exposure is what closes the loop. The same App Server is registered as an MCP server in our team's editor configs, so when an engineer asks "what did the bot flag on PR #482 and why," their editor's agent talks to the same Codex instance, resumes the same thread, and answers from the actual review state — not a summary, not a copy. One runtime, many clients.
Plans-wise, the App Server is available on ChatGPT Plus, Pro, Business, Edu, and Enterprise; the pricing page has the current breakdown and is worth checking before you commit to a deployment shape.
npm i -g @openai/codex
or brew install --cask codex
Codex CLI is a coding agent from OpenAI that runs locally on your computer
If you want Codex in your code editor (VS Code, Cursor, Windsurf), install in your IDE.
If you want the desktop app experience, run
codex app or visit the Codex App page
If you are looking for the cloud-based agent from OpenAI, Codex Web, go to chatgpt.com/codex
Quickstart
Installing and running Codex CLI
Install globally with your preferred package manager:
# Install using npm
npm install -g @openai/codex
# Install using Homebrew
brew install --cask codex
Then simply run codex to get started.
You can also go to the latest GitHub Release and download the appropriate binary for your platform.
Each GitHub Release contains many executables, but in practice, you likely want one of these:
- macOS
- Apple Silicon/arm64:
codex-aarch64-apple-darwin.tar.gz - x86_64 (older Mac hardware):
codex-x86_64-apple-darwin.tar.gz
- Apple Silicon/arm64:
- …
The bigger shift
Step back from the SDK for a second. What OpenAI did this month is reclassify Codex. It used to be a product. It is now a runtime, the way Postgres is a runtime — something you mount, address, and let multiple clients talk to. The CLI is a psql. The desktop app is a pgAdmin. Your product is whatever you build against the wire protocol. Treating agents as long-lived processes with addressable state, plugin surfaces, and cross-client exposure is going to feel obvious in a year. It does not yet, which is why this is the moment to build on it.
What does your stack look like when the agent is a service your other agents call, instead of a window your users open?
Codex stopped being a tool you use and became a runtime you mount — agent runtimes are turning into infrastructure primitives, like databases.
Sources:
- https://openai.com/index/unlocking-the-codex-harness/
- https://developers.openai.com/codex/sdk
- https://developers.openai.com/codex/guides/agents-sdk
- https://developers.openai.com/codex/changelog
- https://openai.com/index/codex-now-generally-available/
- https://developers.openai.com/codex/cli
- https://developers.openai.com/codex/pricing

Top comments (0)