Metadata-Version: 2.4
Name: pyvolt-cli
Version: 0.7.0
Summary: The command-line companion to Pyvolt: managed Python deployments on infrastructure you actually own.
Project-URL: Homepage, https://pyvolt.com
Project-URL: Repository, https://github.com/pyvolt-hq/pyvolt-cli
Project-URL: Issues, https://github.com/pyvolt-hq/pyvolt-cli/issues
Author-email: Will Abbott <will@digitaloutback.co.uk>
Maintainer-email: Pyvolt HQ <will@digitaloutback.co.uk>
License: MIT
License-File: LICENSE
Keywords: deployment,digitalocean,django,fastapi,flask,hetzner,paas,python,vps
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.11
Requires-Dist: httpx>=0.27
Requires-Dist: rich>=13.7
Requires-Dist: typer>=0.12
Description-Content-Type: text/markdown

# pyvolt-cli

The command-line companion to [Pyvolt](https://pyvolt.com) — managed Python
deployments on infrastructure you actually own.

```bash
uv tool install pyvolt-cli   # or: pipx install pyvolt-cli
pyvolt login                 # browser approval, no password in the terminal
pyvolt deploy myapp --follow
```

| Command | What it does |
|---|---|
| `pyvolt login` / `logout` / `whoami` | Device-flow auth (token stored in `~/.config/pyvolt/`, mode 600) |
| `pyvolt servers` / `pyvolt apps` | Inventory with live status |
| `pyvolt deploy DOMAIN [--follow]` | Trigger a deployment, optionally streaming the log |
| `pyvolt deployments DOMAIN` | Recent deployment history |
| `pyvolt env DOMAIN list\|get K\|set K=V…\|rm K` | Environment variables — pushed and app restarted |
| `pyvolt ps DOMAIN [restart NAME]` | Background processes with live systemd state |
| `pyvolt logs DOMAIN [-p NAME] [-n N]` | Tail the app's journal |
| `pyvolt metrics SERVER` | Latest CPU / memory / disk / network snapshot |
| `pyvolt bans SERVER` | IPs banned by fail2ban, your own flagged |
| `pyvolt unban SERVER [IP] [--me]` | Lift a ban — `--me` unbans your own IP, even while it's banned |
| `pyvolt ssh SERVER [--app DOMAIN]` | Open a shell on the server (as the `pyvolt` user); `--app` cds into the app dir |
| `pyvolt open DOMAIN` | Jump to the dashboard |

`DOMAIN` is the app's domain, or any unambiguous fragment of it — domains
are unique across the platform, so no server qualifier is ever needed.

Full guide: [pyvolt.com/docs/cli](https://pyvolt.com/docs/cli/) · HTTP API:
[pyvolt.com/api/docs](https://pyvolt.com/api/docs)

## Development

```bash
uv sync
uv run pytest
```

## License

MIT. See [LICENSE](LICENSE).
