nornir
Pluggable multi-threaded framework with inventory management to help operate collections of devices
What it is and what it does
Nornir is a Python automation framework designed for managing and operating collections of network devices. Unlike traditional automation tools that use domain-specific languages, Nornir lets you write all automation logic directly in Python, making it easier to debug and leverage existing Python tooling. The framework handles inventory management, multi-threaded task dispatch, and provides a plugin architecture so you can extend it with custom tasks and integrations.
Since version 3.0.0, Nornir ships without built-in plugins; instead, you install plugins separately via pip as needed. It depends only on ruamel-yaml for configuration parsing and supports Python 3.10 through 3.14. The framework is actively maintained, with recent releases and an active community on GitHub and Discord.
Use it for:
- Automate configuration deployment across a fleet of network devices by writing Python scripts that iterate over your inventory.
- Gather operational data (show commands, metrics) from multiple devices in parallel and process results in Python.
- Build custom network validation or compliance checks by combining Nornir tasks with your own Python logic.
- Integrate network automation into larger Python applications or CI/CD pipelines without learning a new DSL.
- Troubleshoot automation failures using standard Python debugging tools (pdb, logging) instead of framework-specific diagnostics.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Nornir is a pure Python automation framework that manages device inventory and dispatches tasks across network nodes, letting you write automation logic directly in Python rather than a domain-specific language.
Yes. Nornir is actively maintained, has low install friction, carries a permissive Apache-2.0 license, and is well-suited for teams comfortable with Python who want to avoid a domain-specific language. The framework is mature (since 2018) and has a growing plugin ecosystem. Install it if you need to automate network device operations and prefer writing Python over learning a DSL.
Install
nornir on PyPI
pip
pip install norniruv
uv add nornirpoetry
poetry add nornirInstalling nornir
Before you install
Low install friction; pure Python wheel with a single runtime dependency on ruamel-yaml. Actively maintained with a recent release (12 days old) and steady commit activity.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; you may use, modify, and distribute Nornir freely provided you include the license notice.
Quickstart
pip install nornir
from nornir import InitNornir
nr = InitNornir(config_file="config.yaml")
results = nr.run(task=your_task_function)
Requires Python 3.10 or higher; you must provide a config file (typically YAML) to define your inventory and settings.
Verify before relying
- Whether the plugin ecosystem is sufficiently mature and stable for your use case (documentation references a community plugin list but stability varies).
- Performance characteristics under large-scale deployments (fact sheet does not quantify typical device counts or task throughput).
- Integration requirements with existing network management or monitoring tools in your environment.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — ruamel-yaml |
| Maintenance | actively maintained — 12 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 94,506/month — #13,325 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: nornir-3.6.0-py3-none-any.whl
Tags
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
psutilpsutil retrieves real-time information about…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
uvloopuvloop is a drop-in replacement for Python's…
permissive · top 1,000 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
pyzmqPyZMQ provides Python bindings for ZeroMQ…
permissive · top 1,000 on PyPI
scrapliscrapli is a Python library for connecting to…
permissive · top 15,000 on PyPI
ansible-navigatoransible-navigator is a text-based user…
permissive · top 15,000 on PyPI
ansible-tower-cliA command-line tool for managing Ansible Tower…
permissive · top 15,000 on PyPI
pyinfrapyinfra executes Python code as infrastructure…
permissive · top 15,000 on PyPI
lmllml provides a lazy plugin management system…
permissive · top 5,000 on PyPI
arqarq provides a job queue system for Python that…
permissive · top 5,000 on PyPI
monaiMONAI is a PyTorch-based framework for building…
permissive · top 15,000 on PyPI
broadlinkA Python module and CLI for discovering,…
permissive · top 15,000 on PyPI
textXtextX is a meta-language for building…
permissive · top 15,000 on PyPI
antaANTA is a Python framework that automates…
permissive · top 15,000 on PyPI