Metadata-Version: 2.4
Name: lazyprox
Version: 0.9.1
Summary: Proxmox TUI
Keywords: proxmox,terminal,TUI,client,console
Author: Piotr Antczak
Author-email: Piotr Antczak <antczak.piotr@gmail.com>
License-Expression: MIT
License-File: LICENSE
Requires-Dist: proxmoxer>=2.3.0
Requires-Dist: pydantic>=2.13.4
Requires-Dist: requests>=2.34.2
Requires-Dist: rich>=15.0.0
Requires-Dist: textual>=8.2.6
Requires-Dist: textual-plotext>=1.0.1
Requires-Python: >=3.13
Project-URL: homepage, https://github.com/benzino77/lazyprox
Project-URL: repository, https://github.com/benzino77/lazyprox
Project-URL: issues, https://github.com/benzino77/lazyprox/issues
Description-Content-Type: text/markdown

<div align="center">
  <img src="https://raw.githubusercontent.com/benzino77/lazyprox/master/docs/images/lazyprox-logo.svg" width="60%">
</div>

# LazyProx

LazyProx is a lightweight Proxmox management helper that makes it easy to view and act on nodes, containers, and virtual machines. It provides a clean UI for exploring your Proxmox infrastructure and quickly selecting actions.

![view-1](https://raw.githubusercontent.com/benzino77/lazyprox/master/docs/images/main-graph.png)
![view-2](https://raw.githubusercontent.com/benzino77/lazyprox/master/docs/images/main-summary.png)
![view-3](https://raw.githubusercontent.com/benzino77/lazyprox/master/docs/images/main-action.png)

See the included asciinema animation for a short demo of how the tool works.

[![asciicast](https://asciinema.org/a/SsAswPbstoAz1H0y.svg)](https://asciinema.org/a/SsAswPbstoAz1H0y)

## Installation

You have to have Python 3.13 or higher installed on your system to run the tool. LazyProx is developed and tested on Linux, it is tested also on Windows WSL2, but it should work on any platform that supports Python.

LazyProx is published on [PyPI](https://pypi.org/project/lazyprox/), so you can install it with any Python package manager. The instructions below use `uv` and `pipx`.

> [!NOTE]
> LazyProx is using HTTP API of Proxmox, so you need to have access to it from the machine you want to run the tool on. 

### Using UV

to install run `uv tool install lazyprox`

to upgrade run `uv tool upgrade lazyprox`

to uninstall run `uv tool uninstall lazyprox`

> [!NOTE]
> UV can be installed following instructions on [uv Installation page](https://docs.astral.sh/uv/getting-started/installation/)

### Using pipx

to install run `pipx install lazyprox`

to upgrade run `pipx upgrade lazyprox`

to uninstall run `pipx uninstall lazyprox`

### From source

If you want the latest development version, you can install directly from GitHub:

to install run `uv tool install git+https://github.com/benzino77/lazyprox.git`

or with pipx `pipx install git+https://github.com/benzino77/lazyprox.git`

## Running

To run the tool, simply run `lazyprox` in your terminal. To get best experience you should use `Nerd Font` family fonts in your terminal.

Although it is rather easy to get information about the structure of the configuration file from the code, and what needs to be configured on the proxmox server side, you can also get it in a more user-friendly format by buying me a coffee. If you want to support the project and get the instructions on how to create the configuration file with all the necessary details and examples in PDF format, you can do so via [Ko-fi](https://ko-fi.com/s/353196d42e).

The look of the TUI can be customized with a color palette in the configuration file. Popular schemes such as Catppuccin, Tokyo Night, Nord, Dracula, or Gruvbox can be used by adding their color entries to the config; LazyProx applies them on startup.

## Running in Docker

You can also run LazyProx in a Docker container - you do not have to install it via `uv` or `pipx` directly on your system. You can build the Docker image using the provided `Dockerfile` and then run the container or you can pull the prebuilt image from github container registry.

```
docker run --name lazyprox -it --rm -v /path/to/config.toml:/config.toml ghcr.io/benzino77/lazyprox:latest -c /config.toml
```

## Bulk operations notes

Bulk operations are fire-and-forget: LazyProx sends one request per checked guest and does not wait for the requests to finish or check their result. When the notification says an operation was requested, it means Proxmox accepted the request, not that the guest has already started, stopped, or migrated. Check the Proxmox task list for the outcome. A request that fails does not cancel the remaining ones; the notification reports how many were requested and how many failed.

> [!WARNING]
> Shutdown is only an attempt at a graceful shutdown. If the guest does not react, LazyProx does not retry, wait, force a stop, or perform any other action. Use the single-guest Stop action for that.

> [!IMPORTANT]
> Migrate is experimental. It has been tested on a Proxmox cluster with native ZFS storage, where Proxmox uses ZFS mechanisms to move guests between nodes, and it may not work with other storage setups such as Ceph or NFS. Migrating a running QEMU virtual machine transfers its local disks and can take a long time. Running LXC containers are migrated in restart mode: the container is stopped, migrated, and started on the target node.
>
> The single-guest Enter menu offers the same Migrate action for running and stopped LXC containers and QEMU VMs when at least two nodes are online and the guest's node is online, with the same destination choices and caveats as the bulk dialog. Single-guest migrations are fire-and-forget too: the notification means Proxmox accepted the request, not that the migration has finished.

## Disclaimer

Everything you do, you do on your own responsibility. I do not take any responsibility for damages or problems, that may arise as a result of using this solution or its products. It is provided "as is" without any warranties or guarantees. Use it at your own risk.

## License

LazyProx is licensed under the [MIT license](LICENSE).
