Ygg is the local operator-facing control plane for the Yggdrasil command family.
It is meant to be:
- architecturally obvious
- Unix-legible
- easy for both Ian and the assistant to inspect
- portable across ordinary Unix-like systems without turning into packaging theater
The main rule is simple:
the filesystem should explain the system
~/ygg is the human-facing home for the command system built around:
- spine — planner / control plane
- branches — bounded task lanes
- promotion — explicit return of meaningful branch outcomes
- durable trace — files, logs, and artifacts that preserve continuity across time
This directory exists so the system is easier to:
- understand
- inspect
- operate
- evolve
without having to spelunk the whole assistant workspace every time.
Ygg is not primarily optimized as a generic public package. It is optimized first as a clear local Unix control plane.
That means:
- top-level directories should map to real system roles
- each artifact class should have one canonical home
- mutable state should stay visibly separate from implementation
- compatibility shims are allowed, but should not define the architecture
For the deeper rationale, read:
docs/ARCHITECTURE.mddocs/DEPENDENCIES.md
~/ygg/
bin/ # stable executable entrypoints
lib/ # implementation library code
commands/ # command-surface wrappers / verb topology
docs/ # architecture and operator-facing docs
tests/ # validation of Ygg behavior/contracts
machine/ # host/bootstrap/setup logic
state/ # mutable runtime state, policy, templates, scripts
links/ # explicit bridges to assistant-home / external canonical surfaces
bin/— stable front doors; should stay boringlib/— canonical implementation (lib/ygg/)commands/— topological command surface; thin wrappers overbin/yggdocs/— architecture, concepts, usage, and operator docstests/— behavioral and contract validationmachine/— machine/bootstrap scriptsmachine/systemd/user/— tracked user-level systemd unit templatesstate/— mutable runtime worldlinks/— explicit bridges to assistant-home internals
~/ygg/bin/ygg- exposed on PATH as
yggvia~/.local/bin/ygg
~/ygg/lib/ygg/
~/ygg/commands/
Important:
commands/ is a wrapper surface, not a second implementation stack.
If logic starts diverging between commands/ and lib/ygg/, the architecture is drifting.
~/ygg/state/
Ygg is the clean control-plane surface, but some planner/resume internals still live in the OpenClaw assistant-home workspace.
Current dependency areas include:
~/.openclaw/workspace-claw-main/scripts/work.py~/.openclaw/workspace-claw-main/tools/work_v1/~/.openclaw/workspace-claw-main/scripts/resume.py~/.openclaw/workspace-claw-main/state/resume/
So, in plain terms:
Ygg is the legible front door. Some canonical spine machinery still lives in assistant-home.
That is acceptable for now as long as the dependency stays explicit and inspectable.
- Architecture name: Yggdrasil
- CLI namespace:
ygg - Style rule: poetic topology, clear action semantics
docs/ARCHITECTURE.mddocs/NORTH-STAR.mddocs/RUNNING.mddocs/VERBS.mddocs/CONTRACTS.mddocs/RAVENS.mddocs/RAVENS-V1.mddocs/VOCAB.mddocs/CONTINUITY-OPS-V1.mddocs/ROADMAP.mdSECURITY.mdlib/ygg/cli.pydocs/DEPENDENCIES.mdcommands/README.mdlinks/README.mdmachine/bootstrap-host.shstate/policy/STATE-BOUNDARY.md
A usable prototype entrypoint exists now.
Current verbs:
ygg explainygg help(alias ofexplain)ygg suggestygg workygg pathsygg inventoryygg frontier(list,current,queue,sync,audit,open)ygg retrieveygg retrieve-benchmarkygg wakeygg raven(launch,status,inspect,return,adjudicate)ygg graft(propose)ygg beak(propose)ygg rootygg branchygg resumeygg forgeygg promoteygg statusygg modeygg heimdallygg ratatoskr
ygg --help
ygg explain suggest
ygg paths check
ygg suggest "implement the improved theme selector UX"
ygg inventory
ygg frontier sync
ygg frontier queue
ygg frontier audit
ygg frontier open --print-only
ygg retrieve "topology-aware continuity retrieval"
ygg retrieve-benchmark
ygg wake --print-only
ygg heimdall --show-json
ygg heimdall --note --ratatoskr
ygg ratatoskr --event-file /tmp/event.json
ygg raven launch "inspect environment drift"
ygg raven status
ygg status
ygg root "help me decide the next move"For usage details, read:
docs/RUNNING.md
If you are new to Ygg, learn these first.
This is the shortest path to using Ygg effectively:
ygg inventory
ygg status
ygg suggest "what I want"
ygg resume <domain> <task>
ygg forge --domain <domain> --task <task> "build the next thing"ygg inventory— see what Ygg actually has right now.ygg frontier sync+ygg frontier queue— hydrate the Ygg frontier queue from assistant-home batons, then inspect what is active vs ready.ygg frontier audit— inspect the active Sandy Chaos frontier, proof debt, and next move.ygg status— see what lanes/tasks are active.ygg suggest "..."— turn a fuzzy request into likely Ygg commands.ygg root "..."— stay in planner/spine mode when things are ambiguous.ygg work "..."— use the flexible natural-language front door.ygg branch <domain> <task> ...— create or refresh a tracked lane.ygg resume <domain> <task>— reopen a known lane with continuity.ygg forge --domain <domain> --task <task> "..."— push a lane toward implementation.ygg checkpoint ...— record a structured continuity checkpoint.ygg paths— inspect the path contract so you know what lives where.
I feel lost
ygg inventory
ygg statusI know what I want, but not which command to use
ygg suggest "continue the continuity integration work"I want to create a clean new lane
ygg branch continuity inventory-surface \
--objective "Build executable repo inventory for ygg" \
--next-action "Add first query command"I want to pick up existing work
ygg resume continuity inventory-surfaceI want to stop planning and build
ygg forge --domain continuity --task inventory-surface \
"implement the next useful query/edit command"Until the core loop feels natural, most people can ignore:
ygg ravenygg graftygg beakygg modeygg nyxygg heimdallygg ratatoskr
The point of this directory is not just convenience. It is to make the control plane visible in the tree itself.
A good Ygg layout should let a human quickly answer:
- How do I run it?
- Where is the real implementation?
- Where do commands live conceptually?
- Where does state go?
- What is machine-specific?
- What still depends on assistant-home?
If the tree stops answering those questions clearly, the architecture needs work.