OpenNV Validation is the repository-driven control plane and web console for network command execution and automated validation. It can run a reviewed set of show commands against real devices through the bounded Nornir executor or against a synthetic inventory through the independent CliSynth service.
This repository contains three deployable components:
| Component | Location | Responsibility |
|---|---|---|
| Go control plane | backend/ |
Inventory snapshots, GitOps activation, scheduling, validation, evidence, history, and HTTP API |
| Web console | web/ |
Operator workflows for inventory, commands, validations, runs, repositories, and emulator evidence |
| Nornir executor | executor/ |
Authenticated, read-only, platform-aware command execution and OutputFSM normalization |
The command and policy catalogs intentionally live in separate repositories:
outputfsm-packsdefines the allowed commands, synthetic output grammars, and normalized result paths.validation-packsdefines versioned checks over normalized results.clisynthrenders deterministic CLI evidence without connecting to a network device.opennv-contractspublishes shared API and document contracts.
OpenNV is pre-1.0. The APIs and pack formats are versioned but may change before the first stable release. The architecture is designed for horizontal workers and immutable shards; the current implementation is not a claim that a single process has met the project's 100,000-device/hour target. Capacity must be measured with the exact inventory, device mix, commands, timeouts, and deployment topology intended for production.
Real-device execution is read-only by policy, but it still reaches management interfaces and handles privileged credentials. Use least-privilege accounts, strict host keys, reviewed command packs, private service networking, resource limits, and an external secret manager.
For a local console backed by deterministic demo state:
git clone https://github.com/open-nv/opennv-validation.git
git clone https://github.com/open-nv/outputfsm-packs.git
git clone https://github.com/open-nv/validation-packs.git
cd opennv-validation
make bootstrapStart the API:
OPENNV_DEMO_MODE=true \
OUTPUTFSM_PACK_ROOT="$(cd ../outputfsm-packs && pwd)" \
VALIDATION_PACK_ROOT="$(cd ../validation-packs && pwd)" \
go -C backend run ./cmd/serverIn another terminal, start the console:
cd opennv-validation/web
VITE_API_URL=http://127.0.0.1:8080/v1 \
VITE_DEMO_FALLBACK=false \
npm run dev -- --host 127.0.0.1Open the URL printed by Vite. Demo mode uses ephemeral in-memory state and an explicit synthetic backend; it is not a production configuration and does not prove CliSynth or real-device connectivity.
See the full quickstart to run CliSynth-backed emulation, configure MongoDB, or enable the real executor. Read the architecture guide before extending a service boundary.
Prerequisites are Go 1.26.6 (or automatic Go toolchain download), Node.js 22,
Python 3.11 or newer, and a sibling checkout of outputfsm-packs. Then run:
make bootstrap
make checkThe default check is non-Docker and runs formatting/lint checks, unit tests, and builds for all three components. Browser tests and dependency audits are separate targets because they require additional tooling:
make web-e2e
make audit-tools
make auditSee CONTRIBUTING.md and development context before opening a pull request.
Apache License 2.0. See LICENSE.