New Now reads Cursor CLI and Kiro CLI chats too

Your AI coding chats,

ChatRelay keeps your chats from Claude Code, Codex, Cursor, Kiro and Antigravity on all your devices, rewrites every file path for the new machine, and hands a project's context to the next AI tool. Your storage, no server.

Free and open source (MIT) Windows · Android · Web No account, no ChatRelay server
Claude CodeCodexAntigravityCursorKiro
‹ ›Home / ChatRelay
Home
Claude Code2
Fix checkout total roundingshopChanged
Invoice PDF totalsinvoice-apiSynced
Codex1
Coupon codes v2shopOn DESKTOP
Cursor1
Landing page polishportfolioChanged
Kiro1
Spec: stacking couponsshop · CLIChanged
Antigravity1
Offline notes syncnotes-appChanged
Auto-syncWorking
$ chatrelay status
Then open it where you left off: $ claude --resume $ codex resume Cursor, Kiro, Antigravity: in ChatRelay
Sync between devices

Start on one device. Pick up on the other.

Every conversation, tool call and changed file goes to storage you own, then to your other devices. Claude Code and Codex chats show up in the tool's own history list, with every path changed to the new machine. Cursor, Kiro and Antigravity chats open in ChatRelay on any device. After the first upload, only the new lines travel.

Path rewrite 166 paths in one session
DESKTOP Windows
C:\Users\me\shop
LAPTOP Windows
D:\work\shop
cwdworking folder
toolstool inputs and outputs
linksfile:/// links, %20 spaces
textpaths inside message text
OSC:\ · c:/ · /c/ · /mnt/c/ · /home/me
chatrelay
# DESKTOP: upload what changed
$ chatrelay push --all
  shop          ↑ 3 sessions  (delta, 41 KB)
  invoice-api   ↑ 1 session   (delta, 6 KB)
  secret scan: 1 key found → redacted in the upload

# LAPTOP: preview first, then write
$ chatrelay pull --dry-run
  shop  →  D:\work\shop   (matched by git remote)
  ×166  C:\Users\me\shop  →  D:\work\shop
  codex 3 threads   (Codex is closed: OK to write)
  cursor, kiro, antigravity 6 chats  (open in ChatRelay)
  nothing written. run without --dry-run to apply
Your second device in four steps
  1. 1
    Install and pick the same storage. The same synced folder or the same private GitHub repo.
  2. 2
    Get the project folder. For example with git clone. The path may be different.
  3. 3
    Bring history to this device. Git projects are matched by their remote. Others you link once.
  4. 4
    Check the dry run, then confirm. Turn on auto-sync and it happens by itself from then on.
Summaries and handoff

Start in one tool. Finish in another.

Summarize a project's chats from Claude Code, Codex, Cursor, Kiro and Antigravity into one HANDOFF.md, and put a short version into CLAUDE.md, AGENTS.md or GEMINI.md so the next tool starts with the context. A Codex chat can also become a Claude Code one, or the other way round, with the whole history.

HANDOFF.md from 5 tools · 41 conversations

Project overview

Online shop: Next.js front end, Stripe checkout, PDF invoices.

What's done

  • Discount rounding fixed in checkout and invoices
  • Coupon codes can stack

Key decisions

  • Round once, after tax, in cartTotal()

Open bugs

  • Refund emails show the pre-discount price

Next steps · Files touched

  • cart/total.ts, invoice/pdf.ts, emails/refund.tsx
chatrelay
$ chatrelay summarize --target claude-md
  project   shop  (Claude Code 20 · Codex 9 · Cursor 5 · Kiro 3 · Antigravity 4)
  condensed 1.9M → 84k tokens
  hidden    3 secrets · 2 .env values · 1 "never send" word
  model     claude-sonnet-5-5
  ✓ wrote "Previous context" in CLAUDE.md
    (the rest of the file is untouched)

# any OpenRouter model works too
$ chatrelay summarize --model openrouter:<id> --target handoff
Continue in…
Claude Code CLAUDE.md
Codex, Cursor, Kiro AGENTS.md
Antigravity, Gemini CLI GEMINI.md
Secrets never reach the AI
sk-ant-api03-••• → [REDACTED:anthropic]
ghp_••• → [REDACTED:github]
PASSWORD=••• → [REDACTED:password]

Use the Claude Code or Codex login you already have (no API key), the Claude API, or OpenRouter, including free models.

Search and usage

Find any prompt. See where your tokens go.

Search every prompt and answer in every project and every tool in under a second. Usage shows conversations, messages and tokens per day, the models you used, the hours you work, your streaks and your longest conversations. It is worked out on your device; nothing is sent.

When you work busiest: Thu, 2 PM
Current streak
4 days
Longest streak
18 days
chatrelay
$ chatrelay search discount rounding
  shop · Codex · Fix checkout total rounding
    …the discount is rounded before tax…
  invoice-api · Claude Code · Invoice PDF totals
  shop · Cursor · Landing page polish
  shop · Kiro · Spec: stacking coupons
  notes-app · Antigravity · Offline notes sync
  7 matches in 5 conversations (0.2 s)

$ chatrelay usage --days 90
  conversations  612     messages  19,840
  tokens         1.2B    active days  71
  by model, output / input / cache read …
Tokens by model 30 days
ModelOutputInputCache read
claude-opus-5-54.1M9.8M310M
claude-sonnet-5-51.6M3.2M74M
gpt-5.1-codex0.9M2.7M21M
claude-haiku-5-50.2M0.6M4M

Example numbers. Conversations and messages cover every tool. Token counts come from Claude Code and Codex, because Antigravity, Cursor and Kiro don't record them. Copy report copies it all as Markdown.

Storage

Your history stays where you put it.

ChatRelay has no server of its own. Pick a folder your devices can all see, or a private GitHub repository. Only compressed copies go there; the history folders of your AI tools never move.

Private GitHub repositoryme/ai-history · private

Sign in with GitHub, no password stored. One commit per upload, big files split automatically, public repos refused. Also powers the web and phone viewer.

a41c9e2shop · 3 sessions · 41 KBjust now
7be02d1invoice-api · 1 session · 6 KB2 min ago
c93f770portfolio · 2 sessions · 12 KB1 h ago
19ad4b8shop · project memory · 2 KB3 h ago
End-to-end encryption Offline queue
Google DriveG:\My Drive\chatrelay
OneDrive%OneDrive%\chatrelay
DropboxAny synced Dropbox folder
NAS or network shareKeeps the previous versions of each file
USB driveCarry your history in your pocket
Any folderIf your devices can see it, it works
Command line

Everything in the app, from the terminal.

The installer puts chatrelay.exe next to the app. It works with every tool, runs the auto-sync hooks, and never fails a session. Use it in scripts, with --json for machine-readable output.

$ chatrelay status
  machine          LAPTOP
  backend          github · me/ai-history  (encrypted)
  last sync        2 minutes ago  ✓
  hooks            SessionStart → pull · SessionEnd → push
  queue            empty
  cleanupPeriodDays 3650
$ chatrelay push --cwd D:\work\shop --redact
  shop  (git:github.com/me/shop)
  ↑ 2 Claude Code sessions   delta · 18 KB
  ↑ 1 Codex thread           delta · 7 KB
  ↑ 1 Cursor chat            1 KB
  ↑ 1 Kiro CLI chat          2 KB
  ↑ 1 Antigravity chat       4 KB
  ! 1 secret redacted in the uploaded copy  (github token)
  ✓ 1 commit to me/ai-history
$ chatrelay providers
  claude-code   2.1.x        format ok     restore on
  codex         0.160        state_5 / 58  restore on
  antigravity   2.6.0        IDE + CLI     view, search, sync
  cursor        3.28.7       editor + CLI  view, search, sync
  kiro          1.4.86       editor + CLI  view, search, sync
$ chatrelay hooks install
  backup  ~/.chatrelay/backups/…-settings
  + SessionStart  chatrelay pull --hook --quiet
  + SessionEnd    chatrelay push --hook --quiet
  ✓ your other settings and hooks are kept
$ chatrelay backups
  20261105-104211-pull-shop        14 files
  20261104-181502-settings          1 file
$ chatrelay backups restore 20261105-104211-pull-shop
  ✓ 14 files put back exactly as they were
Safety and privacy

We worry about your history, so you don't have to.

Your originals are never changed on upload. Every write is backed up first and shown as a dry run. If a conversation changed on both devices, you keep both. If ChatRelay sees a tool format it doesn't know, it turns writing off instead of guessing.

Protected
0 checks passed since you opened this page
Handled for you Live demo
    Safeguards Built in
    • End-to-end encryption
    • Secrets in the OS keychain
    • Logins never touched
    • Private repos only
    • No ChatRelay server
    • Never-send list
    Supported AI tools

    One history for all your tools.

    Each tool is an adapter that checks the format it finds on your device. Unknown versions are still shown, but writing is turned off with a clear reason.

    ToolView and searchSync between devicesSummarizeOpen your chats inContext file
    Claude Code
    Terminal CLI, VS Code extension
    ✓✓ automatic, on session start and end✓claude --resume, VS Code historyCLAUDE.md
    OpenAI Codex
    CLI, VS Code extension, desktop app
    ✓✓ automatic, a minute after a chat goes quiet✓codex resume, Codex sidebarAGENTS.md
    Antigravity
    Antigravity IDE, Antigravity CLI
    ✓✓ to every device✓ChatRelay on desktop, web and phoneGEMINI.md
    Cursor
    Cursor editor (Agent chat), Cursor CLI
    ✓✓ to every device✓ChatRelay on desktop, web and phoneAGENTS.md
    Kiro
    Kiro editor (agent chat), Kiro CLI
    ✓✓ to every device✓ChatRelay on desktop, web and phoneAGENTS.md

    Verified with Claude Code 2.1, Codex 0.160, Antigravity 2.6, Cursor 3.28 with its CLI, and Kiro 1.4 with Kiro CLI 3.1. Summaries can also be written for Gemini CLI as GEMINI.md.

    KBnot MB

    After the first upload, only the new lines of a conversation travel: a few KB instead of the whole file.

    How push works
    <1second

    to search about 2 GB of history: every prompt and answer, in every project and every tool.

    How search works
    0servers

    Your chats go between your devices and your own folder or private repo. Nobody else holds them.

    Safety and privacy
    Getting started

    Set up once, in a few minutes.

    01

    Install

    Run the installer. A setup wizard finds the history of your AI tools and shows how many conversations each one has.

    02

    Choose storage

    A synced folder or a private GitHub repo. Name the machine and turn on auto-sync.

    03

    Add your other device

    Install, choose the same storage and bring history in. From then on it syncs by itself when sessions start and end.

    Download

    Desktop, phone and browser.

    You only install once. New versions arrive by themselves; the app only accepts updates signed with the project's key.

    Windows

    The full app: sync, auto-sync, search, usage, summaries and the CLI. Lives in the system tray.

    ChatRelay_x64-setup.exe Download

    Android

    Read every conversation from your GitHub storage on your phone. A read-only viewer.

    ChatRelay.apk Get the APK

    Web viewer

    The same Rust engine in WebAssembly. Talks only to api.github.com and loads no third-party scripts.

    abh1shxkk.github.io/chatrelay-web Open

    macOS and Linux beta

    Built by GitHub Actions as .dmg, .AppImage and .deb. Not code-signed and lightly tested.

    .github/workflows/desktop-mac-linux.yml All releases

    The Windows installer isn't code-signed yet. If SmartScreen says "Windows protected your PC", click More info → Run anyway.

    FAQ

    Questions, answered.

    Something else? Check the troubleshooting guide or send an email.

    Which AI tools does it work with?

    Claude Code, Codex, Cursor, Kiro and Antigravity, in the editor and in the terminal. Every chat can be viewed, searched, summarized and synced. Claude Code and Codex chats can also be restored into the tool on your other device; Cursor, Kiro and Antigravity chats open in ChatRelay on desktop, web and phone.

    Can syncing log me out of my AI tools?

    No. ChatRelay only works with your chat history. It never reads, copies or changes the login files of Claude Code, Codex, Cursor, Kiro or Antigravity. If you get logged out, it comes from the tool itself.

    What if I continued the same chat on both devices?

    Nothing is overwritten. Your copy stays as it is and the other version is saved as a new conversation, for example "… (from DESKTOP)". Both then appear in the tool and sync to your other devices.

    My old Claude Code conversations disappeared.

    Claude Code deletes conversations older than cleanupPeriodDays (30 by default). ChatRelay can raise it for you, and anything already uploaded can be pulled back from your storage.

    Why was a Codex conversation skipped?

    ChatRelay never writes to Codex's files while Codex is running. Close the Codex CLI, VS Code panel and desktop app and pull again, or let background sync retry by itself.

    Is my code sent to an AI when I make a summary?

    Only when you ask for a summary, and only after you confirm. Keys, tokens, passwords, .env values and your "never send" list are hidden first. For client code, use a model whose provider doesn't keep data.