DEMO
Demo and user walkthrough
Nodra ships a full user-demo path: control plane console, A–Z fleet simulation, and verification scripts.
One-command Kubernetes demo¶
./scripts/demo-k8s.sh
# or: make demo-k8s PORT=18080
This builds the image, loads it into kind (unless --no-kind), installs Helm with values-demo.yaml (control plane + edge agent + nodra-sim), and port-forwards the console.
| Item | Value |
|---|---|
| Sign in | admin / nodra-demo-admin |
| Console | http://127.0.0.1:18080 (or --port) |
| Teardown | ./scripts/demo-k8s.sh --uninstall |
Existing cluster:
./scripts/demo-k8s.sh --no-kind
Compose¶
docker compose up --build
Default UI port is NODRA_PORT (see compose file). Credentials match the demo admin token unless overridden.
Console walkthrough¶
- Open the control plane URL. The login gate uses Kryton-style chapters: Product → This edge → Sign in.
- Sign in with
NODRA_ADMIN_USER/NODRA_ADMIN_PASSWORD(password defaults toNODRA_ADMIN_TOKEN). - Walk the tabs:
| Tab | What you should see |
|---|---|
| Overview | Site/online counts, live activity preview |
| Sites | Enrolled edge sites; Revoke (admin) |
| Devices | Devices + twins; Set desired on twins (admin) |
| Streams | Routes; create form / seed / Delete (admin) |
| Apps | Deployments + alerts; create / start-stop / resolve (admin) |
| Dead letters | Replay + Delete (admin) |
| Logs | Mac Terminal–style activity stream |
Viewer login (NODRA_VIEWER_*) can browse but not mutate.
- Refresh fleet reloads overview data. Sign out clears the session token and returns to the login gate.
Fleet simulator (nodra-sim)¶
Seeds up to 26 lettered sites (A–Z), devices, twins, routes, and continuously posts heartbeats, telemetry, and detailed activity lines.
export NODRA_ADMIN_TOKEN=...
export NODRA_ENROLLMENT_TOKEN=...
./bin/nodra-sim \
--server http://127.0.0.1:8080 \
--once \
--sites 26 \
--state /tmp/nodra-sim-state.json
| Flag / env | Meaning |
|---|---|
--server / NODRA_SERVER |
Control plane base URL |
--admin-token / NODRA_ADMIN_TOKEN |
Admin bearer |
--enrollment-token / NODRA_ENROLLMENT_TOKEN |
Bootstrap enroll |
--sites |
1–26 lettered sites |
--once |
Seed then exit (no loop) |
--interval |
Continuous loop period (default 8s) |
--state / NODRA_SIM_STATE |
Resume state file |
Activity lines appear under Logs and the overview live preview via GET /api/v1/activity.
Lab / remote¶
./scripts/deploy-remote.sh 212.8.248.187 sus --port 20059
./scripts/smoke-remote.sh --port 20059
./scripts/demo-client.sh --port 20059
make test-all PORT=20059 HOST=212.8.248.187
Default lab smoke credentials: admin / nodra-lab-admin (token nodra-lab-admin unless overridden).
Script map¶
| Script | Purpose |
|---|---|
scripts/demo-k8s.sh |
kind/Helm user demo |
scripts/demo-client.sh |
API login + console client walkthrough |
scripts/smoke.sh |
Local control plane + agent smoke |
scripts/smoke-remote.sh |
Health, login, lists, activity against a live URL |
scripts/smoke-relay-bridge.sh |
Nodra→Relay bridge + mock Accept |
scripts/test-all.sh |
Build + local smoke + optional remote deploy/smoke + short sim |
scripts/deploy-remote.sh |
Build/push/restart remote systemd unit; writes .deploy-last |
Zyvor Relay¶
Offline edge events can Accept into Zyvor Relay via nodra-relay-bridge:
make build
export RELAY_BASE_URL=https://relay.example:8443
export RELAY_AUTH_TOKEN=<jwt>
./bin/nodra-relay-bridge --listen :8095
# Nodra Streams route target_url → http://127.0.0.1:8095/v1/nodra/delivery
See docs/RELAY.md and examples/relay.