pyinfra
What it is
pyinfra is a free, Python-native tool for automating infrastructure across servers. It uses SSH to run commands concurrently and idempotently through Python deploys and inventories. Operations can describe a desired host state or run specific commands, and the `--dry` option previews per-host changes before applying them. The project says pyinfra works across deployments from one host to 10,000, with parallel execution and real-time streaming output. Target hosts need a shell and SSH, but no agent, daemon, state file, or control plane. Documented connectors include SSH, Docker, Terraform, and the local machine. Its operations cover package managers, files, services, databases, security, and containers. pyinfra runs wherever Python runs, with Mac, Linux, and Windows named as supported control systems. Python 3.10 or later is required; pyinfra 3.5.1 and later supports Python 3.10 through 3.13. The project is MIT licensed. Users can seek help through its Matrix room and Stack Overflow, and report bugs through GitHub issues.
For and against
For
- Agentless execution requires only a shell and SSH on target hosts.
- `--dry` previews per-host changes before application.
- Supports parallel execution and real-time streaming output.
- Connectors include SSH, Docker, Terraform, and the local machine.
Against
- Requires Python 3.10 or later.
- Windows installation requires Administrator privileges.
- Security guidance recommends installing as a regular user, not root or sudo.
The verdict
pyinfra offers Python-based automation with an agentless model, preview option, and connectors for several environments. Check its Python requirement and installation guidance before adopting it.
Who it suits
pyinfra suits users automating infrastructure across servers with Python deploys and inventories. It may fit teams that want agentless SSH execution and a preview of per-host changes before applying them.
Plans and prices
pyinfra
MIT licensed · Python 3.10+
Read 5 Oct 2026 · pyinfra.com
On the record
- Agents
- The site says target hosts need a shell and SSH, with no agents, daemons, state files, or control plane.pyinfra.com · read 5 Oct 2026
- Connectors
- Documented popular connectors include SSH, Docker, Terraform, and the local machine.docs.pyinfra.com · read 5 Oct 2026
- Control platforms
- pyinfra runs wherever Python runs; the compatibility page names Mac, Linux, and Windows as supported control systems.docs.pyinfra.com · read 5 Oct 2026
- Declarative and imperative operations
- Operations can describe a desired host state or run specific commands directly.docs.pyinfra.com · read 5 Oct 2026
- Intended use
- The site presents pyinfra for automating infrastructure across servers using Python deploys and inventories.pyinfra.com · read 5 Oct 2026
- Operations
- The operations reference lists modules for package managers, files, services, databases, security, and containers.docs.pyinfra.com · read 5 Oct 2026
- Preview changes
- The site says `--dry` previews per-host changes before they are applied.pyinfra.com · read 5 Oct 2026
- Purpose
- pyinfra is a Python-native, agentless automation tool that runs commands over SSH concurrently and idempotently.pyinfra.com · read 5 Oct 2026
- Python requirement
- Python 3.10 or later is required, and pyinfra 3.5.1+ supports Python 3.10 through 3.13.docs.pyinfra.com · read 5 Oct 2026
- Remote system compatibility
- The compatibility page says pyinfra aims to support Unix-like systems and lists Linux distributions, BSDs, OpenSUSE, macOS via `@local`, and Docker via `@docker`.docs.pyinfra.com · read 5 Oct 2026
- Scale
- The site says pyinfra works on one host or 10,000, with parallel execution and real-time streaming output.pyinfra.com · read 5 Oct 2026
- Security practices
- The installation guide recommends keeping pyinfra and dependencies up to date and installing as a regular user rather than root or sudo.docs.pyinfra.com · read 5 Oct 2026
- Support
- The project directs users to its Matrix room and Stack Overflow for help, and to GitHub issues for bug reports.docs.pyinfra.com · read 5 Oct 2026
- Windows requirement
- The installation page says Windows users need Administrator privileges for installation.docs.pyinfra.com · read 5 Oct 2026