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.

Metadata

Release files for juniper-canopy 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for juniper-canopy 0.8.0
File Size Uploaded
juniper_canopy-0.8.0.tar.gz 375.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for juniper-canopy 0.8.0
File Interpreter ABI Platform
juniper_canopy-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 774.2 kB

Release files / juniper_canopy-0.8.0.tar.gz

Download URL juniper_canopy-0.8.0.tar.gz
Size 375.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d1d52e8c07f8c896284c66981e781c7befcc2fae0b2b0b25577a7db03dd15bea
BLAKE2b-256 checksum
How to use checksums
402b843e40394cfab96caa40a657828a2dc4d5395d68ff47fa5a1fb8322ad4dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / juniper_canopy-0.8.0-py3-none-any.whl

Download URL juniper_canopy-0.8.0-py3-none-any.whl
Size 399.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
805e9576f196e415865a068bceea8b6128cd44e6f26a0ad90d6257c32bd9e63a
BLAKE2b-256 checksum
How to use checksums
38e9c15b316358c109ed4ce275f906799fe7871786c8ca3b84ef10a3d59d6a8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.1

2 release files

This release

0.8.0 This release

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page