Skip to main content

juniper-canopy

PyPI Python 3.11+ License: MIT

A real-time dashboard to watch and steer Cascade-Correlation training as it happens.

juniper-canopy is a Dash + FastAPI dashboard that renders Juniper training dynamics live: it pulls metrics and network topology from juniper-cascor over REST and WebSocket and visualises loss, accuracy, and unit recruitment as the network grows. It draws dataset context from juniper-data and exposes a WebSocket control surface to pause, resume, and step a run from the browser. A demo mode runs the whole UI against simulated data with no backend.

Part of the Juniper platform. juniper-canopy is the real-time monitoring dashboard of Juniper — a multi-package ML research platform built around constructive (Cascade-Correlation) and recurrent neural networks. It reads from juniper-cascor and juniper-data over HTTP.

Install

pip install juniper-canopy

Run

Demo mode — no backend required, simulated training:

./demo                                 # then open http://localhost:8050

Service mode — against live juniper-cascor + juniper-data instances:

export JUNIPER_CANOPY_CASCOR_SERVICE_URL=http://<cascor-host>:8200
export JUNIPER_DATA_URL=http://<data-host>:8100
python src/main.py                     # dashboard on http://localhost:8050

API docs are served at /docs (Swagger) and /redoc.

Configuration

Settings load from the JUNIPER_CANOPY_ environment namespace (src/settings.py):

Variable Default Purpose
JUNIPER_CANOPY_CASCOR_SERVICE_URL URL of the juniper-cascor service (required for service mode).
JUNIPER_DATA_URL http://localhost:8100 URL of the juniper-data service.
JUNIPER_CANOPY_DEMO_MODE false Set 1 to run the UI against simulated data (no backend).
JUNIPER_CANOPY_SERVER__HOST / JUNIPER_CANOPY_SERVER__PORT 127.0.0.1 / 8050 Bind address / port. A non-loopback host requires a perimeter attestation (JUNIPER_CANOPY_LOOPBACK_PUBLISH_ATTESTED or JUNIPER_CANOPY_AUTH_PROXY_ATTESTED); otherwise startup fail-closes (SEC-F22).
JUNIPER_DATA_API_KEY API key for juniper-data when its auth is enabled.
JUNIPER_CANOPY_LOG_LEVEL INFO Logging verbosity.

Docker

docker build -t juniper-canopy:latest .
docker run --rm -p 8050:8050 juniper-canopy:latest                # demo mode (image default)

docker run --rm -p 8050:8050 \
  -e JUNIPER_CANOPY_DEMO_MODE=0 \
  -e JUNIPER_CANOPY_CASCOR_SERVICE_URL=http://host.docker.internal:8200 \
  -e JUNIPER_DATA_URL=http://host.docker.internal:8100 \
  juniper-canopy:latest                                           # service mode

For the orchestrated full stack, see juniper-deploy.

Status

Beta on PyPI. The current version is shown by the badge above; see CHANGELOG.md. Supports Python 3.11–3.14.

Documentation

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

juniper_canopy-0.6.0.tar.gz (309.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

juniper_canopy-0.6.0-py3-none-any.whl (332.8 kB view details)

Uploaded Python 3

File details

Details for the file juniper_canopy-0.6.0.tar.gz.

File metadata

  • Download URL: juniper_canopy-0.6.0.tar.gz
  • Upload date:
  • Size: 309.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for juniper_canopy-0.6.0.tar.gz
Algorithm Hash digest
SHA256 771ed76e3b4ad4b3a6d685399b0a493f1420b8456a52fe9958eb7c93cf992bbf
MD5 e26ddbe287fa2c2696030a0b40f3be76
BLAKE2b-256 d27e28706c134b646d8ab5014621fb20893549b4610c741a8ec60e283bf98194

See more details on using hashes here.

Provenance

The following attestation bundles were made for juniper_canopy-0.6.0.tar.gz:

Publisher: publish.yml on pcalnon/juniper-canopy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file juniper_canopy-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: juniper_canopy-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 332.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for juniper_canopy-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fd3a1686e8cb919745326cc1618d02acd68fb2ce670910a5dbd9f02283bfdd1e
MD5 de8d07ea85f9f345768cd018ff643baa
BLAKE2b-256 f9d6b80c3bf060a76260bbb343063350fd38d62267948e5e83240cb85a5b1ca8

See more details on using hashes here.

Provenance

The following attestation bundles were made for juniper_canopy-0.6.0-py3-none-any.whl:

Publisher: publish.yml on pcalnon/juniper-canopy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page