PLTUI - The Pulumi Terminal UI
A terminal UI to explore and operate on your Pulumi stacks.
Built with Textual and the Pulumi Automation API.
Features
- State explorer: browse a stack's resources as a parent/child tree.
- Search and filters: live search (type, name, URN, ID, parent URN), a resource-type dropdown and a "Protected only" checkbox, all on one row.
- Multi-selection: select resources with the keyboard, or use filter-aware Select all / Deselect all.
- Resource details: overview, inputs, outputs and a diff of both, in a modal.
- Pulumi actions: preview, up, refresh and destroy, on the selected resources or the whole stack.
- Safe by design: up, refresh and destroy show a preview first and apply only after confirmation. If the stack state changes while you review, apply is blocked.
- State editing: delete resources from the state, or protect and unprotect them (🔒 marks protected resources).
- Pulumi-branded dark theme built on the three colours of the Pulumi logo.
Install
The package pulumi-tui provides the pltui command.
| Tool | Install | Upgrade | Run |
|---|---|---|---|
| pipx | pipx install pulumi-tui |
pipx upgrade pulumi-tui |
cd /path/to/pulumi/project && pltui |
| uv | uv tool install pulumi-tui |
uv tool upgrade pulumi-tui |
cd /path/to/pulumi/project && pltui |
| uvx | none (no install needed) | n/a | uvx --from pulumi-tui pltui |
| Source | git clone https://github.com/SharpEdgeMarshall/pulumi-tui.git && cd pulumi-tui && poetry install |
git pull && poetry install |
poetry run pltui |
Requires Python 3.11 or newer.
Doesn't require pulumi, it's auto installed.
Building from source requires Poetry.
Usage
Run pltui from a Pulumi project directory, or point it at one:
cd path/to/your/pulumi-project
pltui
# or
pltui -C path/to/your/pulumi-project
Choose a stack with the dropdown in the header, then explore its resources.
| Option | Description |
|---|---|
-C, --cwd |
Run as if started in this Pulumi project directory, like pulumi -C. Defaults to the current directory. |
-V, --version |
Show the version and exit. |
-h, --help |
Show the help and exit. |
Keybindings
Actions
| Key | Action |
|---|---|
Ctrl+P |
pulumi preview |
Ctrl+U |
pulumi up |
Ctrl+R |
pulumi refresh |
Ctrl+X |
pulumi destroy |
Ctrl+D |
Delete the selected resources from the state only (pulumi state delete) |
Ctrl+L |
Protect the selected resources. Needs at least one unprotected resource selected. |
Ctrl+O |
Unprotect the selected resources. Needs at least one protected resource selected. |
Ctrl+\ |
Command palette |
Ctrl+Q |
Quit |
Resource tree
| Key | Action |
|---|---|
Space |
Select or deselect the focused resource |
A / D |
Select all / deselect all resources matching the filters |
E |
Expand or collapse the focused branch |
Enter or double-click |
Open the resource details |
Resource selection
Select all and Deselect all affect only resources matching the current filters, including matches in collapsed branches. Parents shown only for context are not selected. Selections hidden by filters stay selected and are counted in the title.
Selection survives reloads of the same stack, dropping resources that no longer exist, and is cleared when a different stack is loaded.
Try it locally
examples/local is a real Pulumi Python project on a local filesystem backend. It creates only component resources, so no cloud credentials, providers or billable infrastructure are needed.
make setup # install dependencies
make example-init # create the dev and sandbox stacks with sample state
make run # open pltui against the example project
make example-init is safe to re-run. Use make example-clean to remove the local state and start over.
Contributing
Contributions are welcome. See CONTRIBUTING.md for setup, project layout and conventions.
License
Apache-2.0. See LICENSE.
Metadata
Release files for pulumi-tui 0.1.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 | |
|---|---|---|---|---|
| pulumi_tui-0.1.1.tar.gz | 23.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pulumi_tui-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.5 kB
Release files / pulumi_tui-0.1.1.tar.gz
| Download URL | pulumi_tui-0.1.1.tar.gz |
|---|---|
| Size | 23.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dcf4b0e3dbc3a4b86a9f6a4164e22b553021f67e1a4ab2ef8b80c60c6e728b3c
|
|
BLAKE2b-256 checksum How to use checksums |
3b2d2267b70ab9260459c2ede941e2eba7fac0803ba421840d3670db3c4bafdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 14, 2026.
Transparency logRelease files / pulumi_tui-0.1.1-py3-none-any.whl
| Download URL | pulumi_tui-0.1.1-py3-none-any.whl |
|---|---|
| Size | 26.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
249bacd8cf7cccf3b7077b33f51b7d44a95d5b5ce0bad31134efdcb475e8c708
|
|
BLAKE2b-256 checksum How to use checksums |
4f3af3f68bfa97d93898e88adf636cba8e9a8df132f83ddb78604112b22c656b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 14, 2026.
Transparency logSecurity for pulumi-tui 0.1.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 pulumi_tui-0.1.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 14, 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.