Coregen is a configuration management and code generation tool designed for managing multi-environment deployments at scale. Configure once in YAML, deploy everywhere.
Coregen solves common DevOps challenges through:
-
Simple Configuration
- Single YAML files to configure complete deployments
- Intuitive hierarchy (workspace → context → component)
- Ability to utilize template code in any component file
- Flexible to work with any dir structure
- Easy querying of all workspaces, contexts, and components
- Deep filtering capabilities allowing any field in your repo.
-
CI/CD Ready
- Can detect changes between branches for changes and deletions
- JSON/YAML/MATRIX output for easy automation
- Detection of changes for targeted deployments
- Prioritized component outputs
- Dependency aware
See our complete quick-start guide.
# Install the latest version directly from git
pip install git+https://github.com/skoonin/coregen.git
# Or install a specific version
pip install git+https://github.com/skoonin/[email protected]
# Development installation from cloned repo
git clone https://github.com/skoonin/coregen.git
cd coregen
pip install -e .make setup # Creates virtual environment and installs dev dependencies# Generate config file and initialize workspace structure
coregen config generate
# Or generate config file only (skip workspace initialization)
coregen config generate --config-file-only
- Workspace: Top-level organizational unit (e.g., AWS, GCP)
- Context: Specific instance within a workspace (e.g., Kubernetes cluster)
- Component: Deployable unit within a context (e.g., an application service)
- Template: Jinja2 template for generating configuration files (any file with a .j2 extension)
- Environment: Set in the context level configuration file, use filters to utilize it.
Pre-commit hooks provide automated code fixing and quality checks including:
- Auto-fixers: black, isort, autoflake, pyupgrade, whitespace/formatting fixes
- Validators: flake8, mypy, bandit security scanning, YAML/JSON syntax
See the docs/ directory for more detailed documentation.