AI Memory Switcher โ Save, compress, and transfer context between AI agents
Project description
๐ง AiMem โ AI Memory Switcher
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
- ๐ค Save sessions from Claude, Gemini, Qwen, OpenCode, Codex, Aider, Continue.dev
- ๐ฅ Load to any AI agent with proper format
- ๐ Inject directly into agent storage (no copy-paste!)
- ๐ Analyze if session fits target model context limit
- โ๏ธ Chunk large sessions automatically
- ๐๏ธ Compress sessions with LLM (95% reduction)
- ๐ Merge multiple sessions
โก Quick Start
Transfer from Claude to OpenCode (Recommended)
# 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aimem_cli-0.2.4.tar.gz.
File metadata
- Download URL: aimem_cli-0.2.4.tar.gz
- Upload date:
- Size: 52.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81333a4abfa4b5fa46ef88082d125e3864a14cf9f0075840e469abfbf4b328e0
|
|
| MD5 |
26831c50eace4005d4ff4e717a7abd74
|
|
| BLAKE2b-256 |
76060b6be7ff183e0c40dd9e8db1521a7eb32937153c015687cb1e0eb9a57e0c
|
File details
Details for the file aimem_cli-0.2.4-py3-none-any.whl.
File metadata
- Download URL: aimem_cli-0.2.4-py3-none-any.whl
- Upload date:
- Size: 57.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5722d86cc06b301584f3cd2c93311d4f9fc56a4395a91fccf1663a60c4d5cb5
|
|
| MD5 |
79914a960d9c195ddbd3d8e5ad89a919
|
|
| BLAKE2b-256 |
f17deba351aa5c2d796162cfe111371694200d98fe60267b3fc3dff000745edc
|