Real, unedited. A codeword told to Codex by voice. A minute later Claude knows it, without reading a single file.
Claude Code and Codex, working as one team. Two agents from two different labs share one memory and see each other's latest messages, so you can start a task in one and finish it in the other without explaining anything twice. Around that team: every session starts already knowing you, your notes are searchable by meaning, the setup checks its own tools before they break, and it keeps working from your phone with your laptop shut.
Not a skills pack. It runs alongside packs like Superpowers instead of replacing them.
Built and battle-tested every day for 6 months by @nerfsaksham, 3x hackathon winner. It's the setup behind 37 shipped projects. Install it in 30 seconds.
you talk to either agent -> both remember -> your notes answer -> your phone keeps going
| Included | Count | What it gives you |
|---|---|---|
| Skills | 18 | /boot ,/daily ,/weekly ,/catchup ,/opps ,/outreach ,/content ,/ship ,/video-notes ,/wiki and more |
| Hooks | 21 | Memory , tests before "done", a health check at every session start, a working danger guard, MCP health checks, AI-tell guard |
| Search engines | 3 | By meaning (ChromaDB), by relationship (LightRAG graph), by image (CLIP over your slides and screenshots) |
| Agents, one memory | 2 | Claude Code and Codex read the same memory and see each other's latest messages |
| Phone access | 1 repo | Your private GitHub repo is the bridge. No server, no new app |
| Health checks | 16+ | doctor checks every part at the start of every session and tells you the exact fix |
| Tests | 27 | Hooks, installer and doctor tested against the real Claude Code payload, on macOS and Linux |
git clone https://github.com/saksham10arora-dotcom/everything-claude-codex ~/ecx
cd ~/ecx && ./install.sh
It asks two questions (where your notes live, your first name) and wires everything in. It's safe to re-run, never overwrites your files, and backs up every settings file it touches.
Want the full stack?
./install.sh --vault ~/vault --name Ada --with-search --with-cron --with-phone
Then open Claude Code in your vault and type /boot.
| Most setups | ECX | |
|---|---|---|
| Tell Codex something by voice, then ask Claude | Claude has no idea | Claude already knows. Every message, both directions, under 0.1 s |
| Ask your notes a question from your phone, laptop shut | Not possible | Works. Captures you dictate land in your vault |
| "Find the slide with the gradient descent diagram" | Grep for words | Search images by describing them, and jump to the note they're in |
| Continue a chat from another Claude window | Start over | /catchup reads the other session in full |
| A tool your agent depends on silently dies | Wasted turns, empty answers | Blocked before the call, with the exact fix |
| Your nightly index stops updating | You find out months later | Your next session opens with a warning and when it last updated |
| The agent says "done" but the tests fail | You find out later | It can't stop until your tests pass. Claude Code and Codex both get sent back with the failing output |
rm -rf ~ |
Most guards read a variable Claude Code never sets, so they block nothing | Blocked. Tested against the real hook payload |
| Without | With ECX |
|---|---|
| Every session starts from zero | hot.md + memory load before your first message |
| Claude and Codex are strangers | They share memory and message each other directly |
| Your knowledge is scattered across notes, PDFs, slides | One vault, three search engines, every night re-indexed |
| You find out a tool broke when it's too late | Health checks before every call, doctor for everything |
| Your AI writes like an AI | The AI-tell guard flags it before you publish |
| Ideas from your phone get lost | One voice note, one file in inbox/ , filed on your laptop automatically |
everything-claude-codex/
|-- agent-sync/ Claude <-> Codex: each sees the other's newest messages, plus agent-to-agent mail
|-- skills/ 18 skills: boot, daily, weekly, catchup, opps, outreach, email, content, brand, resume,
| money, project, summary, ship, tldr, wiki, wiki-health, video-notes
|-- hooks/ tests before done, guard, MCP health, session memory, inbox, archive, AI-tell guard, usage
|-- vault-search/ 3 MCP servers (meaning, graph, router) + image search + nightly indexers
|-- phone-vault/ after-every-reply GitHub sync, phone capture auto-merge, cloud boot rules
|-- memory/ keeps hot.md current after every /compact
|-- watch-notes/ video -> key frames + transcript, for /video-notes
|-- statusline/ context bar + unread mail from Codex
|-- templates/ CLAUDE.md, AGENTS.md (Codex boots knowing what Claude knows), hot.md
|-- scripts/ install.py, doctor.py
`-- tests/ 27 tests, macOS + Linux, Python 3.9 to 3.12
php
flowchart LR
you((You)) -- types --> CC[Claude Code]
you -- talks --> CX[Codex + voice]
CC <-- agent-sync: newest messages + mail --> CX
CC & CX -- boot from --> M[(hot.md + memory)]
CC & CX -- MCP --> S[Vault search: meaning, graph, images]
M & V[(Your vault)] -- sync after every reply --> GH[(Private GitHub repo)]
phone((Phone, laptop shut)) -- Claude app / ChatGPT app --> GH
hot.md holds what's true right now: deadlines, projects, hard rules. A hook loads it, plus your last sessions, before your first message. After every /compact, it's refreshed automatically. Codex reads the exact same files through AGENTS.md, so it knows what Claude knows.
Before every message, a hook hands each agent the newest lines of the other's chats, Codex voice transcripts included. Local, one Python file, stdlib only. They can also mail each other directly (sync.py send), and you get a readable log in agents/AGENT_CHAT.md.
- By meaning: "notes about latency" finds them even if the word never appears.
- By relationship: "how does my engine relate to my competition strategy" walks a knowledge graph.
- By image: "the slide with the architecture diagram" searches your slides, screenshots and PDF pages, and tells you which note each one lives in.
A router picks the right one. All of it re-indexes every night.
After every reply, your notes and a copy of your memory sync to your private GitHub repo. On your phone, Claude (Claude app) and Codex (ChatGPT app) work on that repo in the cloud. Say "I met Adi, he's at X": one note lands in inbox/, a GitHub Action merges it, and Claude files it next time you open your laptop.
- Tests before done: when Claude Code or Codex tries to finish, your tests run first. If they fail, the agent is sent back with the failing output and has to fix it. It runs only when something changed, finds npm, pytest, unittest, cargo, go and make tests on its own, and gives up after 3 tries instead of looping. Set the command per repo in
.ecx/test-command(oroff). - Danger guard: blocks
rm -rf ~, disk formats and fork bombs; asks before force-pushes,reset --hardandDROP TABLE. - AI-tell guard: after you write in
content/orpersonal/, warns about the em dash and the AI phrases inhooks/ai_tells.txt(delve,tapestry, "it's not just…"). Phrases match whole words, ignoring case and curly apostrophes; common phrases can still fire on human prose, so trim the list if they do. Edit that list, or pointECX_AI_TELLS=/path/to/fileat your own. It warns and never blocks. - MCP health: refuses to call a server whose dependency is down (and tells you the fix) instead of letting it return empty answers.
- doctor: 16+ checks across hooks, indexes, jobs and sync. It also runs at the start of every Claude Code and Codex session: silent when everything is healthy, a short warning with the fix (and the index's last update time) when not.
/boot gives you a 30-second briefing. /daily starts the day. /opps is your opportunity pipeline with eligibility checks. /outreach and /email handle networking with a paper trail. /content and /brand are a content machine in your voice. /catchup continues another window's chat. /ship commits, pushes and proves it.
- The longform guide: how the whole system was built, what broke, and why.
- agent-sync deep dive
ECX plays well with these (not bundled, all worth installing): superpowers (planning, TDD, debugging workflows), remember (session summaries; ECX triggers it after every reply), reference by Kuber (search each agent's full history), graphify (knowledge graph of a codebase), claude-video (watch any video).
Is my data sent anywhere? Memory, hooks, agent-sync and search by meaning and image run entirely on your machine. Phone mode pushes only to a GitHub repo you own (keep it private). The relationship graph uses Ollama; its default model runs on Ollama's free cloud, so note text is sent there while indexing. Set ECX_LLM_MODEL to a local model to keep everything on your laptop.
Do I need Codex? No. Everything except agent-sync works with Claude Code alone.
Does it overwrite my config? Never. It merges, skips anything already there, and saves a .ecx-bak copy first.
How do I remove it? Restore the .ecx-bak files and delete the skill links in ~/.claude/skills.
New here? Start with an issue labelled good first issue. Each one names the exact files to touch.
Add a skill (no code needed):
- Create
skills/<name>/SKILL.md. Copy the frontmatter fromskills/boot/SKILL.md: aname, and adescriptionlisting the phrases that trigger it. - Write the steps the agent should follow and the exact output format.
- Re-run
./install.sh. It links every folder inskills/, so your skill shows up in Claude Code and Codex right away.
Add or change a hook: hooks live in hooks/ and are registered in scripts/install.py (add_hooks(...)). A hook must never crash or block by accident: catch errors and exit 0.
Before you open a PR:
python -m unittest discover -s tests -v
CI runs the same command on macOS and Linux, Python 3.9 and 3.12. Add a test for anything you change in hooks/ or scripts/. One change per PR.
Got a skill or hook in your own setup that others would want? Share it in Discussions. The best ones get merged in, with credit.
MIT. Take it, fork it, make it yours. If it saves you time, a star helps other people find it.