Automate anything — traceable plans, reproducible runs.
Yggdrasil is an event-driven orchestration framework for automating well-defined workflows. It watches CouchDB databases and file-system paths for changes, routes events to realm modules, and executes the resulting workflow plans via the Engine.
# Clone and install (dev)
git clone https://github.com/NationalGenomicsInfrastructure/Yggdrasil.git
cd Yggdrasil
conda create -n ygg-dev python=3.11 pip && conda activate ygg-dev
pip install -e .[dev]
# Run the daemon
yggdrasil --dev daemon
# Or process a single document
yggdrasil run-doc <DOC_ID>See docs/getting_started/quickstart.md for full installation, configuration, and CLI reference.
| Path | Contents |
|---|---|
yggdrasil/ |
The package. Realm-facing API: flow/ (execution framework), watchers (EventType, WatchSpec), core/realm/ (RealmDescriptor) |
yggdrasil/daemon/, yggdrasil/cli.py |
Orchestrator (YggdrasilCore), execution coordinator, daemon lock; command line |
yggdrasil/watchers/, yggdrasil/storage/, yggdrasil/couchdb/, yggdrasil/ops/, yggdrasil/config/ |
Internal implementation: watchers, internal storage (CouchDB and SQLite), CouchDB client, ops projection, configuration |
yggdrasil/realms/ |
test_realm, the dev-only reference realm; production realms are external packages |
tests/ |
Test suite |
docs/ |
Documentation |
Realms are the extension point for domain-specific workflow logic. External realms self-register via the ygg.realm entry-point group. See docs/realm_authoring/guide.md.
Contributions are welcome. Open pull requests against the dev branch. Format with black, lint with ruff, type-check with mypy. Install both hook stages so checks fire automatically:
pre-commit install # commit-time: formatting, linting, mypy on staged files
pre-commit install --hook-type pre-push # push-time: full-project mypy + test suiteMIT — see LICENSE.