Skip to main content

Per-project session persistence for AI CLI tools

Project description

ai-session-manager

Per-project session persistence for AI CLI tools.

ai-session-manager adds automatic project-scoped resume behavior to supported AI CLIs so you can leave a project and come back without manually reopening the right conversation.

Works on Linux, macOS, and Windows.

Tested on Linux and Windows.

[!WARNING] This tool renames installed CLI binaries and replaces them with wrapper scripts. Use it at your own risk, and make sure you understand how to restore the original binaries with ai-session-manager teardown.


Why

Most AI CLIs support sessions, but they do not all resume the same way and they do not all make project-scoped resume automatic. This project adds one consistent wrapper layer across tools.

Today it supports:

Tool Auto-resume behavior
agy Starts normally on first run, then stores/discovers a native conversation ID and resumes with agy --conversation <id>
copilot Stores a stable session UUID and launches copilot --session-id <uuid>
claude Stores a managed session UUID, starts with claude --session-id <uuid>, then resumes with claude -r <uuid>
gemini Stores a managed session UUID, starts with gemini --session-id <uuid>, then resumes with gemini --resume <uuid>
codex Starts normally on first run, then stores/discovers the native session ID and resumes with codex resume <id>

Project-scoped state lives in:

  • .ai-session-manager/ inside the project root, whether it is a git repo or a plain folder

Existing state is still recognized and migrated from:

  • .git/ai-session-manager/

Copilot legacy state is also recognized and migrated from:

  • .git/copilot-session
  • .copilot-session

Requirements

  • Python 3.8+
  • One or more supported CLIs installed: Antigravity, Copilot, Claude Code, Gemini CLI, or Codex CLI

Installation

pip install --editable ~/ai-session-manager

Once published:

pip install ai-session-manager

Setup

Install wrappers for every supported tool found in PATH:

ai-session-manager setup

Or target specific tools:

ai-session-manager setup agy copilot claude gemini codex

Each selected binary is renamed to <tool>-real and replaced with a thin Python wrapper. From that point on, keep using the original command name.


Usage

Copilot

cd ~/my-project
copilot
# [ai-session-manager] New session 4f1a2b3c-... (my-project)

cd ~/my-project
copilot
# [ai-session-manager] Resuming session 4f1a2b3c-... (my-project)

AGY

agy
# [ai-session-manager] Starting new Antigravity CLI session (my-project)

agy
# [ai-session-manager] Resuming session 123e4567-... (my-project)

Claude / Gemini

claude
# [ai-session-manager] New session 4f1a2b3c-... (my-project)

claude
# [ai-session-manager] Resuming session 4f1a2b3c-... (my-project)

gemini
# [ai-session-manager] New session 7b2f8c1d-... (my-project)

gemini
# [ai-session-manager] Resuming session 7b2f8c1d-... (my-project)

Codex

codex
# [ai-session-manager] Starting new Codex session (my-project)

codex
# [ai-session-manager] Resuming session 019e94b3-... (my-project)

Supported tools are still fully usable with their own native session commands. If you pass an explicit resume or session-management flag/subcommand, the wrapper gets out of the way.

For example:

agy --conversation 123e4567-e89b-12d3-a456-426614174000
copilot --resume
claude -r my-session
gemini --list-sessions
codex resume --last

Start fresh in the current project

ai-session-manager reset

Or reset one tool only:

ai-session-manager reset claude

Commands

Command Description
ai-session-manager setup [tools...] Install wrappers for all detected or selected tools
ai-session-manager teardown [tools...] Remove wrappers and restore original binaries
ai-session-manager status [tools...] Show platform, binary paths, and state files
ai-session-manager reset [tools...] Delete persisted wrapper state for the current project

State layout

project root:
  .ai-session-manager/
    copilot.json
    claude.json
    codex.json
    gemini.json
    agy.json

Copilot, Claude, and Gemini store an exact managed session identifier in their state files from the first launch.

AGY and Codex store the tool's own native conversation/session identifier once the wrapper can discover it from local history after a successful run. If no exact native ID is available yet, the wrapper falls back to the tool's native resume-latest/new-session behavior until it can record one.

Platform details

Linux macOS Windows
Wrapper file tool name (shebang script) tool name (shebang script) tool .cmd wrapper
Real binary <tool>-real <tool>-real <tool>-real.exe or <tool>-real.cmd
Process launch os.execv (true replace) os.execv (true replace) subprocess + exit code

Project structure

ai-session-manager/
├── pyproject.toml
├── README.md
└── src/
    ├── ai_session_manager/
    │   ├── wrapper.py
    │   └── cli.py

Reinstalling a tool CLI

If a wrapped tool is manually reinstalled and overwrites the wrapper, run setup again:

ai-session-manager setup copilot

Uninstall

ai-session-manager teardown
pip uninstall ai-session-manager

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

ai_session_manager-0.1.5.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

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

ai_session_manager-0.1.5-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file ai_session_manager-0.1.5.tar.gz.

File metadata

  • Download URL: ai_session_manager-0.1.5.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ai_session_manager-0.1.5.tar.gz
Algorithm Hash digest
SHA256 5fa2781f5a208ac6e148854b9c5397301b744ece1d8e56d42c670227a9079572
MD5 522a364fa1aa77d6d322f232cc7b0b2b
BLAKE2b-256 bd76b77cbef33bb8a0a82edcb62b3d2965d68fdc53fbd81cd0b885954f5f41a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_session_manager-0.1.5.tar.gz:

Publisher: publish-pypi.yml on DrFatihTekin/ai-session-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ai_session_manager-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_session_manager-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 cd77aef3c5be620da5bedbcc386cb9e8e436cdbb812d82415b8dee97f510f6ea
MD5 05ae052d19edf562ea80160bc94a0bf2
BLAKE2b-256 5371c285b6ff2de9341cb3bff3c9d07cbe7b59e3442158e18c313053fefd65f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_session_manager-0.1.5-py3-none-any.whl:

Publisher: publish-pypi.yml on DrFatihTekin/ai-session-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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