This repository has been archived on 2026-10-29. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Epiphany/vendor/codex/codex-rs/stdio-to-uds
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-04-23 23:20:16 +01:00
..
src Vendor Codex and land Phase 1 Epiphany state slice 2026-04-23 23:20:16 +01:00
tests Vendor Codex and land Phase 1 Epiphany state slice 2026-04-23 23:20:16 +01:00
BUILD.bazel Vendor Codex and land Phase 1 Epiphany state slice 2026-04-23 23:20:16 +01:00
Cargo.toml Vendor Codex and land Phase 1 Epiphany state slice 2026-04-23 23:20:16 +01:00
README.md Vendor Codex and land Phase 1 Epiphany state slice 2026-04-23 23:20:16 +01:00

codex-stdio-to-uds

Traditionally, there are two transport mechanisms for an MCP server: stdio and HTTP.

This crate helps enable a third, which is UNIX domain socket, because it has the advantages that:

  • The UDS can be attached to long-running process, like an HTTP server.
  • The UDS can leverage UNIX file permissions to restrict access.

To that end, this crate provides an adapter between a UDS and stdio. The idea is that someone could start an MCP server that communicates over /tmp/mcp.sock. Then the user could specify this on the fly like so:

codex --config mcp_servers.example={command="codex-stdio-to-uds",args=["/tmp/mcp.sock"]}

Unfortunately, the Rust standard library does not provide support for UNIX domain sockets on Windows today even though support was added in October 2018 in Windows 10:

https://github.com/rust-lang/rust/issues/56533

As a workaround, this crate uses codex-uds, which provides a cross-platform async UDS API backed by https://crates.io/crates/uds_windows on Windows.