NAAS - Netmiko As A Service
NAAS is a REST API wrapper for Netmiko that runs commands and pushes configurations to network devices over SSH. You submit jobs via HTTP; workers execute them asynchronously and store results in Redis.
What does it do?
- Asynchronous job processing — Commands run in background workers; the API returns immediately with a job ID
- Broad device support — Works with any device Netmiko supports (Cisco IOS/NX-OS, Arista EOS, Juniper Junos, Palo Alto, and many others)
- Python client & CLI —
pip install naas-client[cli]for typed API access and terminal usage - Authentication & RBAC — HTTPS, HTTP Basic Auth, JWT API keys with role-based access control (admin/operator/viewer)
- Context routing — Route jobs to workers in specific network segments, VRFs, or geographies
- Job lifecycle — Query status, wait for completion, cancel in-flight jobs, replay failed jobs
- Observability — Prometheus metrics, structured audit logging, OpenTelemetry distributed tracing
- Reliability — Circuit breakers, SSH connection pooling, graceful shutdown, queue backpressure
Quick Example
# Submit job
curl -X POST https://naas.example.com/v2/send-command \
-H "Authorization: Bearer eyJ..." \
-H "Content-Type: application/json" \
-d '{"host": "192.168.1.1", "platform": "cisco_ios", "commands": ["show version"]}'
# Get results
curl https://naas.example.com/v2/send-command/<job_id> \
-H "Authorization: Bearer eyJ..."
Basic Auth also works for quick testing — see the Quick Start for a minimal example.
Getting Started
- Quick Start — Get NAAS running in 5 minutes with Docker Compose
- Deployment Overview — Choose a deployment method (Helm, Docker Compose, or manual)
- Python Client & CLI — Library and CLI usage
- API Usage — REST API examples
- Upgrading to v2.0 — Migration guide from v1.x