cd /news/ai-agents/show-hn-ecx-my-claude-code-and-codex… · home › topics › ai-agents › article
[ARTICLE · art-165370] src=github.com ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

Show HN: ECX – My Claude Code and Codex setup, where both agents share memory

Developer Saksham Arora released ECX, an open-source setup that gives Anthropic's Claude Code and OpenAI's Codex a single shared memory so either agent can see the other's latest messages, with cross-agent updates propagating in under 0.1 seconds. The repository ships 18 skills, 21 hooks, 3 search engines (ChromaDB for meaning, a LightRAG graph for relationships, and CLIP for images), 16+ health checks and 27 tests, and installs via a git clone and ./install.sh that asks two questions and backs up every settings file it touches. Arora says the setup was built and used daily for 6 months and backs 37 shipped projects.

read9 min views7 publishedNov 6, 2026
Show HN: ECX – My Claude Code and Codex setup, where both agents share memory
Image: Michielbdejong (auto-discovered)

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: blocksrm -rf ~ , disk formats and fork bombs; asks before force-pushes,reset --hard andDROP TABLE .
  • AI-tell guard: after you write incontent/ 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/file at 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.

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):

  1. Create skills/<name>/SKILL.md . Copy the frontmatter fromskills/boot/SKILL.md : aname , and adescription listing the phrases that trigger it.
  2. Write the steps the agent should follow and the exact output format.
  3. 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.

── more in #ai-agents 4 stories · sorted by recency
── more on @ecx 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-ecx-my-claud…] indexed:0 read:9min 2026-11-06 · —