This release is a pre-release and may not be stable for production use.
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
Metadata
Release files for prism-dx 0.2.0b4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| prism_dx-0.2.0b4.tar.gz | 1.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| prism_dx-0.2.0b4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.2 MB
Release files / prism_dx-0.2.0b4.tar.gz
| Download URL | prism_dx-0.2.0b4.tar.gz |
|---|---|
| Size | 1.4 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
89113cae116e3eadb2a08907eabbd4c70518f00402e9d1af6342d7c4271993c5
|
|
BLAKE2b-256 checksum How to use checksums |
538dfd215e958365274754452dbfac46eeb932016319da729313eba55e723c6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / prism_dx-0.2.0b4-py3-none-any.whl
| Download URL | prism_dx-0.2.0b4-py3-none-any.whl |
|---|---|
| Size | 756.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b022544eedb7552a402628d6e772c9054ffba96711ba9e94bbb42bc162a365b7
|
|
BLAKE2b-256 checksum How to use checksums |
18b5fb5e8bc2d0097b13132a4c3f658328d94fab0f97f50981afaf23ead3d3f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|