Local Quickstart

This quickstart gets a local NOCFoundry instance running with the validation demo and UI.

Prerequisites

  • Go 1.25 or later
  • Docker if you want the local Keycloak flow
  • a shell with access to this repository

Optional: start the local SR Linux topology

If you want to test against a realistic network fabric instead of static examples, use the containerlab topology in examples/containerlab/.

Install containerlab only when you need it:

./examples/containerlab/install-containerlab.sh

Deploy the lab:

sudo containerlab deploy -t examples/containerlab/noc-foundry-lab.clab.yaml

This lab gives you a 5-node SR Linux Clos-style fabric with:

  • 2 spines and 3 leaves
  • ISIS underlay reachability
  • NETCONF enabled on every node
  • OpenConfig/gRPC enabled on every node

When you are done:

sudo containerlab destroy -t examples/containerlab/noc-foundry-lab.clab.yaml

Build the binary

go build -o nocfoundry

Start the local Keycloak lab

docker compose -f docker/docker-compose.keycloak.yaml up -d
./docker/keycloak-setup.sh

Start NOCFoundry

./nocfoundry \
  --tools-file examples/tools-configs/keycloak-protected-validation.yaml \
  --server-config examples/server-configs/protected-api-mcp-ui.yaml \
  --validation-config examples/validation-runtime-configs/durable-validation-sqlite.yaml \
  --ui

This quickstart uses a self-contained example tool catalog, so it does not need --prebuilt.

If you want to mix the bundled validation lifecycle tools into a custom catalog, use:

./nocfoundry \
  --prebuilt validation-runs \
  --tools-file examples/tools-configs/keycloak-protected-validation.yaml \
  --server-config examples/server-configs/protected-api-mcp-ui.yaml \
  --validation-config examples/validation-runtime-configs/durable-validation-sqlite.yaml \
  --ui

This demo enables:

  • protected /api and /mcp
  • browser UI login with Keycloak
  • durable validation runs backed by SQLite

Open the UI

Visit:

http://127.0.0.1:5000/ui/

Sign in with the local Keycloak test account created by docker/keycloak-setup.sh.

Run the first workflow

Start a validation run:

./nocfoundry invoke start_validation_run \
  '{"validation":"maintenance_validation","params":{"phase":"pre"},"idempotency_key":"maintenance-pre-001"}'

Check status:

./nocfoundry invoke validation_run_status \
  '{"run_id":"<run-id>","after_sequence":0,"limit":20}'

Fetch the result:

./nocfoundry invoke validation_run_result \
  '{"run_id":"<run-id>"}'

Next steps