# Keeping AI coding agent sessions in sync across machines

> Source: <https://dev.to/nanyujun/keeping-ai-coding-agent-sessions-in-sync-across-machines-5h7>
> Published: 2026-11-02 04:09:24+00:00

I work across more than one machine, and I switch between coding agents depending on the task: Claude Code, Codex CLI, Cursor, Gemini CLI. The models keep getting better, but the context is still nailed to one laptop.

Every agent stores its history differently, and locally:

`~/.claude/projects/<encoded-project-path>/<session-id>.jsonl`
Copying the project folder is not enough, because session files live outside it. Copy them to a new machine and the paths may not match either. So "continue where I left off" turns into manual file archaeology.

I built AIAssets to fix that for my own workflow.

AIAssets is a self-hosted hub. On each machine it scans the session files of the agents it supports, indexes them, and syncs the index and session data bidirectionally through the hub on a 60-second poll. Session titles are preserved, so you can find the thread you were in. Over that index it also gives you search, share, and backup.

Self-hosting is a deliberate choice: transcripts contain source code, internal URLs, and sometimes commands with credentials in them. I did not want a third-party service holding all of that.

The README lists 10 agents with read/write support, including Claude Code, Codex, Cursor, and Gemini CLI. It is early software, so the limits matter more than the feature list:

`pnpm run build:mac`; it is not signed, so Gatekeeper will complain.
**1. Project path mapping.** A session is tied to a working directory. If machine A uses `/Users/me/code/foo` and machine B uses `D:\code\foo`, restoring on B can show the session but fail to resume because the cwd does not exist. Should the hub rewrite paths, or store a logical project ID? I lean toward the latter, but it is not shipped.

**2. Divergent branches.** The same session continued on two machines creates two files. Last-write-wins loses one side. A real merge of JSONL transcripts is harder than it sounds, and I would rather not fake it.

**3. Size and transport.** Sessions can get large. Polling the full hub every 60 seconds is fine on a LAN and wasteful over a metered connection. Incremental transfer is on the list.

[https://github.com/NanYuJun/AIAssets](https://github.com/NanYuJun/AIAssets)

If you run more than one machine or more than one agent, I would rather hear which part breaks first than get a star. Issues with your setup — OS, agents, where the sessions live — are more useful than "doesn't work".
