genie
Genie: THE standard pyATS Library System
What it is and what it does
Genie is a test automation framework and standard library for pyATS, designed to accelerate network testing by providing object-oriented abstractions for device configuration (Conf), operational state (Ops), and event-driven testing through a modular harness. It abstracts away differences between operating systems and management interfaces (CLI, YANG, REST), allowing developers to write reusable test cases in Python that work across heterogeneous network environments.
The framework bundles configuration management, operational state representation, test harness orchestration, and utility functions into a cohesive system. Developers use Genie to define network topologies, verify device states, and trigger dynamic test scenarios based on predefined events. It supports rapid iteration and scaling from simple linear tests to complex asynchronous suites, with active maintenance and broad Python version support (3.8+) on Linux and macOS.
Use it for:
- Automate network device configuration validation across multiple vendors and OS types using unified Python objects
- Build event-driven test suites that dynamically generate test cases based on network triggers and verification rules
- Verify operational state consistency across network devices after configuration changes or failures
- Develop reusable test libraries for CI/CD pipelines in network automation and NetDevOps workflows
- Perform data-driven testing of network features with scalable, asynchronous test execution
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Genie is a test automation library and harness built on the pyATS framework, providing object-oriented abstractions for network device configuration, operational state, and event-driven testing across multiple operating systems and management interfaces.
Yes, if you are building network test automation on Linux or macOS. Genie is actively maintained, production-stable, carries no known vulnerabilities, and provides a mature framework for network device testing. The permissive Apache 2.0 license and broad Python support (3.8+) make it suitable for enterprise use. Install friction is moderate due to 12 dependencies, but prebuilt wheels minimize compilation overhead. Not suitable for Windows environments.
Install
genie on PyPI
pip
pip install genieuv
uv add geniepoetry
poetry add genieInstalling genie
Before you install
Medium install friction due to 12 runtime dependencies including multiple genie.libs subpackages. Active maintenance with a release 7 days ago. Supports Python 3.8+ across macOS and Linux with prebuilt wheels for Python 3.10–3.14.
License in practice
Apache 2.0 permissive license allows commercial and private use with minimal restrictions, making it suitable for enterprise network testing environments.
Quickstart
pip install genie
from genie import testbed
tb = testbed.load('testbed.yaml')
device = tb.devices['device_name']
device.connect()
Requires Linux or macOS; Windows is not supported. Testbed YAML configuration file needed to define network devices.
Verify before relying
- Specific capabilities of each genie.libs subpackage (conf, clean, health, filetransferutils, ops, parser, sdk) and how they integrate
- Whether all 12 runtime dependencies are always required or if some are optional for specific use cases
- Current state of documentation and examples at the Cisco DevNet homepage
Package facts
| License | Apache 2.0 (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 12 — PrettyTable, tqdm, dill, jsonpickle, netaddr, genie.libs.conf, genie.libs.clean, genie.libs.health, genie.libs.filetransferutils, genie.libs.ops, genie.libs.parser, genie.libs.sdk |
| Maintenance | actively maintained — 7 days since the last release |
| First released | |
| Downloads | 283,131/month — #8,079 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: genie-26.7-cp310-cp310-macosx_11_0_universal2.whl; genie-26.7-cp310-cp310-manylinux2014_aarch64.whl; genie-26.7-cp310-cp310-manylinux2014_x86_64.whl; genie-26.7-cp311-cp311-macosx_11_0_universal2.whl; genie-26.7-cp311-cp311-manylinux2014_aarch64.whl; genie-26.7-cp311-cp311-manylinux2014_x86_64.whl; genie-26.7-cp312-cp312-macosx_11_0_universal2.whl; genie-26.7-cp312-cp312-manylinux2014_aarch64.whl; genie-26.7-cp312-cp312-manylinux2014_x86_64.whl; genie-26.7-cp312-cp312-musllinux_1_2_x86_64.whl; genie-26.7-cp313-cp313-macosx_11_0_universal2.whl; genie-26.7-cp313-cp313-manylinux2014_aarch64.whl; genie-26.7-cp313-cp313-manylinux2014_x86_64.whl; genie-26.7-cp314-cp314-macosx_11_0_universal2.whl; genie-26.7-cp314-cp314-manylinux2014_aarch64.whl; genie-26.7-cp314-cp314-manylinux2014_x86_64.whl
Keywords: genie, pyats, test, automation, cisco, netdevops
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
genie.libs.opsGenie Libs Ops provides a library component for…
permissive · top 15,000 on PyPI
genie.libs.sdkGenie Libs SDK provides a library of reusable…
permissive · top 15,000 on PyPI
pyats.contribProvides open-source extensions, plugins, and…
permissive · top 15,000 on PyPI
genie.libs.confGenie Libs Conf provides Python object-based…
permissive · top 15,000 on PyPI
genie.libs.parserParses device output into structured data for…
permissive · top 15,000 on PyPI
genie.libs.cleanGenie Clean provides device recovery and state…
permissive · top 15,000 on PyPI
genie.trafficgenProvides connection implementations to traffic…
permissive · top 15,000 on PyPI
genie.libs.filetransferutilsProvides utility functions for transferring…
permissive · top 15,000 on PyPI
genie.libs.robotProvides RobotFramework keywords to interact…
permissive · top 15,000 on PyPI
yang.connectorProvides NETCONF and gRPC/GNMI client…
permissive · top 15,000 on PyPI