Planner AI
Multi-agent terminal UI: several independent proposer agents inspect the workspace in parallel (each on a model you pick), then a separate consensus agent reconciles their outputs into one plan or answer. Plan mode writes plan.md; Ask mode returns a Q&A answer. It plans and answers; it does not execute.
It is both multi-model (Claude, Cursor, Codex, and optional mocks) and multi-agent (one agent per proposer, plus a consensus agent—not a single agent that fans out to several models).
This package is the Python/Textual port. The TypeScript app at the repo root remains available until you cut over fully.
Requirements
- Python ≥ 3.14
- uv
Install and run
From this directory (development)
cd planner-ai
uv sync
uv run planner
Or:
uv run python -m planner_ai
Install as a tool (any project)
From PyPI:
uv tool install planner-ai
# or: pip install planner-ai
From this package directory (development):
uv tool install .
Then from any project you want to plan:
cd ~/code/my-app
planner
Both the Bun and Python CLIs expose the same console name planner. If both are on your PATH, whichever comes first wins. Prefer one install at a time, or call the Python app explicitly with uv run --directory /path/to/planner-ai planner.
Auth / tokens
On first run the TUI opens Auth when no real credential is set (set at least one real provider; empty Enter cancels a token editor):
- Claude Code OAuth token — run
claude setup-token, then paste (Team / Pro / Max subscription) - Cursor API key — from Cursor Dashboard → Integrations
- Codex API key — from OpenAI API keys
Tokens are saved under the OS user config directory (same path and JSON shape as the TypeScript app):
- macOS:
~/Library/Application Support/planner-ai/config.json - Linux:
~/.config/planner-ai/config.json(or$XDG_CONFIG_HOME/planner-ai) - Windows:
%APPDATA%\planner-ai\config.json
Never commit tokens or put them in .env. The app does not log credential values.
Providers without a key are omitted; if none are set, mock providers are used. With real keys present, mocks appear only when includeMocks is enabled (press m on Proposers/Consensus).
If a stored key fails auth during a run, the error screen offers r to remove that key from config and re-enter it (or q to quit). To clear all credentials without launching the TUI:
uv run planner --reset-auth
# or, if installed as a tool:
planner --reset-auth
What it does
- Plans/asks against the folder you launched the CLI in (
cwd) - Runs several proposer agents in parallel, each on a different model (one failure does not cancel the others)
- Runs a separate consensus agent (on its own model) to reconcile those proposals
- Plan mode: writes
plan.mdin that folder (backs up an existing file asplan.md.bak) and archives the run - Ask mode: same multi-agent proposer + consensus flow with Q&A prompts; does not write cwd
plan.md; archives under.planner-ai/ask-…/
TUI
Fullscreen alternate-screen UI with tabs:
| Tab | Shortcut | What it does |
|---|---|---|
| Plan | Ctrl+1 |
Plan/Ask toggle, enter a goal or question, watch proposals / consensus, browse the result |
| Proposers | Ctrl+2 |
Pick proposer models (multi) — Claude / Cursor / Codex / Mock |
| Consensus | Ctrl+3 |
Pick the consensus model (single) |
| Auth | Ctrl+4 |
Set or clear Claude OAuth / Cursor / Codex API keys |
| History | Ctrl+5 |
Browse past successful runs archived under .planner-ai/ |
You can also click the tab labels. On Models: click a row or use ↑↓ / PgUp/PgDn, Space toggle/choose, / filter, m toggle mocks, c continues to Plan.
Startup opens Auth if no real credential is set, else Proposers if there is no saved selection, else Plan.
How it works
- You provide a goal (Plan) or question (Ask) on the Plan tab.
- Each proposer agent inspects the current working directory (read-only) with its own tools and proposes independently.
- A consensus agent inspects the workspace and reconciles those proposals into one plan or answer.
- Plan mode writes
plan.md; both modes archive under.planner-ai/.
flowchart LR
Goal[Goal or question] --> Proposers[Proposer agents in parallel]
Proposers --> Consensus[Consensus agent]
Consensus --> Plan[plan.md or answer.md archive]
Output
plan.md (Plan mode) is the artifact meant for a later execution step. This tool produces the plan; it does not run it.
Each successful run is archived under .planner-ai/:
.planner-ai/
plan-2026-08-13T16-48-00/
anthropic-claude-sonnet-4-5-output.md
plan.md
ask-2026-08-13T16-49-00/
cursor-composer-2.5-output.md
answer.md
- Plan runs:
plan-{YYYY-MM-DDTHH-MM-SS}/with per-model*-output.mdand consensusplan.md - Ask runs:
ask-{YYYY-MM-DDTHH-MM-SS}/with per-model*-output.mdand consensusanswer.md - Collision dirs:
plan-{ts}-2,plan-{ts}-3, … - History lists both kinds newest-first (by timestamp, not full dirname)
Archives written by the TypeScript app remain readable.
Development
cd planner-ai
uv sync
uv run planner # TUI (plans cwd)
uv run planner --reset-auth
uv run pytest
uv run ruff check src tests
Plan another folder without installing:
cd ~/code/my-app
uv run --directory /path/to/planner-ai/planner-ai planner
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 planner_ai-0.4.0.tar.gz.
File metadata
- Download URL: planner_ai-0.4.0.tar.gz
- Upload date:
- Size: 36.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d7799e914b1512dd867d7d9cc9eb833202330c557ea46fef497c14b5c31b22e
|
|
| MD5 |
37d81793c2a1ddda95a0d4e1a5eed6e2
|
|
| BLAKE2b-256 |
82ffb61cbaef67b8707adde8a8bb7dbafae143ca2532c419647bf1560b4b7143
|
File details
Details for the file planner_ai-0.4.0-py3-none-any.whl.
File metadata
- Download URL: planner_ai-0.4.0-py3-none-any.whl
- Upload date:
- Size: 53.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b4e947a4c99240a086a2f650cc3ed114ca6b0a64a0dc41b473c1b1f4210e977
|
|
| MD5 |
eb449ed5097d02217823e45e6855432f
|
|
| BLAKE2b-256 |
7c6b289256dcefc6975c5e6fcdd26725196c529d141041d4a32f7f305cc5b0e0
|