From feature model to
running product,
in one command.
SPLENT is a Software Product Line Engineering Toolkit for Python. It bridges formal variability models with Docker, databases, and migrations — so every product you derive is validated, reproducible, and ready to run.
Everything you need to run a product line.
SPLENT unifies the things that usually live in tribal knowledge — variability, composition, contracts, migrations — into a single, auditable pipeline.
Feature Lifecycle Management
Install, version, test, and release independent Python packages — each with routing, models, migrations, templates and assets built in.
Automated Composition
SPLENT merges Docker Compose definitions, environments and infrastructure across every feature — deterministically.
Formal Validation
UVL satisfiability checking, route collision detection, PyPI availability and contract compatibility — all before Docker starts.
Migration Ordering
Database migrations are applied in dependency order, so features compose safely no matter the installation sequence.
Multi-Environment
One pipeline, two targets. Development and production with health checks, port offsets and credential layering.
Comprehensive CLI
Commands for discovery, lifecycle, contracts, testing and deployment — the operator surface for your product line.
An ecosystem designed to compose.
Framework, CLI and Cache work as a single toolkit. Each one is independent, but together they turn your variability model into a deployable product.
SPLENT Framework
Feature discovery, composition, configuration layering and template resolution — inside Flask.
- Blueprints, services, repositories, seeders
- Signals, i18n, template hooks
- Layered configuration
SPLENT CLI
Lifecycle, contracts, deployment and release automation. Your operator surface for the product line.
- Discovery · Lifecycle · Contracts
- Development · Release · Products
- Database · SPL · Doctor
SPLENT Cache
Local, versioned feature storage. Read-only by design, so your workspace stays reproducible.
- Pinned versions
- Offline-friendly derivation
- Source-of-truth lock
Model your variability.
Derive your product.
Describe features and constraints in UVL. Let SPLENT validate, compose and launch — one command, every environment.
features
SplentApp
mandatory
Auth
alternative
OAuth
Local
Profile
optional
Notifications
Analytics
constraints
OAuth => Notifications
# 1. Install features (pinned) splent feature:install splent-io/splent_feature_auth --pinned splent feature:install splent-io/splent_feature_profile --pinned # 2. Derive the product splent product:derive --dev # ▸ UVL satisfiability: OK # ▸ Contracts: OK # ▸ docker-compose merged # ▸ migrations applied in order # ✓ running on http://localhost:5000
Validate
UVL satisfiability, contracts, PyPI availability, route collisions.
Compose
Merge docker-compose, environments, and infrastructure across features.
Launch
Run migrations in dependency order and start the product with health checks.
Variability shouldn't be a maintenance tax.
Most teams reach for duplication, feature flags, or microservices. SPLENT offers a fourth option — a variability model that drives the infrastructure.
The old trade-offs
-
Code duplicationForks per client turn into a maintenance nightmare. Every bug fix has to be re-applied across branches.
-
Feature-flag sprawlConditionals grow everywhere. The real product behavior disappears into runtime toggles nobody fully tracks.
-
Microservice explosionSplitting every variation into its own service trades one problem for a distributed systems tax.
The SPLENT way
-
A formal model, not a folder of branchesUVL defines features and constraints explicitly. The model is checked for satisfiability before a single container starts.
-
Composition is mechanical, not tribalDocker Compose, environments and migrations are merged by the toolkit — deterministic, auditable, reproducible.
-
One pipeline, every environmentproduct:derive validates, composes and launches. Dev and prod share the same path. Problems surface before Docker.
Ship variability
without the tax.
Read the documentation, clone the repositories, and derive your first product in minutes.