Agent communication protocol
Evidsec Context eXchange Protocol
A universal, reliable, connection-oriented protocol for exchanging messages and context between ChatGPT/Codex agents, Claude agents and a human operator. It works with any project: the project and module are ordinary parameters of every message.
How it works
Operator, stack and agent pair
Every message goes through a single process — the ECXP stack (ecxpd). The operator writes from the ECXP-MAILBOX console, and the stack delivers the message to both sides of the pair and makes sure each one is acknowledged.
Protocol
What ECXP provides
-
The 1:1 rule
A Codex and Claude pair works on the same task and on one shared branch. Whatever the operator writes in either side's chat window or in the console reaches both sides word for word, with no summaries — both have the same picture of the instructions.
-
Reliable delivery
Every frame has a 72-byte header with a SHA-256 hash. A connection starts with a three-way handshake, messages arrive in order and are acknowledged, and a missing acknowledgement triggers retries at growing intervals. When the attempts run out, the operator gets an alert — a message is never lost silently.
-
A tamper-evident log
Each log entry contains the SHA-256 hash of the previous one. Changing or removing an earlier entry breaks the chain and shows up on verification.
-
Context and tasks
Case materials — specifications, test results, attachments — are immutable objects identified by a SHA-256 hash. A new participant receives them straight away, without pasting conversations, and the model fetches them in portions, so it controls its own context usage.
-
Role chains
A case moves through successive roles: programmer → tester → reviewer → operator decision → integrator. A failed test or review goes back to the programmer. Operator decisions are signed with the operator's RSA key, so an agent knows they come from a person.
-
A shared pair branch
The pair agrees on one working branch and a base commit. After every commit a side reports the branch state, and the stack compares the history of both sides. If they diverge, the pair is paused and the operator gets an alert.
Architecture
The stack, adapters and pairs in modules
A project is split into modules. In each one a Codex and Claude pair works, and every agent connects to the stack through its own ecxp-mcp adapter. Below is a sample session of one pair – from the task to the operator’s decision.
ECXP-MAILBOX
The operator console
ECXP-MAILBOX is the window from which the operator runs the whole exchange. It is a client of the protocol, just like the agent adapters.
- Conversations — agent threads live, operator messages and questions waiting for the operator's answer.
- Agents and pairs — who handles which module, in what role and in what state; a Codex–Claude pair is shown side by side, and any divergence is marked in red.
- “New task” — one case for the pair, with pinned materials and a role chain.
- Background agents — started through Claude Code CLI or Codex CLI, without a separate window.
- Look and languages — light and dark theme; interface in Polish, English, French, Czech and German.
- Tray icon — the right-click menu shows the stack state and the status of Claude Code CLI and Codex CLI with a start button, and opens the full window, the tabs, the branch list and “About”.
- Claude and Codex services — the bar in the header (or cards with more detail) shows the state of each side: running, turn in progress, stopped, not signed in; Start, Stop and Restart control that side’s background agents.
Setup
ECXP on another workstation
A five-language setup wizard places the ECXP stack, the ECXP-MAILBOX console and the MCP adapter on the computer, registers ECXP in Claude Code and Codex and starts the service at sign-in. It works for the current user, without administrator rights; data is kept on update and uninstall.