3.2 KiB
title, description, weight
| title | description | weight |
|---|---|---|
| Infrastructure architecture | The decentralized orchestration model and deployment structure. | 10 |
The Root framework operates on a decentralized orchestration model designed for independent, self-contained projects. It enforces a strict separation between the orchestrator (the "brain") and the automation tasks (the "muscle").
Core philosophy
The framework is built on the Smart Root, Stupid Actions principle. This design ensures that individual automation scripts remain declarative and unaware of the global system state, while the central dispatcher handles environment resolution and library initialization.
Smart Root (The Dispatcher)
The root entrypoint is the sole interface for users. It is responsible for:
- Environment resolution → Locating the
commonsandconfigsrepositories. - Library warming → Sourcing namespaced modules exactly once.
- Context establishment → Defining the target Node and its associated paths.
Stupid Actions (The Tasks)
Actions are declarative scripts located in scripts/actions/. They are "stupid" because:
- They do not calculate paths or detect repositories.
- They depend entirely on the
ROOT_environment variables. - They focus exclusively on a single atomic task (e.g.,
compose,ufw).
Deployment model
The framework is typically deployed as a shared Commons repository mounted as a Git submodule within a configuration repository. The engine powering this shared infrastructure is hosted at GitHub: ermnvldmr.com-root-commons.
{{< filetree/container >}} {{< filetree/folder name="configs-repo" state="open" >}} {{< filetree/folder name=".operator" state="open" >}} {{< filetree/folder name="shared (submodule)" state="open" >}} {{< filetree/folder name="scripts" >}} {{< filetree/folder name="run" >}} {{< filetree/file name="root (dispatcher)" >}} {{< /filetree/folder >}} {{< filetree/folder name="lib" >}} {{< filetree/file name="shared libraries" >}} {{< /filetree/folder >}} {{< filetree/folder name="actions" >}} {{< filetree/file name="shared actions" >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< filetree/folder name="local" state="open" >}} {{< filetree/folder name="scripts" >}} {{< filetree/folder name="actions" >}} {{< filetree/file name="node-specific overrides" >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< /filetree/folder >}} {{< filetree/folder name="daedalus (node)" >}} {{< filetree/file name="docker-compose.yml" >}} {{< /filetree/folder >}} {{< filetree/file name="init.sh (bootstrap)" >}} {{< /filetree/folder >}} {{< /filetree/container >}}
See also: