Juniper is an AI/ML research platform for investigating dynamic neural network architectures and novel learning paradigms. The project emphasizes ground-up implementations from primary literature, enabling a more transparent exploration of fundamental algorithms.
This service is part of the Juniper ecosystem. Verified compatible versions:
| juniper-data | juniper-cascor | juniper-canopy | data-client | cascor-client | cascor-worker |
|---|---|---|---|---|---|
| 0.4.x | 0.3.x | 0.2.x | >=0.3.1 | >=0.1.0 | >=0.1.0 |
For full-stack Docker deployment and integration tests, see juniper-deploy.
JuniperCanopy is the monitoring dashboard of the Juniper ecosystem. It depends on both JuniperData and JuniperCascor to display real-time training data.
βββββββββββββββββββββββ REST+WS ββββββββββββββββββββββββ
β JuniperCanopy β ββββββββββββββββΊ β JuniperCascor β
β Dashboard ββhere β β Training Svc β
β Port 8050 β β Port 8200 β
ββββββββββββ¬βββββββββββ ββββββββββββ¬ββββββββββββ
β REST β REST
βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β JuniperData β
β Dataset Service Β· Port 8100 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Modes: Service mode (live CasCor backend via JUNIPER_CANOPY_CASCOR_SERVICE_URL or legacy CASCOR_SERVICE_URL) or Demo mode (JUNIPER_CANOPY_DEMO_MODE=1, no backend required).
| Service | Relationship | Notes |
|---|---|---|
| juniper-cascor | Canopy monitors CasCor training | Set JUNIPER_CANOPY_CASCOR_SERVICE_URL (or legacy CASCOR_SERVICE_URL) to activate service mode |
| juniper-data | Canopy fetches datasets for visualization | Set JUNIPER_DATA_URL |
| juniper-cascor-client | REST+WS client used internally by Canopy | pip install juniper-cascor-client |
| Variable | Required | Default | Description |
|---|---|---|---|
JUNIPER_CANOPY_CASCOR_SERVICE_URL |
Yes* | β | JuniperCascor URL β activates service mode |
JUNIPER_DATA_URL |
No | http://localhost:8100 |
JuniperData URL (optional in demo mode due to local fallback) |
JUNIPER_CANOPY_DEMO_MODE |
No | false (1 in Docker image) |
Set to 1 to run without a backend |
JUNIPER_CANOPY_SERVER__HOST |
No | 127.0.0.1 |
Server bind address |
JUNIPER_CANOPY_SERVER__PORT |
No | 8050 |
Server port |
CASCOR_SERVICE_URL |
No | β | Legacy fallback for JUNIPER_CANOPY_CASCOR_SERVICE_URL |
CASCOR_DEMO_MODE |
No | β | Legacy fallback for JUNIPER_CANOPY_DEMO_MODE |
* Required for service mode. Omit to fall back to demo mode.
# Full stack (recommended):
git clone https://github.com/pcalnon/juniper-deploy.git # (private repository)
cd juniper-deploy && docker compose up --build
# Standalone (demo mode by default in Dockerfile):
docker build -t juniper-canopy:latest .
docker run --rm -p 8050:8050 \
juniper-canopy:latest
# Standalone (service mode with external CasCor):
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:latestIn demo mode, dataset generation first attempts JuniperData and falls back to local spiral generation if JuniperData is unavailable (warning logged in demo_mode).
The requirements.lock file pins exact dependency versions for reproducible Docker builds. The pyproject.toml retains flexible >= ranges for local development.
Regenerate after changing dependencies in pyproject.toml:
uv pip compile pyproject.toml --extra juniper-data --extra juniper-cascor --extra observability -o requirements.lockThe observability extra includes optional runtime integrations used by src/observability.py (prometheus-client, sentry-sdk).
All dependencies including juniper-data-client and juniper-cascor-client are resolved from PyPI.
juniper_cascor: Cascade Correlation Neural Network
- Reference implementation from foundational research (Fahlman & Lebiere, 1990)
- Designed for flexibility, modularity, and scalability
- Enables investigation of constructive learning algorithms
juniper_canopy: Interactive Research Interface
- Research-driven monitoring and visualization environment
- Delivers novel observations through real-time network introspection
- Transforms metrics into insights, accelerating experimental iteration
Juniper prioritizes transparency over convenience and understanding over abstraction. By implementing algorithms from first principles, the platform provides increased visibility into network behavior, enabling a more rigorous and more controlled investigation of learning dynamics and architectural innovations.
Version: 0.3.0
Status: β
Production Ready
- Python 3.11 or higher installed
- Conda/Mamba (Miniforge3 or Miniconda)
- Git for cloning the repository
Demo mode runs without the CasCor backend, simulating training data for development and testing.
# Clone the repository
git clone https://github.com/pcalnon/juniper-canopy.git
cd juniper-canopy
# Activate environment
conda activate JuniperCanopy
# Launch demo mode
./demoExpected output:
INFO: Uvicorn running on http://0.0.0.0:8050 (Press CTRL+C to quit)
Dash is running on http://127.0.0.1:8050/Open Dashboard: Navigate to http://localhost:8050/dashboard/
You should see:
- β Training Metrics tab with live loss/accuracy plots
- β Network Topology tab with network visualization
- β Decision Boundary tab with boundary plot
- β Dataset tab with data points
# Health check
curl http://localhost:8050/health
# Get current metrics
curl http://localhost:8050/api/metrics
# Get network topology
curl http://localhost:8050/api/topologyConnect to the real CasCor backend:
# Set backend path
export CASCOR_BACKEND_PATH=/path/to/cascor
# Disable demo mode
unset CASCOR_DEMO_MODE
# Launch
./tryFor complete setup instructions, see docs/QUICK_START.md.
- Documentation Overview - Complete navigation guide
- README.md - This file
- CHANGELOG.md - Version history and release notes
- Constants Guide - Application constants reference
- Quick Start Guide - Get running in 5 minutes
- Environment Setup Guide - Complete environment configuration
- User Manual - Comprehensive usage guide
- API Reference - Complete REST API and WebSocket documentation
- API Schemas - Request/response JSON schemas
- CasCor Backend Quick Start - Connect to CasCor in 5 minutes
- CasCor Backend Manual - Complete integration guide
- CasCor Backend Reference - Technical API reference
- CI/CD Quick Start - Get CI/CD running in 5 minutes
- CI/CD Environment Setup - Complete CI/CD environment configuration
- CI/CD Manual - Comprehensive CI/CD usage guide
- CI/CD Reference - CI/CD technical reference
The CI/CD docs include operational guidance for scripts/check_doc_links.py, including cross-repo validation modes (skip, warn, check) and documentation-link gate troubleshooting.
- Demo Mode Quick Start - Start demo mode in 5 minutes
- Demo Mode Environment Setup - Demo mode configuration
- Demo Mode Manual - Complete demo mode guide
- Demo Mode Reference - Demo mode technical reference
- Testing Quick Start - Run tests in 5 minutes
- Testing Environment Setup - Test environment configuration
- Testing Manual - Comprehensive testing guide
- Testing Reference - Testing technical reference
- Testing Reports Coverage - Coverage analysis and reports
- Testing Analysis Report - Test suite analysis
- Test Enablement Quick Reference - Quick test enablement guide
- Selective Test Guide - Run specific test subsets
- Selective Test Enablement Summary - Test enablement overview
MIT License - See LICENSE for details.
Last Updated: April 5, 2026
Version: 0.3.0
