Most people end up repeating the same setup in every repo: prompts, memory notes, and run habits. This project gives you one stable Codex workflow you can reuse across projects. It keeps your local project state separate, supports optional cross-project context, and gives you a thin CLI so you can move faster without losing control.
Codex-OS is a Codex-native operating layer made of markdown rules + a thin runner. It does not replace Codex. It standardizes how Codex behaves in your repos.
Claude Code is also supported through a parallel thin runner and instruction layer, with a user-selectable memory mode.
- Live site: https://rotsl.github.io/codex-os/
- UI source:
docs/index.html - Output rendering is type-aware:
- plain text renders directly
- code, markdown, JSON, and table-like content render as labeled artifacts
- Codex OS: https://chatgpt.com/g/g-69bb21d374f08191ba1f8211c950678a-codex-os
- A minimal, Codex-style engineering assistant with browsing, session context, and plugin-style roles. Based on Codex OS (minimal version of this repo).
Back up your current Codex folder first.
cp -R ~/.codex ~/.codex.backup.$(date +%Y%m%d%H%M%S)Why: install links your global loader and system path. Backup gives you a fast rollback.
From this repo root:
./install.shFor Claude Code, use the separate installer:
./installclaude.shWhat install wires:
~/.codex/system -> <this repo>(symlink)~/.local/bin/ro -> ~/.codex/system/ro~/.local/bin/codexshim when Codex binary is discoverable~/.codex/AGENTS.md -> ~/.codex/system/AGENTS.md- creates missing
~/.codex/config.toml(if absent) - creates missing
~/.codex/system/plugins/ - creates missing
~/.codex/system/plugin-registry.json
What installclaude.sh wires:
~/.codex/system -> <this repo>(shared system root)~/.local/bin/ro-claude -> ~/.codex/system/ro-claude~/.claude/CLAUDE.md -> ~/.codex/system/claude/CLAUDE.md~/.claude/agents/*.md -> ~/.codex/system/claude/agents/*.md
- Codex loads
~/.codex/AGENTS.mdfrom your global config. - That file is symlinked to this repo’s
AGENTS.md. - In any project,
AGENTS.mdcan extend local rules. rorunscodex execwith project-aware prompt shaping, memory handling, plugin loading, and bounded retries.- New repos auto-bootstrap on first
rorun:AGENTS.mdmemory/context.mdmemory/decisions.md
- Claude Code loads
~/.claude/CLAUDE.md. - That file is symlinked to this repo’s Claude layer at
claude/CLAUDE.md. - Claude subagents are linked from
claude/agents/*.mdinto~/.claude/agents/. ro-clauderunsclaude -pwith project-aware prompt shaping.- it uses the process working directory plus
--add-dir <project-root>for workspace access
- it uses the process working directory plus
- The user chooses memory mode:
--memory-mode auto: useCLAUDE.mdand Claude Code auto-memory--memory-mode deterministic: usememory/context.mdandmemory/decisions.mdas the deterministic store
- New repos auto-bootstrap on first
ro-clauderun:CLAUDE.mdmemory/context.mdandmemory/decisions.mdonly in deterministic mode
Claude CLI prerequisite:
ro-claudeassumes the local Claude CLI is already authenticated- if not, the live invocation fails with
Not logged in · Please run /login
cd /path/to/project
ro "build login API"Claude:
cd /path/to/project
ro-claude --memory-mode deterministic "build login API"cd /path/to/project
source .venv/bin/activate
ro "run tests and fix failures"Notes:
ronow resolvescodexeven when your venv PATH does not expose it.- If needed, force binary path:
export RO_CODEX_BIN="/absolute/path/to/codex"cd /path/to/project
ro "refactor auth middleware"cd /path/to/project
source .venv/bin/activate
ro "check no of files in data/raw/06-FEB_WT_PCBM_SUB"In the chat box, write the task directly:
check no of files in data/raw/06-FEB_WT_PCBM_SUB
You can also type command-style text:
ro "check dataset counts"
In chat, that is treated as task intent, not a shell command call.
ro "task"
ro build "task"
ro write "task"
ro analyze "task"
ro --plugin sql-helper "optimize query"
ro --context ../other-repo "reuse approach"
ro --share ../other-repo "reuse logic safely"
ro-claude --memory-mode auto "task"
ro-claude --memory-mode deterministic "task"
ro-claude build "task"
ro-claude write "task"
ro-claude analyze "task"Interactive mode:
ro
# ro > build API
# ro > write client update
# ro > exitA packaged wrapper is available in codexospackage/.
Global install with auto bootstrap:
npm install -g ./codexospackageThis install now auto-clones https://github.com/rotsl/codex-os to ~/.codex/codex-os (if missing) and runs install.sh.
Use it:
codexos install
codexos install-claude
codexos ro "build login API"
codexos claude --memory-mode auto "review this project"
codexos doctorOptional:
- skip auto bootstrap at install time with
CODEXOS_SKIP_POSTINSTALL=1 - install from a specific local clone with
codexos install --repo /absolute/path/to/codex-os
Package files:
codexospackage/package.jsoncodexospackage/bin/codexos.jscodexospackage/bin/postinstall.jscodexospackage/README.mdcodexospackage/LICENSE
ro plugin install sql-helper
ro plugin install https://github.com/user/repo
ro plugin list
ro plugin remove sql-helperGlobal registry:
~/.codex/system/plugin-registry.json
Plugin contract:
- each plugin must provide
SKILL.md - plugin content is guidance only; no runtime code execution from plugin repos
Project-local by default:
.ro_history.jsonmemory/context.mdmemory/decisions.md
Claude memory mode choice:
auto: rely onCLAUDE.mdplus Claude Code auto-memorydeterministic: rely onmemory/context.mdandmemory/decisions.md, loaded explicitly byro-claude- set default with
RO_CLAUDE_MEMORY_MODE=autoorRO_CLAUDE_MEMORY_MODE=deterministic
Optional shared context:
--contextreads summary from another local repo (on demand)--sharewrites isolatedmemory/shared_<hash>.mdfiles- no automatic cross-project memory merge
Optional global memory:
~/.codex/global_memory.md- loaded as small snippet, never overriding project memory
AGENTS.md: main orchestrator and mode contracts.ro: thin CLI wrapper aroundcodex exec.ro-claude: thin CLI wrapper aroundclaude -pwith selectable memory mode.install.sh: global setup and wiring script.installclaude.sh: Claude-only setup and wiring script.README.md: user guide.LICENSE: license terms..gitignore: repo hygiene.docs/index.html: GitHub Pages frontend UI.docs/.nojekyll: prevents Jekyll processing on Pages.plugin-registry.json: default plugin registry seed.claude/: Claude Code global instructions and subagents.
planner.md: compact planning behavior.architect.md: structure and tradeoff rules.builder.md: implementation behavior for coding tasks.reviewer.md: quality checks and risk review.writer.md: prose generation/editing behavior.
reasoning.md: deep reasoning when complexity justifies it.structure.md: compressed structure and decomposition.completion.md: finish-until-done behavior with safe stop conditions.notai.md: human prose cleanup rules; never applied to code outputs.
workflow.md: execution loop and mode-independent process rules.token-efficiency.md: compression and context minimization rules.memory.md: what to load, store, and prune in memory.
autoload.md: autoload expectations.loading.md: context loading order.repository-classification.md: repo/task-type classification notes.summarization.md: summarization policy.
context.md: current project state only.decisions.md: durable decisions only.shared_<hash>.md: optional explicit shared-context snapshots.
plugins/<name>/SKILL.md: optional project-local plugin skills.
If you want to undo installation:
rm -f ~/.codex/system
rm -f ~/.codex/AGENTS.md
rm -f ~/.local/bin/ro
rm -f ~/.local/bin/codex
mv ~/.codex.backup.<timestamp> ~/.codex- Initial GitHub release:
v0.0.1. - Added Codex-OS orchestrator, agents, skills, rules, contexts, and memory system.
- Added
roCLI with project-aware routing, bounded recovery, context/share support, and plugin loading. - Added
codexospackagenpm wrapper with install/bootstrap and doctor commands.
- Keep rules in rules/ and skills in skills/; avoid duplication.
- Keep memory short and current.
- Use
--contextand--shareonly when you need external project context. ro-claude: thin CLI wrapper aroundclaude -pwith selectable memory mode.- live-tested against a local Claude CLI that supports
-pand--append-system-promptbut not--cwd. - Use chat for direct tasks; use
rowhen you want repeatable command workflows.