Codex Explorer is a local Codex session manager. The cx
command indexes ~/.codex/sessions/**/*.jsonl
so you can search, preview, and resume old Codex sessions without remembering the exact date.
Codex Explorer is early, work-in-progress software. It is useful today, but the data model and interface are still evolving.
Codex Explorer is an independent project and is not affiliated with, endorsed by, or sponsored by OpenAI.
- Rust and Cargo
- The Codex CLI available as
codex
on yourPATH
forcx resume
- A terminal with TUI support
From this checkout:
cargo install --path . --locked
Cargo installs the cx
binary into ~/.cargo/bin
. Make sure that directory is on your PATH
, then verify the installed command:
cx --version
To reinstall from a newer checkout:
cargo install --path . --locked --force
From GitHub:
cargo install --git https://github.com/Tobiadefami/codex-explorer --locked
cx
cx reindex
cx list
cx search "turnstile worker"
cx show <session-id>
cx resume <session-id>
Run cx
without a command to open the terminal session browser. The browser opens immediately with cached sessions and refreshes the index in the background.
TUI keys:
- type to search
Backspace
edits searchUp
/Down
moves selectiona
shows all projectsp
returns to the current directoryPgUp
/PgDn
scrolls the previewEnter
resumes the selected sessionEsc
quitsq
quits when the search box is empty
cx
stores its search index in your platform data directory under cx/index.sqlite
. On Linux this is typically ~/.local/share/cx/index.sqlite
.
The index is local SQLite data. It contains session metadata, source file paths, titles, searchable text, and full user/assistant message text so cx show
, search, and previews work without reparsing every JSONL file each time. Treat this index as private local data, because Codex sessions may contain prompts, code, file paths, command output, and other sensitive project context. Use --db <PATH>
to write the index somewhere else.
cx
reads Codex session files from ~/.codex/sessions
by default. Use --sessions-dir <PATH>
to index a different directory.
Run tests:
cargo test
Run the full local check before opening a pull request:
cargo fmt --check
cargo test
cargo clippy --all-targets -- -D warnings
cargo package --allow-dirty --no-verify --offline
Run against fixture data:
cargo run -- --db /tmp/cx.sqlite --sessions-dir tests/fixtures reindex
cargo run -- --db /tmp/cx.sqlite search turnstile
MIT