eNMS is a vendor-agnostic NMS designed for building workflow-based network automation solutions.
It encompasses the following aspects of network automation:
- Configuration Management Service: Backup with Git, change and rollback of configurations.
- Validation Services: Validate data about the state of a device with Netmiko and NAPALM.
- Ansible Service: Store and run Ansible playbooks.
- REST Service: Send REST calls with variable URL and payload.
- Python Script Service: Any python script can be integrated into the web UI. eNMS will automatically generate a form in the UI for the script input parameters.
- Workflows: Services can be combined together graphically in a workflow.
- Scheduling: Services and workflows can be scheduled to start at a later time, or run periodically with CRON.
- Event-driven automation: Services and workflows can be triggered from the REST API.
Your network topology can be created manually or imported from an external Source of Truth (OpenNMS, LibreNMS, or Netbox). Once created, it is displayed in a sortable and searchable table. A dashboard provides a graphical overview of your network with dynamic charts.
| Inventory | Dashboard |
|---|---|
- Docs: Network Creation
eNMS can display your network on a world map (Google Map or Open Street Map). Each device is displayed at its GPS coordinates. Network topology diagrams can be created using devices and links from inventory, and adding labels for clarity.
| Geographical View | Network Builder |
|---|---|
- Docs: Network Visualization
eNMS comes with a number of "default services" leveraging libraries such as ansible, requests, netmiko, napalm to perform simple automation tasks. However, absolutely any python script can be turned into a service. If your python script takes input parameters, eNMS will automatically generate a form in the web UI.
Services can be combined into a workflow.
- Docs: Services, Workflow System
eNMS can be used as a device configuration backup tool, like Oxidized/Rancid, with the following features:
- Poll network devices and store the latest configuration in the database
- Store any operational data that can be retrieved from the device CLI (e.g
show version,get factsetc.) - Search for any text or regular-expression in all configurations
- Download device configuration to a local text file
- Use the REST API support to return a specified device’s configuration
- Export all configurations to a remote Git repository (e.g. Gitlab)
- View git-style differences between various revisions of a configuration
| Search Configuration | Compare Configuration |
|---|---|
- Docs: Configuration Management
While services can be run directly and immediately from the UI, you can also schedule them to run at a later time, or periodically by defining a frequency or a CRON expression. All scheduled tasks are displayed in a calendar.
Services can also be executed programmatically: eNMS has a REST API and a CLI interface that can be used to create, update and delete any type of objects, but also to trigger the execution of a service.
- Docs: Scheduling
eNMS is available in two versions: an Open Core version (this repository), and an Enterprise Edition with advanced features for production deployments.
| Feature | Open Core | Enterprise Edition |
|---|---|---|
| Workflow Automation | ✓ | ✓ |
| Configuration Management | ✓ | ✓ |
| Network Visualization | ✓ | ✓ |
| REST API | ✓ | ✓ |
| Multi-User Authentication | ✗ | ✓ |
| Role-Based Access Control | ✗ | ✓ |
| Advanced Scheduler | ✗ | ✓ |
| TACACS+ / LDAP / Duo 2FA | ✗ | ✓ |
| Service Import / Export | ✗ | ✓ |
| Migration Mechanism | ✗ | ✓ |
| Change Revert / Audit Trail | ✗ | ✓ |
| Administration Panel | ✗ | ✓ |
| Production Scripts & Tools | ✗ | ✓ |
| Professional Support | ✗ | ✓ |
The Enterprise Edition is ideal for organizations deploying eNMS in production environments where security, compliance, multi-tenancy, and professional support are critical requirements.
- Multi-User Authentication System: Full login page with secure session management
- Enterprise Authentication: Support for TACACS+, LDAP, and Duo 2FA integration
- Role-Based Access Control (RBAC): Configure granular permissions per user or group
- Control who can view, edit, or run specific workflows and services (per user or per team)
- Define access levels for devices, configurations, and network resources
- User & Group Management: Comprehensive administrative interface for managing teams and permissions
- Scheduler Application: Advanced scheduling capabilities for workflow automation
- Schedule with crontab expressions or specific date/time
- Centralized view and control of scheduled tasks (with calendar interface)
- Service Import / Export: Package services and workflows as
.tgzarchives- Share automation solutions between different eNMS instances
- Create backup archives of critical workflows
- Transfer workflows between dev and production environments
- Change Tracking & Revert: Complete audit trail with rollback capability
- Every modification is logged (who changed what and when)
- One-click revert to any previous state
- Administration Panel: Centralized dashboard for system management
- Server health monitoring and performance metrics
- Worker process management and load balancing
- Migration Mechanism: Seamless backup and migration mechanism for upgrading between eNMS versions
- Export / import your entire database in YAML or JSON format
- Version-controlled migrations ensure data integrity during upgrades
- Production Utilities: Enterprise-grade maintenance scripts and tools
- Database optimization and backup management
- Advanced SQL debugging and log analysis
- Expert Technical Support: Direct access to eNMS developers
- Priority Bug Fixes: Expedited resolution of critical issues
- Implementation Assistance: Help with deployment, customization, and best practices
- Regular Updates: Access to security patches and feature updates
Interested in upgrading? Visit www.enms.io or contact us at [email protected] for pricing and licensing information.
Install python 3.12+ (earlier versions not supported)
git clone https://github.com/afourmy/eNMS.git
cd eNMS
pip3 install -r build/requirements/requirements.txt
export FLASK_APP=app.py
flask run --host=0.0.0.0
Log in (default credentials: admin / admin)