Skip to content

OpenNV Validation

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-packs defines the allowed commands, synthetic output grammars, and normalized result paths.
  • validation-packs defines versioned checks over normalized results.
  • clisynth renders deterministic CLI evidence without connecting to a network device.
  • opennv-contracts publishes shared API and document contracts.

Project status

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.

Quick start

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 bootstrap

Start 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/server

In 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.1

Open 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.

Development

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 check

The 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 audit

See CONTRIBUTING.md and development context before opening a pull request.

License

Apache License 2.0. See LICENSE.

About

Open Network Validation platform for scalable command execution, YAML checks, evidence, history, and operations UX.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages