Developer onboarding tool — refract complexity into clarity
Project description
Prism
Refract complexity into clarity
Configuration inheritance system for managing multi-level development environments
What is Prism?
Prism is a configuration inheritance system that manages complex, multi-level development environments through composable YAML configurations. Like a prism refracts white light into distinct colors, Prism takes organizational complexity and refracts it into clear, manageable configuration layers.
The Problem
Large organizations face configuration chaos:
- Complex hierarchies -- Fortune 500 companies with 5+ organizational levels
- Conflicting requirements -- Different teams need different tools, configs, and access
- Configuration drift -- No single source of truth across thousands of employees
- Onboarding friction -- New hires waste days configuring their environment
The Solution
Prism provides:
- Centralized tool registry -- Tools defined once in
tool-registry.yamlwith per-platform install/uninstall commands; child configs reference tools by name only - Configuration inheritance -- Define once at company level, override per team
- Multi-level hierarchies -- Support structures from flat (startups) to 5+ levels (enterprise)
- Web UI -- Tool selection with categories (Core, Editor, Containers, Runtime, Cloud, Kubernetes, CLI), inline validation, hover tooltips, platform-aware filtering, cancel/retry flow
- CLI tools --
prism install,prism rollback,prism history-- scriptable, automatable, CI/CD friendly - NPM distribution -- Packages published to npm, no custom infrastructure needed
- Validation -- Config engine validates tool registry (install + uninstall), tool references, and email patterns from YAML
- Smart merging -- Deep-merge with configurable strategies (union, override, append)
- Installation rollback --
.prism_rollback.jsonmanifest persisted on install;prism rollback <workspace>reverses all actions - Privilege separation -- Two-phase install with sudo session management
- No generic fallbacks -- Tools without explicit platform install commands are skipped
Quick Start
Install from PyPI
pip install prism-dx
prism ui # Launch the web installer
prism install # Or install directly from CLI
Install from source
git clone https://github.com/andersonwilliam85/prism.git
cd prism
make install-dev
make run # Opens at http://localhost:5555
See Getting Started for the full guide.
Features
Web UI Installer
- Tool selection page with categories (Core, Editor, Containers, Runtime, Cloud, Kubernetes, CLI)
- Hover tooltips for tool descriptions
- Platform-aware filtering (tools without install commands for your OS are hidden)
- Inline validation (no alerts)
- Step-by-step wizard with progress tracking
- Theme system -- 5 built-in themes + custom themes with 5 gradient color slots
- Cascading dropdowns -- Dynamic field dependencies (e.g., division filters available teams)
- Settings panel -- Runtime registry, CDN, and language overrides
- Environment management on landing page
- Cancel/retry flow
- Rollback button
Tool Registry
Tools are defined once in a centralized tool-registry.yaml. Each tool specifies:
- label, summary, description -- for the UI
- category -- core, editor, containers, runtime, cloud, kubernetes, cli
- platforms -- per-OS install commands (mac, ubuntu, linux, windows)
- uninstall -- per-OS uninstall commands (used by rollback)
Child configs reference tools by string name only (e.g., - git). Tools without explicit install commands for the current platform are skipped -- no guessing.
Starter Packages
8 starter packages ship in the prisms/ directory:
| Prism | Use Case | Hierarchy | Scale |
|---|---|---|---|
prism |
Default -- solo developers | Flat | Any |
startup |
Seed/Series A startups | 1 level | 10--50 |
acme-corp |
Template for companies | 2 levels | 100--1K |
consulting-firm |
Multi-client work | By client | Variable |
fortune500 |
Enterprise | 5 levels | 50K+ |
university |
Academic institutions | Dept to Lab | Variable |
opensource |
Community projects | Flat | Community |
cli-test-prism |
CLI testing fixture | Flat | Testing |
Installation Safety
- Rollback -- Every install persists a
.prism_rollback.jsonmanifest.prism rollback <workspace>reverses all actions. The UI also has a rollback button. Rollback engine atprism/engines/rollback_engine.py. - Privilege separation -- Normal operations run first. Privileged steps (tool installs from the registry) require explicit sudo approval in a separate phase.
- Sudo sessions -- Cryptographic tokens with 15-minute TTL and 3-attempt lockout.
Installation History
prism history
Scans for previous installations. Also available via the /api/history endpoint.
Architecture
Prism follows a VBD-inspired (Volatility-Based Decomposition) layered architecture with dependency injection.
| Layer | Role | Components |
|---|---|---|
| Managers | Orchestration -- the "what" | installation_manager, package_manager |
| Engines | Business logic -- the "how" | config_engine, installation_engine, rollback_engine |
| Accessors | External boundaries -- the "where" | file, command, registry, system, rollback, sudo |
| Utilities | Cross-cutting services | event_bus (pub/sub progress) |
| Models | Plain dataclasses | Installation, config, rollback DTOs |
| UI | Flask web app | REST API + static frontend |
| CLI | Click commands | install, rollback, history, packages, ui |
All layers are wired through a composition root (container.py) with constructor injection -- no global state, fully testable.
See Architecture Reference for the full breakdown.
Development
Prerequisites
- Python 3.9+
- Flask, PyYAML, Rich
Setup
make install-dev # Install dev dependencies
make test # Run tests (unit + CLI)
make test-all # All tests (590+ test functions)
make run # Start dev server
make lint # Run linters (flake8 + mypy)
make format # Format code (black + isort)
make check # All CI checks
Testing
make test # Unit + CLI tests
make test-all # All tests (590+ test functions)
make test-coverage # With coverage report
make test-trace # E2E with Playwright traces
GitHub Actions runs lint, test, coverage, and security scans on every PR. Pre-commit hooks enforce isort, black, flake8, and pytest.
Documentation
Full documentation at andersonwilliam85.github.io/prism.
- Getting Started
- Themes & Customization
- Cascading Dropdowns
- Configuration Schema
- Architecture
- Rollback System
- Privilege Separation
- Contributing
Supported Platforms
- macOS (Intel and Apple Silicon)
- Windows 10/11
- Linux (Ubuntu 20.04+, Debian, Fedora, RHEL)
- WSL2
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make changes and test:
make test-all - Format code:
make format - Run CI checks:
make check - Submit a Pull Request
Pre-commit hooks run isort, black, flake8, and pytest on every commit. All must pass.
See Contributing Guide.
License
MIT License -- See LICENSE
Copyright (c) 2025 William Anderson
Prism -- Refract complexity into clarity
Made by William Anderson
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prism_dx-0.2.0b3.tar.gz.
File metadata
- Download URL: prism_dx-0.2.0b3.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
510ff576dea44e905a25b5e260db671a09ccb737d394f46b47650cd0ffba9b35
|
|
| MD5 |
c222b9dc3178b781201c4a2243e53335
|
|
| BLAKE2b-256 |
8ea30c65c3e400dc52af9618f082219452f427525d17c465c5255915a0f8e83c
|
File details
Details for the file prism_dx-0.2.0b3-py3-none-any.whl.
File metadata
- Download URL: prism_dx-0.2.0b3-py3-none-any.whl
- Upload date:
- Size: 756.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5de6a36238ae570654ef90d84368d81a91528264d4034d1424d803b6463538ab
|
|
| MD5 |
a9db51995f1bcb6c8ecb8535bc700c70
|
|
| BLAKE2b-256 |
4681d34d445636fbc82a63576a51c9b886ed106a0aa88527d07e8d31f67751ef
|