Manifest-first
Describe workflows, integrations and teams as versioned manifests. apply, diff, rollback — real GitOps, with history and dry-run.
Declarative workflows, pluggable integrations, and surfaces that extend every edge — on your infrastructure, under your control.
$ yggdrasil init
✓ Postgres provisioned
✓ core engine up
✓ adapters registered
control plane ready. next: yggdrasil apply -f workflow.yaml
A catalog shows your systems. Yggdrasil operates them.
Not a pretty layer over your infra. The control plane that actually executes — declarative, versioned and auditable.
Everything is a manifest. Everything is versioned. Everything runs on your infra.
Describe workflows, integrations and teams as versioned manifests. apply, diff, rollback — real GitOps, with history and dry-run.
Dispatch and track runs (run, ops, logs). Reactors respond to your domain events. The engine does the work — it doesn't just draw the diagram.
Installable adapters in a family → type → instance model. yggdrasil install <repo> and the new system talks to every other one.
Extend any integration — or the core engine itself — with a new edge: a dashboard, an API, an MCP server, a bot. It doesn't have to be a UI.
The CLI drives; the core engine holds the authority; adapters touch your systems; surfaces extend the edges.
Self-hosted by design. yggdrasil init brings up Postgres, the core engine and adapters on your cluster. Nothing leaves your boundary.
Explicit contract. Every adapter publishes what it can do — capabilities, schemas and version. The core validates before it executes.
Transport your way. HTTP by default; a message queue when you need one. Same adapter, no rewrite.
Each integration is an independent adapter in a family → type → instance model. It declares what it can do, installs with one command, and swaps providers without touching your workflow — AWS for GCP, and the YAML stays the same.
$ yggdrasil install dakasa-yggdrasil/integration-grafana
Missing yours? The integration contract is public and there's an official template — yggdrasil new integration <name> and you've got an adapter running.
A surface is an edge — an extension that plugs into an integration, or into the core engine itself. It's how Yggdrasil grows new reach. And it doesn't have to be a UI.
A dashboard, an API, an MCP server, a bot, a webhook edge. The form is free — what's fixed are the invariants it has to hold.
Extend a specific integration's reach, or hang a brand-new edge directly off the core engine. Same contract either way.
Auth via the platform session (never re-implemented), backend-agnostic, multi-tenant, federable, and no business authority.
$ yggdrasil new surface acme-ops --owner acme
Scaffold from the official template and the surface is born wired into the platform — authenticated, multi-tenant and federable. No re-implementing auth, no hardcoded cloud.
No clicking through ten screens. From bootstrap to rollback, all in the CLI — scriptable, versionable, auditable.
init · login --totp — bring it up and authenticate (with MFA)apply · diff · get · describe — manifestsrun · ops · logs — execution and observationrollback · delete — undo safelyinstall · new — integrations and surfacesupdate — the CLI updates itself$ yggdrasil login --server https://cp.acme.dev --totp 481920
✓ session active as giovanni
$ yggdrasil apply -f onboarding.yaml --dry-run
~ workflow/onboarding v3 → v4 (no effects)
$ yggdrasil run onboarding --input user=ana
▸ run r-9f2a dispatched
$ yggdrasil ops get r-9f2a
● succeeded · 6 steps · 2.1s
Cataloging your systems is half the problem — the other half is operating them, safely and with history. That's where a control plane comes in.
| Capability | Yggdrasil | Catalog / portal | Closed SaaS |
|---|---|---|---|
| Self-hosted, your data on your boundary | ✓ | ✓ | ✗ |
| Executes workflows (not just catalogs) | ✓ | partial | varies |
| Integration runtime (installs adapters) | ✓ | ✗ | ✗ |
| Surfaces on every edge | ✓ | plugins | ✗ |
| Declarative manifests + versioning | ✓ | partial | ✗ |
| Full-lifecycle CLI | ✓ | ✗ | ✗ |
| Permissive license (Apache-2.0) | ✓ | varies | ✗ |
Runs on your Kubernetes, your VPC, your Postgres. No customer data ever crosses a third party's boundary.
Apache-2.0, no per-seat billing. The contract is open; you extend it without asking anyone for permission.
From a local init to a multi-team control plane with queues, reactors, dozens of integrations and surfaces.
No sign-up. No credit card. Just your cluster and the CLI.
$ yggdrasil init # standalone
$ yggdrasil init --server https://cp.acme.dev # connect