Observed since 20 Oct, 19:51 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Interactive terminal UI for adrpy -- guided, human-friendly ADR management that runs every change through the adrpy CLI.
A rich terminal interface for adrpy-ai: guided, human-friendly management of Architecture Decision Records.
adrpy-tui puts menus, forms, lists and previews on top of adrpy-ai, the JSON-only ADR lifecycle CLI. Installing adrpy-tui with pip installs adrpy-ai with it (the 0.1 series), so one install gives you both: the screens to work in, and the adrpy command they drive. Every change still goes through adrpy -- the interface shows you the exact command before it runs, and adrpy's rules are the only ones that apply.

A first run: the language, Repository → Initialize, a new decision, Approve, then Explore.
adrpy command line before it runs, and adrpy's own rules are the only ones that apply -- the interface never writes a file itself.They are two packages by the same author, with one clear split:
| adrpy-ai | adrpy-tui | |
|---|---|---|
| What it is | The ADR lifecycle CLI: adrpy and adrpy-skills | A terminal UI built with Textual |
| Who it is for | Scripts, CI and AI coding agents -- flags in, JSON out, no prompts | People who would rather choose from a list than type flags |
| The rules (numbering, statuses, headers, supersede chains) | Defines and enforces them | Never reimplements one; it asks adrpy |
| Writes decision, config and decision-log files | Yes | Never -- it runs an adrpy command, shown to you first (ADR0001V01) |
| Runtime dependencies | None | adrpy-ai and Textual |
adrpy-tui runs the adrpy installed next to it, through its own Python interpreter (python -m adrpy), never whichever adrpy comes first on PATH (ADR0003V01). A repository managed with adrpy-tui is an ordinary adrpy repository: you can switch between the two, or use both, at any time.
Each adrpy-tui is validated against one series of adrpy-ai, and requires it:
| adrpy-tui | adrpy-ai it requires |
|---|---|
| 0.1.x | >=0.1.dev0,<0.2 -- the 0.1 series, development builds included |
pip install -U adrpy-ai), pip installs it anyway: it prints a dependency conflict ("ERROR: pip's dependency resolver ... adrpy-tui requires adrpy-ai<0.2,>=0.1.dev0, but you have adrpy-ai 0.2.0") and still finishes successfully. adrpy-tui notices at start-up: the main menu names the adrpy-ai found and the range expected. It keeps working, but a command whose flags changed may be refused by adrpy, and that refusal is shown as adrpy gives it. Install an adrpy-ai in the range again (pip install "adrpy-ai>=0.1.dev0,<0.2"), or an adrpy-tui validated with the newer series.adrpy-tui --version prints them.The range moves one series at a time, when adrpy-tui is validated against the next adrpy-ai: its forms are checked against adrpy's own help by the tests (ADR0004V01).
Requires Python 3.11 or later, on Windows, macOS or Linux.
pip install adrpy-tui
adrpy-tui
It installs adrpy-ai with it (see Versions and compatibility), so the same environment also has adrpy-ai's adrpy and adrpy-skills commands. As a command-line tool in its own environment, with pipx: pipx install adrpy-tui -- pipx puts only adrpy-tui on your PATH (the interface runs its own adrpy either way); for the adrpy command as well, also run pipx install adrpy-ai. Straight from GitHub, a branch or a commit, without cloning: pip install git+https://github.com/FRACerqueira/adrpy-tui.git.
Whether adrpy-tui then runs from any folder depends on where it was installed. Into a Python whose Scripts folder (Windows) or bin folder (macOS, Linux) is on your PATH, it does. With pip install --user, that folder is often not on PATH, and pip says so ("... which is not on PATH"): add the folder it names to PATH. Into a virtual environment, only while that environment is activated. pipx puts its commands on PATH; if it warns that its folder is not, run pipx ensurepath once and open a new terminal. To check, run where adrpy-tui on Windows (where.exe adrpy-tui in PowerShell) or command -v adrpy-tui on macOS and Linux. Run from any folder, adrpy-tui opens the repository in that folder (see Quick start).
adrpy-ai's package is adrpy-ai; ADRpy on PyPI is an unrelated project. Don't install it in the same environment as adrpy-tui: on Windows and macOS their import folders (adrpy and ADRpy) are the same folder, and their files mix.
To install from a clone instead:
git clone https://github.com/FRACerqueira/adrpy-tui.git
cd adrpy-tui
pip install .
adrpy-tui
The source install needs a git clone: the version is read from git, so a folder from GitHub's "Download ZIP" does not install. On Windows, some file names under doc/ are long; if git clone reports "Filename too long", clone with git clone -c core.longpaths=true https://github.com/FRACerqueira/adrpy-tui.git.
To work on adrpy-tui itself (running the test suite), see Contributing.
*) is empty or not valid: a notification names it and why ("Not run: Decision — Required."), its message shows under it, and the focus moves there. In a list, Enter moves from the filter to the list, and Enter again chooses the highlighted decision.adrpy-tui # the repository in the current folder
adrpy-tui --path <repo> # another repository
adrpy-tui --version # the installed adrpy-tui and adrpy-ai
adrpy command line; nothing runs until you confirm.Main menu
├─ Decisions New decision · Approve · Reject · Undo status · New version · New revision · Supersede
├─ Explore and validate Explore (every decision → its detail and the actions its state allows) · Check
├─ Decision log New entry · Browse the entries
├─ Repository Initialize · Configuration · Migrate (a guided builder for hand-written files)
├─ Install config the per-user default configuration
├─ AI skills List · Install · Remove (adrpy-skills)
├─ Command help the full contract of every adrpy and adrpy-skills command
├─ Change repository
├─ Language · Appearance · Keys · Editor · Updates
└─ Exit
Choosing a decision is picking it from a list, filtered by name, showing only the ones the command can take (F2 shows them all).
Every list shows eight rows a page, with where you are when there are more.
Any decision or log entry can be read rendered from any list of them (F3), following its links to other decisions.
A Proposed decision's text in your own editor. Choose it under Editor, by its program's name: vim, nvim, nano, micro, hx, code (VS Code), codium (VSCodium), subl (Sublime Text), kate, gedit, gvim or notepad, as found on your PATH; None is the default, and then you edit the file yourself, its text being the template. With one chosen, a new decision, version, revision or successor can open in it once created, and a Proposed decision's detail offers Edit. The TUI waits while the file is open -- a terminal editor takes the terminal, a window one can be left with Stop waiting -- and runs Check once it is closed; while a command or an editor you left still runs, Edit is refused until it ends, and what is saved in an editor you stopped waiting for is not checked. The TUI never writes the file itself (ADR0007V01). An Accepted decision's text changes through New revision or New version.
A newer adrpy-tui is said on the main menu. On every start the TUI asks PyPI (https://pypi.org/pypi/adrpy-tui/json) for adrpy-tui's versions, in the background, and names a newer one next to the installed one; it never updates itself. The first start checks too. Under Updates, turn the check off -- the TUI then reaches no network at all -- or include pre-releases, off by default; the screen says what the check found in this run (ADR0008V01).
Every screen, form and component is described in Screens and forms.
| Key | Does |
|---|---|
| ↑ ↓, PgUp PgDn, Home End | Move in a list (also from its filter) |
| Enter | Choose |
| Tab / Shift+Tab | Next / previous field |
| → | Accept a suggestion in a field |
| Esc | Back one level; on the main menu, leave |
| Ctrl+R | Run the screen's action: a form, saving a configuration, migrate, using a folder |
| F3 | Preview the decision or log entry under the cursor |
| F2 | In the decision picker, show every decision or only the available ones |
The three in bold can be changed in the main menu's Keys. The line at the bottom of every screen always names the keys that work there.
NO_COLOR is honored.adrpy-tui writes one file of its own, never in your repositories: the language, the appearance and customized colors, the changed keys, the editor chosen, whether it checks PyPI for a newer version and whether pre-releases count, and the last item chosen in each menu. Next to it, error.log holds the details of the last failure of adrpy-tui itself, if one happened.
| System | File |
|---|---|
| Windows | %APPDATA%\adrpy-tui\state.json |
| macOS, Linux | $XDG_STATE_HOME/adrpy-tui/state.json, or ~/.local/state/adrpy-tui/state.json |
Deleting it starts again from the language choice.
| Page | For | What it covers |
|---|---|---|
| Screens and forms | Everyone | The header, menus, lists, focus, keys, previews, colors, and every command's form |
| Architecture | Contributors | Why it exists, its boundaries, how adrpy is run and version-checked, the module map, testing |
| Manual test checklist | Maintainers | What to walk through in a real terminal before a release |
| Architecture decisions | Contributors | Every recorded decision with its state, scope and dates, in the index adrpy regenerates at each command that writes a decision |
| Decision log | Contributors | Audit findings and other non-architectural decisions, one entry each, written with adrpy log |
| Contributing | Contributors | Development setup, tests, translations, pull requests |
| Changelog | Everyone | What changed |
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.2.0 | 2 Oct 2026 | 5 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 19:51 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:1f98c40cb1e5be9fc1fc657c8da72b42398ed50d47bef7b1f93cd278f9cfbe3a