DEV Community

Aziz Masmoudi
Aziz Masmoudi

Posted on

sessionport – an open system for porting AI coding sessions between tools (Claude Code, OpenCode, Codex so far). Looking for help extending it.

I built sessionport because I kept switching between Claude Code, OpenCode, and Codex depending on the task, and every time I lost the session — flattened into a dumb transcript at best, gone at worst.

It works by parsing each tool's native session format (Claude's JSONL, OpenCode's SQLite, Codex's rollout JSONL) into a shared intermediate representation — Session → Message[] → Part — then rendering that back out as another tool's format, markdown, JSON, or a "seed" handoff prompt.

npx sessionport                  # interactive wizard
Enter fullscreen mode Exit fullscreen mode

sessionport
or
sessionport export claude --to markdown
sessionport import claude opencode

Three providers are supported right now, but that's really just the start. The whole point of the IR design is that adding a new provider is just a reader (parse their format into the IR) + an importer (write the IR into their format) — you don't touch anything else. I'd like this to eventually cover most of the AI coding tools people actually use day to day: Cursor, Windsurf, Cline, Aider, Gemini CLI, whatever else people are running.

If you use a tool that isn't supported yet and know its session/storage format, I could really use help writing a reader/importer pair for it — that's the fastest way to grow this into something genuinely useful across the ecosystem instead of a Claude-Code-specific hack. Also open to input on the IR itself if anyone sees gaps in how it models sessions.

GitHub: https://github.com/azizmass/sessionport

Happy to walk anyone through the reader/importer interface if you want to take on a provider.

Top comments (0)