atheist
v0.0.10
Published
Ports your Agent sessions between harnesses.
Downloads
1,178
Readme
Atheist
TUI for humans, and CLI is for agents.
Ports your sessions between Claude Code, Codex, and OpenCode. I can port for more harnesses if anyone cares...
Why
Vendor lock-in; your work shouldn't be hostage.
Atheist ports in any direction between harnesses. It discovers every session on your machine, previews them, lets you pick, and re-runs are idempotent - nothing ever duplicates.
AutoSync - every harness current, all the time could be a goal.
Install
npm i -g atheist # CLI (or one-off: npx atheist)
bunx --bun atheist tui # the TUI needs the Bun runtimeUse
atheist # cli for agents
atheist tui # tui for humansThe CLI is built for agents and scripts: stdout is exactly one JSON document (result or structured error), progress streams to stderr as JSONL, exit codes are a contract (0 success, 1 operation failed, 2 usage error). atheist --help is the full self-describing manual, honest v1 fidelity limits included.
atheist detect # which harnesses exist here?
atheist list --from claude-code # ids, titles, sizes, ported-status
atheist port --from claude-code --to codex --id <sid>
atheist port --from claude-code --to opencode --all
atheist audit # validate old ledger claims, read-only
atheist update # check npm and update this installationFidelity
The vocabulary used throughout the product is:
- project — one canonical working directory (
cwd) - session — one harness session and the unit Atheist ports
- message — one retained text unit authored by the user or agent
- turn — one explicitly bounded interaction episode containing any number of messages; a full turn includes both user and agent participation, while open, closed, interrupted, and failed describe lifecycle independently
v1 carries text session messages only. Every successful port preserves the
exact ordered (role, text) sequence, including whitespace and newlines, and is
read back from the destination's native durable store before the central ledger
records success. Tool calls, tool results, thinking, files, and attachments are
excluded and counted rather than silently represented as text.
Codex-native turn membership and lifecycle are preserved. Claude Code and OpenCode currently expose no verified turn boundary in their supported durable formats, so Atheist records their turn structure as unknown instead of deriving boundaries from message roles or adjacency.
cwd is preserved. OpenCode preserves native titles; Claude Code and Codex derive
their displayed title because their durable session formats do not provide a
portable exact-title field. Destination timestamps may be derived to preserve message
order, while original OpenCode-bound timestamps are retained in provenance.
Ledger entries created before native validation are not trusted automatically.
atheist audit checks them without writing either store or the ledger and reports
an explicit port --force command for any record the user chooses to repair.
Telemetry
Your sessions never leave your machine — imports and exports are pure local file I/O. Atheist sends anonymous usage counters (command run, harness pair and outcome counts, wizard step reached, message totals, version, OS/arch, runtime, which harnesses are installed, coarse project/session totals, a random machine id). IP geolocation is disabled. Never sent: session content, file paths, project names, usernames, session ids.
Opt out with either:
export ATHEIST_TELEMETRY=0 # or the ecosystem-wide DO_NOT_TRACK=1Payloads are whitelisted in src/core/telemetry.ts — that file is the complete list of what can ever be sent.
Updates
The TUI checks npm at most once every 24 hours for the latest published version and displays an update action beside its current version when one is available. The request contains no session data. Disable automatic checks with:
export ATHEIST_UPDATE_CHECK=0 # DO_NOT_TRACK=1 also disables themRun atheist update at any time to check explicitly. Source checkouts and
global npm installations update automatically; other installation channels
return the exact command to run.
