Fable usage adds up very quickly: I usually hit the weekly limit about halfway through the week, and continuing with usage credits costs about A$500 a day, so running OpenCairn through Codex on a ChatGPT subscription is much cheaper.

OpenCairn was designed to be portable: the vault is Markdown, the scripts are Bash, and the skills are prose instructions. The Codex rendering uses the same canonical vault as Claude Code. I spent half a day porting it to Codex and adding it to the OpenCairn repo; the setup below uses that finished port and should take a few minutes.


What carries across

Claude Code and Codex keep separate chat histories, while durable state stays in the vault.

ConcernClaude CodeCodex
VaultThe OpenCairn vaultThe same vault
Global instructionsCLAUDE.md~/.codex/AGENTS.md
Skills/pickup, /park$pickup, $park
Vault writeslocked-edit.shlocked-edit.sh
Session IDCLAUDE_CODE_SESSION_IDCODEX_THREAD_ID
Transcript exportClaude session storeClaude and Codex session stores

The Codex skills live under codex/skills/ in the OpenCairn repo. OpenCairn maps CODEX_THREAD_ID to its session records, passes OPENCAIRN_SESSION_ID to writing sub-agents, and exports transcripts from both harnesses.


Install Codex

Install the CLI and sign in:

curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex login
codex login status

Set up OpenCairn through the main setup guide and export VAULT_PATH in your shell profile:

export VAULT_PATH="$HOME/Files"
"$VAULT_PATH/.claude/scripts/resolve-vault.sh"

The resolver must print the vault path before you continue.


Install OpenCairn for Codex

From the OpenCairn vault root:

cd "$VAULT_PATH"
mkdir -p "$HOME/.codex/skills"
cp -R codex/skills/. "$HOME/.codex/skills/"

If you do not have global Codex instructions yet:

mkdir -p "$HOME/.codex"
cp codex/AGENTS.md "$HOME/.codex/AGENTS.md"

If ~/.codex/AGENTS.md already exists, compare the files and merge the OpenCairn block once:

diff -u "$HOME/.codex/AGENTS.md" codex/AGENTS.md

Keep any personal instructions already in the live file. Restart Codex after editing it. If the OpenCairn rules do not load, check for ~/.codex/AGENTS.override.md, which replaces the ordinary global file when it is non-empty.


Add the codexyolo launcher

I use ~/.local/bin/codexyolo to run Codex without approval prompts or sandboxing, which gives it unrestricted access to the machine. Create ~/.local/bin if needed, then save this script as ~/.local/bin/codexyolo:

mkdir -p "$HOME/.local/bin"
#!/usr/bin/env bash
set -euo pipefail

if [[ "${1:-}" == "exec" || "${1:-}" == "e" ]]; then
    sub="$1"
    shift
    exec codex "$sub" --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox "$@"
fi

exec codex --dangerously-bypass-approvals-and-sandbox "$@"

Make it executable:

chmod +x "$HOME/.local/bin/codexyolo"

codexyolo starts the interactive TUI. codexyolo exec and codexyolo e run non-interactively and add --skip-git-repo-check, which allows codex exec to run outside a Git repository. The wrapper inherits the model and reasoning effort from ~/.codex/config.toml.


Check the install

Start Codex from the vault root:

cd "$VAULT_PATH"
codex

Give it a disposable write without naming the locking script:

Create a disposable note at 00 Inbox/Codex lock smoke test.md containing the word pass. Follow the loaded vault-write rules.

A correct run resolves the vault and invokes locked-edit.sh; a direct apply_patch, shell redirection, or editor write inside the vault means the global instructions did not load.

Then run:

$pickup
$park

$pickup should read the current project state, while $park should update the relevant vault records and export the transcript.


Keep it updated

Run /update in Claude Code. It includes the repository’s codex/ tree and can copy accepted skill changes into ~/.codex/skills/. Changes to codex/AGENTS.md remain a manual merge because the live file may contain personal instructions.

From Codex, compare the repository and live skill trees before copying changed files:

diff -qr -x .system -x '.*.lock' codex/skills "$HOME/.codex/skills"

Current gaps

  • The shared transcript exporter supports both harnesses. Other Claude-specific session-forensics skills have not been ported.
  • Hooks such as spelling normalisation and the file-size guard are beta.