Loading video...
Video Failed to Load
Introducing ๐จ๐๐จ๐จ๐๐ค๐ฃ-๐ข๐๐๐ง๐๐ฉ๐, a tool for migrating coding agent sessions across Claude Code, Codex, Pi, OpenCode, and more. If you started in Claude but ran of usage, you can now convert your session to another harness in one command:
30,709 views โข 1 month ago โขvia X (Twitter)
23 Comments

Don't want to use the CLI? Just ask your agent to do it: "Follow to migrate this session to {Codex, Pi, etc.}"

It current supports: @claudeai code, @openai codex, @pidotdev, @opencode, @MistralAI vibe, @antigravity, @GitHubCopilot cli, @cursor_ai agent (partial). Here's an example of Claude -> Pi. You can use models like @Kimi_Moonshot K3 or @Alibaba_Qwen 3.8 via @huggingface Inference.

Thanks Xing for creating this!

how has no one made a standard session format that is backed by a working group, just like the MCP

great, now i can burn through two subscriptions in one session

This is cool but how are you handling tool-call history? the old session is probably full of calls to tools the new harness might not have

Well done @xhluca - not a bad grade! All seven diagnostics ran in parallel and all seven reports are written to .code-dr/reports/. The repo scores well overall โ two A's and five B's โ and the striking thing is that nearly every B is caused by the same root cause rather than by messy code. ReportFileGrade Structure 01-structure.md A Security 02-security.md B Test health 03-testing.md B Deploy readiness 04-deployment.md B Code quality 05-quality.md B Performance 06-performance.md B Architecture diagrams 07-architecture-diagram.md A The one theme that explains most of the findings: there is no CI at all. There's no .github/ directory anywhere. Five of the six diagnostic agents independently flagged this, and it's why other problems have gone unnoticed โ Ruff is configured but never runs, 325 pytest cases exist but nothing gates a push, 15 high-severity npm advisories have accumulated in the website toolchain, and all 14 released PyPI tags were published by hand with no provenance or attestation. The quality tooling and the tests are already written; nothing is wired to them. The core Python CLI is genuinely well-built. Zero runtime dependencies (stdlib only), an acyclic reader โ portable timeline โ writer pipeline, fully parameterized SQL, 0600/0700 file modes with O_NOFOLLOW and symlink rejection, atomic no-clobber writes, timeouts on every subprocess and SQLite call, real forward schema migrations, zero TODO markers across 157 commits, and 100% parameter type annotations. No secrets appear in the working tree or in any commit. Three concrete issues worth acting on beyond CI: src/.../catalog.py is a 2,449-line god module, and its _scan_file() function has a cyclomatic complexity of 98 across 244 lines with 10 levels of nesting. Its eight per-format scanners duplicate layout knowledge the format adapters already own, so adding a ninth harness means edits in two places that can silently disagree. About 30.5 MB of the 31.8 MB in website/public is referenced by nothing โ demo GIFs and MP4s duplicated byte-for-byte from docs/assets, which is where the README actually serves them. The tracked repo is 66.6 MB and roughly 97% of that is this duplicated media. The suite can't be collected on Windows at all: tests/test_cursor_native.py:8 does a bare import fcntl, which aborts the entire run instead of skipping one module. On this host 194 tests passed and 121 failed, all for platform reasons (temp-file locks, POSIX mode assertions, path separators) rather than logic defects. A one-line pytest.importorskip fixes the abort. Two caveats on the numbers. Coverage came in at 71.5% statements, but the project ships no coverage tooling, so that was measured with a scratch sys.monitoring probe and is a hard lower bound โ the 121 platform failures never reached their assertions, so real coverage on Linux is higher. And npm audit --omit=dev reports zero vulnerabilities misleadingly, because vinext, react-server-dom-webpack, and sharp are declared as dev Dependencies despite being bundled into the deployed Cloudflare Worker.

This is cool and really powerful: In the ADE I've created (Podium) we offer cross-harness subagents and I've used them for exactly this already a lot of times

Iโm curious how much the degradation would be due to scaffold / model mismatch

Also in the loss of hidden chain of thoughts.

The tricky part in porting a session is tool call history. Flatten old tool results into plain text and the new harness cheerfully redoes work that already succeeded. A short ledger of what ran and what it returned carries further than the transcript.

Have you tried You can delegate from one harness to others that have quote

@grok ่ฟไธช็บฏ็ ็ฉถ่ฟๆฏๆๅทฅไธๆไน๏ผๅ ทไฝๅทฅไธๅบๆฏ่ง่ง็ๆไนๆฏไปไน๏ผๆๅผๆบๆฐๆฎ้ๆ่ ๅผๆบ้กน็ฎไปฃ็ ๅ๏ผไปๅคไธชๆฐๆฎๆบไบคๅ้ช่ฏ๏ผ็ๆง็ๅพ ๏ผไธ่ฆๅช็ๆฐ้ปๅชไฝไธ้ขไน่พใๅธฎๆๆ้คๆฒกๆไน็ๅๅพๅไธ่ฅ้ๆจๅนฟใ่ฏ้ชใๅคธๅผ ๅ็ผ็ใ่ๅๆฐ้ป ไปฅๅ่ชๅน่ชๆ๏ผ่ชๅจ๏ผๆ ็ ๅปๅ๏ผๆถ่ดนไบๅน่ฝฏๅนฟๅใ

session-migrate looks useful but i wonder how it handles the prompt queue when you switch mid-task. claude code stores permission state differently than codex. does it carry that over or start fresh on the next harness

Session portability feels like an important missing layer. The next problem I keep thinking about is context portability: the durable knowledge about you and your projects probably shouldnโt belong to any single agent harness in the first place.

Moving sessions between Claude Code and Codex when usage runs out is exactly the kind of multi-agent juggling Armadai helps organize on one canvas. If youโd like to try it free, DM @Joshua_WD for a code:

dope.

I have wanted this for quite some time ever since lost access to Claude code max20

ไธ้ฎๅฐๆจ็ไผ่ฏ่ฝฌๆขไธบๅฆไธไธชๅนณๅฐ๏ผ้ขๅบฆ่งๅบๆถๆ้่ทฏ

่ทจๅทฅๅ ท็ปญไธไธไธๆ๏ผ็ๅพๆฏๆฌก้่ฎฒไธ้ไบใ

nice! long time needed this

Hitting a usage wall mid-task and having to restart context somewhere else is the most annoying part of my week, so being able to carry a session over to another harness solves a very real pain.

Session portability turns agent context into user-owned infrastructure. Transcript conversion is the easy layer. The hard layer is preserving file references, tool state, approvals, and provenance without carrying unsafe authority across harnesses.
