lazyplan (lpui) — v0.27.1
Plan work with your coding agent, in the terminal.
lazyplan is one shared plan for you and your agent. You get a fast keyboard screen. Your agent gets a simple command line. Plans, milestones, and tasks stay in one place instead of disappearing into chat. Read-only git and PR provenance shows where each one landed.
Install
pipx install lazyplan-tui
lpui --help
On Windows, use the pip backend:
pipx install --backend pip lazyplan-tui
lpui --version
The shared home is %LOCALAPPDATA%\lazyplan\ and the default --actor is
%USERNAME%. Plan text is read as UTF-8 or UTF-16 and written as UTF-8, so
PowerShell 5 exports round-trip.
Prefer a system package or the one-line installer? See install options.
Start
cd ~/my-plan
lpui # first run detects agents and creates the plan store
lpui plan add --title "my-plan" --why "reason" --what "scope"
lpui
Working with a team? lpui setup --placement repo keeps the plan in the repo.
Want demo data first? Run lpui seed.
Why it feels different
- One source of truth. The plan you see is the plan your agent reads. No copy-pasting context between chats.
- Made for focus. Plans stay as one-line summaries until you open them. Detail is there when you need it.
- Yours to keep. Local-first by default. Export or import any time. No account, no cloud, no lock-in.
New in 0.27
- Windows parity. Install, agent hooks, upgrades, and UTF-8 plan files now
work on Windows. Claude Code hooks match both Git Bash and PowerShell, the
shared home follows
%LOCALAPPDATA%, and the gates run on Linux, macOS, and Windows. - Fast at scale. Reads are batched end to end. On the 88-plan fixture the
tree dropped from 909 queries to 12,
list --jsonfrom 7,853 to 18, export from 18,612 to 26, and TUI refresh from 5,148 to 139. Query budgets are now a release gate. - Quieter CLI reads. Update notices are cache-only, so list, show, hooks, MCP, and porcelain calls make no network request.
What you get
- A plan tree with progress at a glance, plus milestones and tasks underneath.
- A preview of the reason, the next tasks, and what done means.
- A read-only detail page for careful reading, with quick keys to edit and move work.
- Claim, blocked, gate, and attention state on the rows that need it.
- One place your agent can update while you keep the big picture.
Built to scale
The benchmark fixture holds 88 plans, 275 milestones, and 789 tasks. Query counts are deterministic and gated on Linux, macOS, and Windows:
| Path | Before | After |
|---|---|---|
| Tree load | 909 queries / 120 ms | 12 / 48 ms |
list --json |
7,853 / 560 ms | 18 / 62 ms |
export --format json |
18,612 / 1,222 ms | 26 / 27 ms |
| TUI refresh | 5,148 / 557 ms | 139 / 112 ms |
Linux timings from the final sweep. See performance for the method, budgets, and per-platform ceilings.
How it works
- Plans start as one-line summaries with progress. Open one to reveal milestones, then tasks.
- The right pane previews the selected row: why, what, next tasks, and acceptance progress.
- The bottom line shows the keys that work right now.
?opens help;copens the command palette. - Your agent writes through the same command line. The screen updates as it works.
Everyday commands
lpui list # plans and progress
lpui plan show --id 1 # why, what, criteria, milestones
lpui task move --id 1 --to doing # move work forward
lpui criterion tick --id 1 # tick the next acceptance item
lpui feed # recent activity
For your agent
The command line reads and writes the same plan, with porcelain rows, JSON, and clear exit codes:
lpui --actor helper --porcelain next
lpui --actor helper --porcelain note add --kind task --id 3 --text "Decision"
lpui --actor helper --porcelain list --tree
lpui --actor helper list --json
Use --porcelain in an active loop: writes answer with one tab-separated row
and reads stay glyph-free. Use --json when you need full fidelity.
- Coordinate.
nextclaims the first eligible task with a renewable lease, so two agents do not take the same work. Renew or release the claim, note handoffs, and block parked work with a reason. - Prove. Relate each plan criterion to a proving task;
lpui trace --plan 1shows the evidence andlpui lint --plan 1 --strictgates the gaps. - Collaborate. Comments and mentions live on plans, milestones, and tasks.
lpui share --plan 1produces a read-only HTML or JSON snapshot;lpui syncmerges plans by stable UID without overwriting conflicts. - Gate completion.
task finish --require-pr --require-checksreads cached PR and CI evidence before done;--override REASONrecords an exception. A branch already recorded on another open task is rejected. - Import work.
lpui issue importbrings GitHub issues (live) or Linear exports in as plans or tasks with source refs. Imports are one-way and re-import only refreshes source metadata. - Use MCP. Hosts that support the Model Context Protocol can call
lpui mcpfor typed tools and resources;--read-onlyis available for reviewers. - Watch flow.
lpui stats --since 7.daysshows WIP, cycle time, aging, stale work, and reopened rows. The TUI Attention filter surfaces the same risks, and/searches titles, descriptions, notes, comments, claims, blocked reasons, and issue refs.
In the screen, space marks rows for bulk move/block/release with one undo.
After each commit, link it and move the task. lpui audit --since 7.days --strict turns the three accuracy metrics into a CI gate. lpui setup
installs read-only lifecycle hooks for detected agents; lpui setup --no-hooks
removes them.
The first run installs the agent skill. lpui setup --placement repo generates
the full contract in the repo. See the usage guide
for every command and limit.
Your data
Plans live in one local database: shared in your home by default, or inside a repo with lpui setup --placement repo. Back up with lpui export --format json; restore with lpui import --file. See data and backup.
Learn more
- Screenshots and quickstart
- Usage and CLI reference
- Performance and benchmarks
- Setup walkthrough
- Changelog
- Contributing (main is protected; open a PR)
- Releases · Issues
MIT licensed. This repo plans itself: run lpui list.
Metadata
Release files for lazyplan-tui 0.27.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| lazyplan_tui-0.27.1.tar.gz | 213.7 kB | With provenance | Details for lazyplan_tui-0.27.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lazyplan_tui-0.27.1-py3-none-any.whl | Python 3 | none | any | Details for lazyplan_tui-0.27.1-py3-none-any.whl |
Total release size: 472.8 kB
Release files / lazyplan_tui-0.27.1.tar.gz
| Download URL | lazyplan_tui-0.27.1.tar.gz |
|---|---|
| Size | 213.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2cf634a56cd7f9d0f3da3aaa27f3757305bb4aede9a3597397e22e1f16da049d
|
|
BLAKE2b-256 checksum How to use checksums |
a25d0b4656cba8869aadde2232608823b8e704cc43a48520de6dc96bd2e0b4ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logRelease files / lazyplan_tui-0.27.1-py3-none-any.whl
| Download URL | lazyplan_tui-0.27.1-py3-none-any.whl |
|---|---|
| Size | 259.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ed97249438feff41768dec70292c49d5668c833450601537c491739a6670949f
|
|
BLAKE2b-256 checksum How to use checksums |
5542c6f2d1c277bc07d324ca48147eb9c44cfb75914469a5382251630da07df7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logSecurity for lazyplan-tui 0.27.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for lazyplan_tui-0.27.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.