Skip to main content

Port your session between coding agents — Claude Code, Codex, Grok Build — and just resume where you left off.

Project description

seshport

crates.io License: MIT Built with Rust Works with GitHub stars

Port your session between coding agents. Type /seshport inside Claude Code or Codex, open the other agent, and resume the exact same conversation — full context included.

By Harshil-Jani · MIT

Demo

seshport demo — porting sessions between Claude Code and Codex

A Codex session's haiku, recited by Claude Code after the port. A Claude Code session's fizzbuzz, recalled by Codex. Real recording, synthetic sessions — nothing staged.

Install

One line — installs the binary and the /seshport slash command for both agents:

curl -fsSL https://raw.githubusercontent.com/Harshil-Jani/seshport/main/install.sh | sh

Or grab just the binary from wherever you live:

npm i -g seshport                        # Node
pip install seshport                     # Python
cargo install seshport                   # Rust
brew install harshil-jani/tap/seshport   # Homebrew

Then copy commands/ into ~/.claude/commands/ and ~/.codex/prompts/ for the /seshport slash command. Prebuilt binaries for mac (arm/x64), linux (arm/x64), and windows are on Releases.

The easy way: /seshport

Never leave your agent. Mid-conversation, just type:

/seshport
  • Inside Claude Code → replies with codex resume <id>
  • Inside Codex → replies with cd <project> && claude --resume <id>

Open the other agent, paste, and continue the exact same conversation. Verified: a codeword planted in a Claude Code session was recalled by Codex after a /seshport round-trip.

CLI usage

The source tool is always auto-detected; name the target (or omit it when only one target is possible).

seshport <session-id> <tool>   # port any session to any tool (claude | codex | grok)
seshport <session-id>          # auto: found in any tool, only one possible target
seshport <path.jsonl> <tool>   # format detected from file content
seshport claude codex          # newest Claude Code session -> Codex
seshport grok claude           # newest Grok Build session -> Claude Code

Each run prints the output path and the exact resume command:

$ seshport codex
/Users/you/.claude/projects/-your-project/1b2c3d4e-....jsonl
resume with:  cd /your/project && claude --resume 1b2c3d4e-...

Want to try without touching your real sessions? The demo transcripts from the GIF are in demo/:

seshport demo/codex-session.jsonl claude          # -> claude --resume <id>
seshport demo/claude-session.jsonl grok           # -> grok --resume <id>
seshport demo/grok-session/chat_history.jsonl codex   # -> codex resume <id>

Architecture

seshport architecture — sessions flow through a neutral Transcript; each agent is one Tool impl

Every agent is one implementation of the Tool trait against a neutral Transcript — so N tools cost 2·N converters instead of N². The diagram is editable: open docs/architecture.excalidraw at excalidraw.com.

How it works

  • User and assistant messages transfer as-is into a neutral Transcript.
  • Tool calls/results are flattened to readable text ([tool call: Bash] ...) — provider-specific API state (tool-call ids, encrypted reasoning) can't be replayed cross-provider, but the resumed agent gets the full story as context.
  • Thinking/reasoning blocks are dropped (provider-internal).
  • Codex output borrows base_instructions from your newest real rollout — ChatGPT-auth Codex rejects sessions without the official instructions.
  • Every import starts with an attribution message noting the source session and this tool.

Add your editor — PRs welcome

Every integration is one Tool impl (five methods) plus a demo fixture — see CONTRIBUTING.md for the step-by-step guide, and PR #1 (Grok Build) for a worked example you can copy.

License

MIT © Harshil Jani

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

seshport-0.3.0-py3-none-win_amd64.whl (211.6 kB view details)

Uploaded Python 3Windows x86-64

seshport-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (317.3 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

seshport-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (301.9 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

seshport-0.3.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (573.5 kB view details)

Uploaded Python 3macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file seshport-0.3.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: seshport-0.3.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 211.6 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for seshport-0.3.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a24d4a151055e72d0a49bc7b9218fc987d48149c01d64fb2cec01cc7a0d09da7
MD5 e0789d512f2f44818f58f2e7f45d7406
BLAKE2b-256 dc9e3d1cac8dc5f239982e5c6c356a7bc728e5cc22928367f9802656c0ba8cdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for seshport-0.3.0-py3-none-win_amd64.whl:

Publisher: release.yml on Harshil-Jani/seshport

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file seshport-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for seshport-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c6ea20b3b9777fb4b5b914e3ca1599c0f960ff21b7ec6741bcdec93763df980b
MD5 ed9151e634f9f9e9ee6dd53f7a14e98d
BLAKE2b-256 aa50ceb816b6a1bf40e3b254daced60c69adf138d56cfd8d8190b5f9492e673e

See more details on using hashes here.

Provenance

The following attestation bundles were made for seshport-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on Harshil-Jani/seshport

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file seshport-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for seshport-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2b6333eb3fe79e0678fbdc5d7d1ade20108baeff718edba2322486692fb35a6a
MD5 d99091b1b062d36b0ea535bb4b255d56
BLAKE2b-256 1fda1fc8d5665b09d9952efbd3a37f7097306371df791cfb767aec06fe4644ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for seshport-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on Harshil-Jani/seshport

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file seshport-0.3.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for seshport-0.3.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 ff4a43fa2696c9ef41d9f2804727ad4b25d5339e50e9a9ebaec538248991153b
MD5 f809108eefbc8bcf1ad96bafefdfa02e
BLAKE2b-256 23b5eb9bcfee37f7e1b32c7946266f5dbc6a13b75b329eff13c09b8ba1587286

See more details on using hashes here.

Provenance

The following attestation bundles were made for seshport-0.3.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:

Publisher: release.yml on Harshil-Jani/seshport

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page