Skip to main content

lazyplan (lpui) — v0.27.1

Release PyPI License: MIT

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.

See it in action →

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 --json from 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; c opens 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. next claims 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 1 shows the evidence and lpui lint --plan 1 --strict gates the gaps.
  • Collaborate. Comments and mentions live on plans, milestones, and tasks. lpui share --plan 1 produces a read-only HTML or JSON snapshot; lpui sync merges plans by stable UID without overwriting conflicts.
  • Gate completion. task finish --require-pr --require-checks reads cached PR and CI evidence before done; --override REASON records an exception. A branch already recorded on another open task is rejected.
  • Import work. lpui issue import brings 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 mcp for typed tools and resources; --read-only is available for reviewers.
  • Watch flow. lpui stats --since 7.days shows 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

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)

Source distribution for lazyplan-tui 0.27.1
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)

Table of built distributions (wheels) for lazyplan-tui 0.27.1
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

0.27.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page