mainai
A CLI that figures out which coding agent (Claude Code, Codex, Grok, ...) last did real work in a project folder, and hands off cleanly to the one you pick next.
The problem
Working the same project folders with several coding agents means that coming back months later, it's unclear which agent did the most recent real work, and what the other agents did in the meantime.
What it does
$ mainai .
Found 6 session(s) in /home/user/projects/endotypes
codex 2026-09-25 "fix the endotype clustering..." <- latest work
claude 2026-09-18 "add the GSE cohort loader..."
...
Continue with: codex (its edits match the files on disk; the Claude sessions
were read-only questions)
Advice: cd /home/user/projects/endotypes && codex
$ mainai --handoff .
...
Wrote /home/user/projects/endotypes/HANDOFF.md
- Reads every agent's stored conversations, keeps the ones for the given folder.
- Decides which agent to continue with. An LLM reads each session's actual content (not just the newest timestamp) and recommends one, with its reasoning printed alongside the pick.
- Prints advice: the command to run to continue with that agent. mainai never launches anything itself.
The folder argument is required (mainai . for the current directory) --
mainai with no arguments prints help and does nothing, so a stray bare
invocation after install never spends tokens or bills an API key unasked.
Flags: --list (sessions + a free file-evidence guess only, no LLM call, no
file written), --agent NAME (override the pick, no LLM call), --handoff
(also summarize the other agents' sessions into HANDOFF.md, one extra LLM
call), -y/--yes (skip the confirmation before an LLM call that would
bill ANTHROPIC_API_KEY directly, when no claude.ai subscription login is
found).
See mainai.md for the full design notes (reader architecture, per-agent log
formats, picker logic, summarizer, scope/build order).
Status
Readers for Claude Code, Codex, and Grok, the LLM-based picker, --handoff,
and the CLI are implemented. Published to PyPI as mainai.
Development
uv-managed project.
uv sync
uv run mainai --list .
Metadata
Release files for mainai 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mainai-0.2.2.tar.gz | 19.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mainai-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.3 kB
Release files / mainai-0.2.2.tar.gz
| Download URL | mainai-0.2.2.tar.gz |
|---|---|
| Size | 19.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7b116cd3b3e365ad170af1c4485b7f27186d77660b654873fcdf452ecc912886
|
|
BLAKE2b-256 checksum How to use checksums |
6a9f9ead6ee97282a643b9480bd6f144513523081d13996783a34dbf25fd2766
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.4
|
Release files / mainai-0.2.2-py3-none-any.whl
| Download URL | mainai-0.2.2-py3-none-any.whl |
|---|---|
| Size | 17.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a89048a7ebdbce4451b41c3571dedb7fd30f1fea51c222708195fd065a49a463
|
|
BLAKE2b-256 checksum How to use checksums |
b588fbbcb17ceeb0368d82adb5910ed12ee9f3f51569cf6df2aa7a1ac6736048
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.4
|