Skip to main content

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.


๐Ÿš€ Install

pip install aimem-cli

Or from source:

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

โšก 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

๐Ÿ“ฆ Requirements

  • Python 3.10+
  • pyperclip>=1.8.0 (clipboard support)
  • ulid-py>=1.1.0 (session ID generation)

License

MIT

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.2.tar.gz (47.2 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.2-py3-none-any.whl (54.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aimem_cli-0.2.2.tar.gz
  • Upload date:
  • Size: 47.2 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.2.tar.gz
Algorithm Hash digest
SHA256 61fec7b26474819a742d92cffbefe444b1b9a67ca423d625a61aa5cac2cbc908
MD5 608ba5ba4a534bb57d74bec51446a242
BLAKE2b-256 533c50a8342ad54dd94136898462f1a18bbddf1b9db590f79d409015950ca3fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aimem_cli-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 54.0 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dad09faa899a7e5b3c604875de773064d14a8512da54966f0b9f103f97fc9b26
MD5 b84b35042eafd1365879c3f6b4ac1fa8
BLAKE2b-256 159fe018a1615501d3c3c2f00686f23ab41cd5cb3cc3fd448095167dece9eaca

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