NetStacksNetStacks

Your network, programmable

Configuration templates and stacks, MOPs, AI agents and a REST API. Automate everything from config backups to multi-step change procedures, with pre-checks, post-checks and rollback built in.

4MOP Phases
3Execution Modes
gNMI + NETCONFConfig Push
OpenAPIREST API
Configuration Templates

Infrastructure-as-code for your network

Write reusable, parameterized configuration templates in Jinja syntax on the Controller. Variables, conditionals, loops, filters and macros, rendered by MiniJinja. Preview the rendered output before it goes anywhere near a device.

Every change to a template's source is saved as a new version, and the variables it uses are detected automatically when you save it.

  • Jinja syntax with variables, conditionals, loops, and filters
  • A new version on every source change
  • Live render preview before deployment
  • Templates live on the Controller, shared across your team
interface-config.j2Jinja2
{# Base interface configuration template #}
{% for interface in interfaces %}
interface {{ interface.name }}
  description {{ interface.description }}
  ip address {{ interface.ip }} {{ interface.mask }}
  {% if interface.ospf_enabled %}
  ip ospf {{ ospf_process }} area {{ interface.ospf_area }}
  ip ospf cost {{ interface.ospf_cost | default(10) }}
  {% endif %}
  {% if interface.acl %}
  ip access-group {{ interface.acl }} in
  {% endif %}
  no shutdown
!
{% endfor %}

{# Generate OSPF summary #}
router ospf {{ ospf_process }}
  router-id {{ router_id }}
  {% for network in ospf_networks %}
  network {{ network.prefix }} {{ network.wildcard }} area {{ network.area }}
  {% endfor %}
Stack Templates

Deploy complete configurations as atomic units

Group related templates into Stacks: an ordered list of services deployed together. Deploy a complete set of configuration (interfaces, routing, security, monitoring) to many devices as a single operation over gNMI or NETCONF.

Variables can be shared across the whole stack or set per device, and can be filled in from an external API. Before pushing, the Controller backs up each device; afterwards it checks that the change landed.

  • Services deploy in the order you set
  • Shared and per-device variables
  • Optional atomic mode: roll every device back if one fails
  • Pre-deploy backup and post-deploy validation
Perfect for new site deployments. Build a stack with base config, routing, security, and monitoring templates, save the variable values as an instance, and deploy it to every new router the same way.
1
Base Interface Config

L3 interfaces, descriptions, IPs

2
OSPF Routing

Process, networks, areas, cost

3
BGP Peering

Neighbors, route-maps, filters

4
ACL & Security

Access lists, management ACLs

5
SNMP & Monitoring

SNMP communities, syslog, NTP

Step-by-step operational workflows with built-in safety

Plan pre-checks, changes, post-checks and rollback in the Terminal, then execute them step by step, phase by phase, or with the AI pilot. MOPs work in the free Terminal and with the Controller

1

Pick the Devices

Choose saved sessions in the free Terminal, or inventory devices when you are connected to the Controller. Credentials come from the credential profile, never from the procedure.

2

Run the Pre-Checks

Show commands capture the starting state. Each step can assert on its output: contains, does not contain, regex or exact line. A failed assertion fails the step.

3

Make the Change

Change steps can be CLI commands, saved Python scripts or Quick Actions that call a REST API. Run them one at a time, phase by phase, or let the AI pilot drive at the trust level you set.

4

Verify with Post-Checks

Post-checks run the same kind of assertions against the new state. Pair a pre-check with its post-check to compare before and after.

5

Roll Back if Needed

The rollback section is written before anything runs. When a step fails, execution pauses, skips or aborts, as you choose, and the rollback steps are ready to run.

The NetStacks MOP execution view: control mode and strategy selectors, a device with nine pending steps grouped into pre-checks, changes and post-checks, and the step output pane

Building blocks for every procedure

Combine these to turn a change plan into something you can run and review

CLI Command

Run a command on each target device over SSH. The output is captured against the step so you can review it after the change.

Python Script

Call one of your saved Python scripts as a step, with arguments, for checks that are easier to write in code than as a pattern.

Quick Action (REST)

Call a saved REST request against one of your API Resources: open a ticket, update an IPAM record, or query a monitoring system mid-change.

Output Assertions

Say what the output must or must not contain, as plain text, a regex or an exact line. Select text in a captured output to turn it into an assertion.

Pause Points

Pause automatically after the pre-checks, after the changes or after the post-checks, so a human looks at the state before the next phase starts.

Change Review

With the Controller, submit a MOP for review. Reviewers approve or reject it from the admin console, and the decision and comment stay with that revision.

Config Backups

Config history for every managed device

The NetStacks Controller pulls running configurations over SSH with each platform's own commands, or over gNMI and NETCONF for structured platforms, and keeps every pull as a numbered version for that device.

Engineers open the latest backup or the full backup history straight from the Devices panel in the Terminal, add notes, and diff any two versions. Snapshots back up a whole site or device type in one go, and every stack deployment takes its own backup first.

  • SSH collection for Cisco, Juniper, Arista, Palo Alto, Fortinet, F5 and Linux
  • Structured pulls over gNMI and NETCONF
  • Every pull stored as a numbered version with notes
  • Config diff in the Terminal's Config Backups tab
collection-commands.txtText
# What the Controller runs to pull a config over SSH
Cisco IOS / IOS-XE / IOS-XR / NX-OS
  terminal length 0
  show running-config

Juniper Junos
  set cli screen-length 0
  show configuration | display set

Arista EOS
  terminal length 0
  show running-config

Palo Alto PAN-OS
  set cli pager off
  show config running

Fortinet FortiOS
  show full-configuration
AI Agents

AI agents that investigate in the background

Agents are AI workers you define once, with a name, a system prompt and the model to use, and then hand tasks to from the Agents panel. An agent runs in the background, queries your devices, gathers diagnostic data and writes up what it found, asking you a question when it needs one.

Device commands from an agent go through the same read-only filter as the assistant, and file writes wait for your approval. A long investigation in the chat can be promoted to a background task, and an agent can hand part of the work to a specialist agent.

  • Custom agents with their own prompt, provider and model
  • Read-only SSH to devices for diagnostics
  • Runs saved as transcripts you can continue as a chat
  • Approval prompts before an agent writes files
Task GivenPrompt, or promote a chat
PlanReason, act, observe loop
InvestigateRead-only SSH, gather data
ReportAnswer, document or ask you

Build on top of NetStacks

A REST API, a plugin system for the Controller, and saved REST calls for your custom workflows

REST API

The Controller exposes its devices, templates, stacks, MOPs, users and audit log over a JSON REST API, with an OpenAPI spec and Swagger UI built in. Authenticate with a bearer token from the login endpoint.

GET /api/devicesPOST /api/config/templatesPOST /api/mopsGET /api/admin/audit

Plugin System

Build custom plugins for the NetStacks Controller (Enterprise) with the netstacks-plugin scaffold CLI, which generates a Python FastAPI service. Each plugin runs as its own container with its own database schema, behind the Controller at /api/plugins/<name>.

terminalBash
$ netstacks-plugin new my-integration
$ netstacks-plugin validate my-integration
$ netstacks-plugin package my-integration
# produces my-integration-<version>.nspkg
# upload it on the Controller's Plugins page

Quick Actions

Save REST requests against your API Resources and call them from a MOP step or the status bar. Integrate with your existing tools without writing a plugin.

Bearer tokenBasic authAPI key headerMulti-step authAny REST API

NetBox Integration

Import devices from NetBox, with credential profiles mapped by site and role and CLI flavour by platform or manufacturer. Run a sync whenever you want to pick up new devices. Your DCIM becomes your session library, or your Controller inventory.

Device system information panel showing NetBox integration with direct link to device in NetBox

Ready to automate your network?

Start with MOPs and AI agents in the free Terminal. Add the Controller for templates, stacks and shared config history.