core-agent-ide/codex-rs
Michael Bolin 21cd953dbd
feat: introduce mcp-server crate (#792)
This introduces the `mcp-server` crate, which contains a barebones MCP
server that provides an `echo` tool that echoes the user's request back
to them.

To test it out, I launched
[modelcontextprotocol/inspector](https://github.com/modelcontextprotocol/inspector)
like so:

```
mcp-server$ npx @modelcontextprotocol/inspector cargo run --
```

and opened up `http://127.0.0.1:6274` in my browser:


![image](https://github.com/user-attachments/assets/83fc55d4-25c2-4497-80cd-e9702283ff93)

I also had to make a small fix to `mcp-types`, adding
`#[serde(untagged)]` to a number of `enum`s.
2025-05-02 17:25:58 -07:00
..
ansi-escape feat: initial import of Rust implementation of Codex CLI in codex-rs/ (#629) 2025-04-24 13:31:40 -07:00
apply-patch fix: eliminate runtime dependency on patch(1) for apply_patch (#718) 2025-04-28 21:15:41 -07:00
cli chore: remove the REPL crate/subcommand (#754) 2025-04-30 10:15:50 -07:00
core feat: bring back -s option to specify sandbox permissions (#739) 2025-04-29 18:42:52 -07:00
docs feat: initial import of Rust implementation of Codex CLI in codex-rs/ (#629) 2025-04-24 13:31:40 -07:00
exec feat: bring back -s option to specify sandbox permissions (#739) 2025-04-29 18:42:52 -07:00
execpolicy fix: small fixes so Codex compiles on Windows (#673) 2025-04-25 15:58:44 -07:00
mcp-server feat: introduce mcp-server crate (#792) 2025-05-02 17:25:58 -07:00
mcp-types feat: introduce mcp-server crate (#792) 2025-05-02 17:25:58 -07:00
scripts chore: script to create a Rust release (#759) 2025-04-30 12:39:03 -07:00
tui feat: bring back -s option to specify sandbox permissions (#739) 2025-04-29 18:42:52 -07:00
.gitignore feat: initial import of Rust implementation of Codex CLI in codex-rs/ (#629) 2025-04-24 13:31:40 -07:00
Cargo.lock feat: introduce mcp-server crate (#792) 2025-05-02 17:25:58 -07:00
Cargo.toml feat: introduce mcp-server crate (#792) 2025-05-02 17:25:58 -07:00
justfile chore: remove the REPL crate/subcommand (#754) 2025-04-30 10:15:50 -07:00
README.md chore: remove the REPL crate/subcommand (#754) 2025-04-30 10:15:50 -07:00
rustfmt.toml feat: initial import of Rust implementation of Codex CLI in codex-rs/ (#629) 2025-04-24 13:31:40 -07:00

codex-rs

April 24, 2025

Today, Codex CLI is written in TypeScript and requires Node.js 22+ to run it. For a number of users, this runtime requirement inhibits adoption: they would be better served by a standalone executable. As maintainers, we want Codex to run efficiently in a wide range of environments with minimal overhead. We also want to take advantage of operating system-specific APIs to provide better sandboxing, where possible.

To that end, we are moving forward with a Rust implementation of Codex CLI contained in this folder, which has the following benefits:

  • The CLI compiles to small, standalone, platform-specific binaries.
  • Can make direct, native calls to seccomp and landlock in order to support sandboxing on Linux.
  • No runtime garbage collection, resulting in lower memory consumption and better, more predictable performance.

Currently, the Rust implementation is materially behind the TypeScript implementation in functionality, so continue to use the TypeScript implmentation for the time being. We will publish native executables via GitHub Releases as soon as we feel the Rust version is usable.

Code Organization

This folder is the root of a Cargo workspace. It contains quite a bit of experimental code, but here are the key crates:

  • core/ contains the business logic for Codex. Ultimately, we hope this to be a library crate that is generally useful for building other Rust/native applications that use Codex.
  • exec/ "headless" CLI for use in automation.
  • tui/ CLI that launches a fullscreen TUI built with Ratatui.
  • cli/ CLI multitool that provides the aforementioned CLIs via subcommands.