Skip to main content

AI Memory Switcher โ€” Save, compress, and transfer context between AI agents

Project description

๐Ÿง  AiMem โ€” AI Memory Switcher

AiMem - Transfer context between AI agents

PyPI Python License GitHub stars

Transfer context seamlessly between AI agents (Claude, Gemini, Qwen, OpenCode, Codex...)

When Claude hits rate-limits or you need to switch to another AI, AiMem helps you continue without losing your train of thought.

If this project helps you, please give it a โญ on GitHub!


๐Ÿค” The Problem

You: "Claude is running out of tokens..."
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
โ”‚ Claude: Fixing authentication bug...            โ”‚
โ”‚ 11PM - Claude hits rate limit!                โ”‚
โ”‚                                              โ”‚
โ”‚ NOW WHAT?                                    โ”‚
โ”‚ โ†’ Copy all chat history? Tedious             โ”‚
โ”‚ โ†’ Start from scratch? 30+ minutes lost      โ”‚
โ”‚ โ†’ Lose context? Devastating                 โ”‚
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

โ†’ With AiMem: 3 seconds to transfer
$ aimem save --from claude
$ aimem load sess-abc --to gemini
# Paste into Gemini - full context transferred!

๐Ÿš€ Install

pip install aimem-cli

Or from source:

git clone https://github.com/ThangTo/AiMem.git
cd AiMem
pip install -e .

โœจ Features

  • ๐ŸŽฎ Interactive TUI: Fully featured Terminal UI with arrow-key navigation
  • ๐Ÿ“ค Save sessions from Claude, Gemini, Qwen, OpenCode, Codex, Aider, Continue.dev
  • ๐Ÿ“ฅ Load to any AI agent with proper format
  • ๐Ÿ’‰ Inject directly into agent storage (auto-opens new terminal to resume!)
  • ๐Ÿ“Š Analyze if session fits target model context limit
  • โœ‚๏ธ Chunk large sessions automatically
  • ๐Ÿ—œ๏ธ Compress sessions with LLM (95% reduction, configurable via TUI settings)
  • ๐Ÿ”€ Merge multiple sessions (Smart deduplication)
  • ๐Ÿ—‘๏ธ Multi-Delete: Select and delete multiple sessions easily via TUI

โšก Quick Start

๐ŸŽฎ Interactive Mode (TUI - Recommended)

The easiest way to use AiMem is via the interactive Terminal UI. Just run:

aimem-cli

Use arrow keys to navigate menus, configure settings, compress sessions, and transfer context without remembering any commands!


Transfer from Claude to OpenCode (CLI)

# Save current Claude session
aimem-cli save --from claude

# Inject directly into OpenCode
aimem-cli load <session-id> --to opencode --inject

# Open the session in OpenCode
opencode -s <session-id-from-output>

Transfer to Markdown (for any AI)

aimem-cli save --from claude
aimem-cli load <session-id> --to markdown
# Content copied to clipboard - paste anywhere

๐Ÿ“– All Commands

aimem-cli init

Initialize config file at ~/.aimem/config.json.

aimem-cli init
aimem-cli init --force    # Overwrite existing config

aimem-cli save --from <agent>

Save a session from an agent to AiMem storage.

# From Claude
aimem-cli save --from claude
aimem-cli save --from claude --session-id <id>

# From Gemini
aimem-cli save --from gemini

# From Qwen
aimem-cli save --from qwen

# From OpenCode
aimem-cli save --from opencode

# From Codex
aimem-cli save --from codex

# From Aider
aimem-cli save --from aider

# From Continue.dev
aimem-cli save --from continue

# From Clipboard
aimem-cli save --from clipboard

# With LLM compression (requires API key)
aimem-cli save --from claude --compress

aimem-cli load <session-id> --to <format>

Load a saved session to target format.

# To Markdown (copy to clipboard)
aimem-cli load <session-id> --to markdown

# To Claude (markdown format)
aimem-cli load <session-id> --to claude

# To Gemini
aimem-cli load <session-id> --to gemini

# To Qwen
aimem-cli load <session-id> --to qwen

# To Prompt (for API calls)
aimem-cli load <session-id> --to prompt

# To OpenCode
aimem-cli load <session-id> --to opencode

# To Codex
aimem-cli load <session-id> --to codex

# To Continue.dev
aimem-cli load <session-id> --to continue

aimem-cli load <session-id> --to <agent> --inject

Inject directly into agent storage - no copy-paste needed!

# Inject into OpenCode (RECOMMENDED)
aimem-cli load <session-id> --to opencode --inject
opencode -s <session-id>

# Inject into Claude
aimem-cli load <session-id> --to claude --inject
claude --resume

# Inject into Gemini
aimem-cli load <session-id> --to gemini --inject

# Inject into Qwen
aimem-cli load <session-id> --to qwen --inject

# Inject into Codex
aimem-cli load <session-id> --to codex --inject

aimem-cli list

List all saved sessions.

# List all saved sessions
aimem-cli list

# List sessions from specific agent
aimem-cli list --from claude
aimem-cli list --from gemini
aimem-cli list --from qwen

# List available agents
aimem-cli list --agents

aimem-cli merge <session-id-1> <session-id-2>

Merge multiple sessions into one.

# Simple merge (concatenate)
aimem-cli merge sess-abc sess-def

# Smart merge (deduplicate, combine goals, merge todos)
aimem-cli merge sess-abc sess-def --smart

# Smart merge with target format
aimem-cli merge sess-abc sess-def --smart --to gemini

aimem-cli config

View or update configuration.

# Show current config
aimem-cli config

# Set config values
aimem-cli config set compression.enabled true
aimem-cli config set compression.api_key YOUR_API_KEY
aimem-cli config set compression.provider groq
aimem-cli config set output.format markdown
aimem-cli config set output.clipboard_auto true

aimem-cli delete <session-id>

Delete a saved session.

aimem-cli delete <session-id>

Analyze context before loading

Check if a session fits in target model's context limit.

# Analyze if session fits in Qwen's 32K context
aimem-cli load <session-id> --to qwen --analyze

# Output example:
# โš ๏ธ Session EXCEEDS Qwen limit (50K tokens vs 32K limit)
# ๐Ÿ’ก Try: aimem load <session-id> --to qwen --chunk

Chunk large sessions

Automatically split session into smaller chunks if too large for target.

# Auto-chunk for Qwen (32K limit)
aimem-cli load <session-id> --to qwen --chunk

# Output:
# ๐Ÿ“ฆ CHUNK 1/2 (25K tokens)
# [content of chunk 1]
# โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# ๐Ÿ“ฆ CHUNK 2/2 (25K tokens)
# [content of chunk 2]

Compress session with LLM

Reduce session size using LLM compression (requires API key).

# Compress on save
aimem-cli save --from claude --compress

# Compress on load
aimem-cli load <session-id> --compress

# Result: ~95% size reduction
# Output: {
#   "current_goal": "Fix authentication bug",
#   "latest_code": [{"path": "auth.py", "content": "..."}],
#   "current_errors": ["TypeError: undefined"],
#   "key_decisions": ["Used JWT instead of session"],
#   "todo_list": ["Write tests", "Deploy to staging"]
# }

๐Ÿ”ง Supported Agents

Source (--from)

Agent Storage Location Inject?
claude ~/.claude/projects/*/*.jsonl โœ…
gemini ~/.gemini/tmp/*/chats/*.json โœ…
qwen ~/.qwen/tmp/*/logs.json โœ…
opencode ~/.opencode/sessions/*.json โœ…
codex ~/.codex/sessions/*.jsonl โœ…
aider ~/.aider.chat.history.md โŒ
continue ~/.continue/sessions.db โŒ
clipboard System clipboard โŒ

Target (--to)

Format Best for Inject?
markdown Paste anywhere โŒ
claude Claude Code CLI โœ…
gemini Gemini CLI โœ…
qwen Qwen CLI โœ…
opencode OpenCode CLI โœ…
codex Codex CLI โœ…
prompt API calls โŒ

โš™๏ธ Configuration

Config file: ~/.aimem/config.json

# Show config
aimem-cli config

# Enable LLM compression (opt-in)
aimem-cli config set compression.enabled true
aimem-cli config set compression.api_key YOUR_GROQ_KEY
aimem-cli config set compression.provider groq

# Auto-copy to clipboard
aimem-cli config set output.clipboard_auto true

Config Options

Option Default Description
compression.enabled false Enable LLM compression
compression.provider "groq" Compression provider (groq, gemini)
compression.api_key "" API key for compression
output.format "markdown" Default output format
output.clipboard_auto true Auto-copy to clipboard
storage.path "~/.aimem/sessions" Session storage path

๐Ÿ“ Examples

Example 1: Transfer Claude session to OpenCode

$ aimem-cli save --from claude
[i] Found 5 Claude sessions. Select one:
  [1] 2026-04-20 | Fix authentication bug
  [2] 2026-04-19 | Add user login feature
  [3] 2026-04-18 | Research API design
Enter number (default=1): 1
[OK] Saved session: claude-abc123

$ aimem-cli load claude-abc123 --to opencode --inject
[OK] Injected into OpenCode
    Session ID: ses_xyz789
Resume with: opencode -s ses_xyz789

$ opencode -s ses_xyz789
# Continue with full context in OpenCode!

Example 2: Transfer to any AI via Markdown

$ aimem-cli save --from claude
[OK] Saved session: claude-abc123

$ aimem-cli load claude-abc123 --to markdown
[OK] Content copied to clipboard!

# Paste into any AI: Gemini, ChatGPT, Qwen, etc.

Example 3: Merge multiple sessions

$ aimem-cli merge claude-abc claude-def claude-ghi
[i] Merging 3 sessions...
[OK] Merged session: merged-xyz123
    Total messages: 156

$ aimem-cli load merged-xyz123 --to gemini --inject

๐Ÿ—๏ธ Architecture

aimem-cli/
โ”œโ”€โ”€ aimem/
โ”‚   โ”œโ”€โ”€ cli.py                 # CLI interface
โ”‚   โ”œโ”€โ”€ models.py              # UniversalSession model
โ”‚   โ”œโ”€โ”€ storage.py             # File storage
โ”‚   โ”œโ”€โ”€ compression.py         # LLM compression
โ”‚   โ”œโ”€โ”€ context_manager.py     # Context management
โ”‚   โ””โ”€โ”€ adapters/
โ”‚       โ”œโ”€โ”€ claude.py          # Claude Code adapter
โ”‚       โ”œโ”€โ”€ gemini.py          # Gemini CLI adapter
โ”‚       โ”œโ”€โ”€ qwen.py             # Qwen CLI adapter
โ”‚       โ”œโ”€โ”€ opencode.py         # OpenCode adapter
โ”‚       โ”œโ”€โ”€ codex.py            # Codex adapter
โ”‚       โ”œโ”€โ”€ aider.py            # Aider adapter
โ”‚       โ”œโ”€โ”€ continue_dev.py     # Continue.dev adapter
โ”‚       โ”œโ”€โ”€ clipboard.py        # Clipboard adapter
โ”‚       โ””โ”€โ”€ output/             # Output formatters
โ”‚           โ”œโ”€โ”€ __init__.py
โ”‚           โ”œโ”€โ”€ markdown.py
โ”‚           โ”œโ”€โ”€ claude.py
โ”‚           โ”œโ”€โ”€ gemini.py
โ”‚           โ”œโ”€โ”€ qwen.py
โ”‚           โ”œโ”€โ”€ prompt.py
โ”‚           โ”œโ”€โ”€ continue.py
โ”‚           โ”œโ”€โ”€ codex.py
โ”‚           โ””โ”€โ”€ opencode.py


๐Ÿ“‹ Supported Agents

Source Storage Inject?
Claude ~/.claude/projects/*/*.jsonl โœ…
Gemini ~/.gemini/tmp/*/chats/*.json โœ…
Qwen ~/.qwen/tmp/*/logs.json โœ…
OpenCode ~/.opencode/sessions/*.json โœ…
Codex ~/.codex/sessions/*.jsonl โœ…
Aider ~/.aider.chat.history.md โŒ
Continue ~/.continue/sessions.db โŒ
Clipboard System clipboard โŒ

๐Ÿš€ Roadmap

  • Add more adapters ( Zed, Cursor )
  • Docker support
  • WebUI for session management
  • VS Code extension

๐Ÿ“ License

MIT License - See LICENSE


๐Ÿ‘ Contributing

See CONTRIBUTING.md for how to contribute.


๐Ÿ‘ Acknowledgments

  • Claude Code for the great developer experience
  • All open source contributors

Made with โค๏ธ by ThangTo

Project details


Download files

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

Source Distribution

aimem_cli-0.2.6.tar.gz (56.6 kB view details)

Uploaded Source

Built Distribution

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

aimem_cli-0.2.6-py3-none-any.whl (61.5 kB view details)

Uploaded Python 3

File details

Details for the file aimem_cli-0.2.6.tar.gz.

File metadata

  • Download URL: aimem_cli-0.2.6.tar.gz
  • Upload date:
  • Size: 56.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for aimem_cli-0.2.6.tar.gz
Algorithm Hash digest
SHA256 771861bf76090c908dbfb57d95d77e3b0be4c11ff9db9ff00a061317d1dfb1af
MD5 1f55084dc08dbea900613b25c7c0c8c9
BLAKE2b-256 9c1ef71e6f9769b53fa28951a595168f34e717b256747f3298085e56c57c00d0

See more details on using hashes here.

File details

Details for the file aimem_cli-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: aimem_cli-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 61.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for aimem_cli-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a4e75e9b4296b694ce16d11f6ad8a70f14ca3acde92cd482f7177419ec7dd77a
MD5 c6989d5cf1f5807cdaaa9d1adf8516bb
BLAKE2b-256 d2d14d62ba36d68711696e3d9a344706ec24eee1cfc1d591d5f01a4f44386f73

See more details on using hashes here.

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