@zerwiz/ymir 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/README.md +291 -0
- package/.agents/agents/bragi-marketer.md +111 -0
- package/.agents/agents/brokk.md +352 -0
- package/.agents/agents/forseti-reviewer.md +93 -0
- package/.agents/agents/frigg-consent.md +77 -0
- package/.agents/agents/groa-update.md +77 -0
- package/.agents/agents/hnoss-designer.md +69 -0
- package/.agents/agents/huginn-researcher.md +99 -0
- package/.agents/agents/jord-projects.md +78 -0
- package/.agents/agents/kvasir-scout.md +91 -0
- package/.agents/agents/mimir-planner.md +92 -0
- package/.agents/agents/muninn-stow.md +77 -0
- package/.agents/agents/saga-bearings.md +78 -0
- package/.agents/agents/sindri-developer.md +114 -0
- package/.agents/agents/snotra-documenter.md +105 -0
- package/.agents/agents/syn-recovery.md +78 -0
- package/.agents/agents/tyr-check.md +78 -0
- package/.agents/agents/urdh-hold.md +77 -0
- package/.agents/agents/volundr-smith.md +80 -0
- package/.agents/agents/vor-diagnostics.md +77 -0
- package/.agents/assets/agents/naming.md +50 -0
- package/.agents/assets/agents/registry.md +93 -0
- package/.agents/assets/agents/runtime.md +36 -0
- package/.agents/assets/agents/toon-tasks-cli.md +42 -0
- package/.agents/assets/templates/company_entity.template.md +37 -0
- package/.agents/backend/backends/cmux.sh +649 -0
- package/.agents/backend/backends/herdr-eventwait.py +157 -0
- package/.agents/backend/backends/herdr-workspace-move.py +114 -0
- package/.agents/backend/backends/herdr.sh +3386 -0
- package/.agents/backend/backends/orca.sh +290 -0
- package/.agents/backend/backends/tmux.sh +357 -0
- package/.agents/backend/backends/zellij.sh +700 -0
- package/.agents/backend/fm-afk-launch.sh +654 -0
- package/.agents/backend/fm-afk-return.sh +241 -0
- package/.agents/backend/fm-afk-start.sh +172 -0
- package/.agents/backend/fm-arm-command-policy.mjs +960 -0
- package/.agents/backend/fm-arm-pretool-check.sh +200 -0
- package/.agents/backend/fm-backend-hometag-lib.sh +52 -0
- package/.agents/backend/fm-backend.sh +981 -0
- package/.agents/backend/fm-backlog-handoff.sh +909 -0
- package/.agents/backend/fm-backlog-receive.sh +187 -0
- package/.agents/backend/fm-backlog-transition-lib.sh +779 -0
- package/.agents/backend/fm-bearings-board.sh +204 -0
- package/.agents/backend/fm-bearings-snapshot.sh +546 -0
- package/.agents/backend/fm-bootstrap.sh +1568 -0
- package/.agents/backend/fm-branch-outcome.sh +203 -0
- package/.agents/backend/fm-branch-prompt.sh +101 -0
- package/.agents/backend/fm-brief.sh +452 -0
- package/.agents/backend/fm-busy-event.sh +234 -0
- package/.agents/backend/fm-busy-lib.sh +986 -0
- package/.agents/backend/fm-captain-hold.sh +1001 -0
- package/.agents/backend/fm-cd-command-policy.mjs +153 -0
- package/.agents/backend/fm-cd-pretool-check.sh +190 -0
- package/.agents/backend/fm-check-lib.sh +74 -0
- package/.agents/backend/fm-check-register.sh +42 -0
- package/.agents/backend/fm-check-unregister.sh +52 -0
- package/.agents/backend/fm-classify-lib.sh +1770 -0
- package/.agents/backend/fm-claude-stop-autoarm.sh +334 -0
- package/.agents/backend/fm-composer-lib.sh +1416 -0
- package/.agents/backend/fm-config-inherit-lib.sh +1202 -0
- package/.agents/backend/fm-config-push.sh +254 -0
- package/.agents/backend/fm-control-lib.sh +251 -0
- package/.agents/backend/fm-control.sh +878 -0
- package/.agents/backend/fm-crew-state.sh +625 -0
- package/.agents/backend/fm-cursor-lib.sh +243 -0
- package/.agents/backend/fm-decision-hold.sh +232 -0
- package/.agents/backend/fm-doc-audience-check.sh +269 -0
- package/.agents/backend/fm-dod-lib.sh +67 -0
- package/.agents/backend/fm-ensure-agents-md.sh +253 -0
- package/.agents/backend/fm-extension-launch-barrier.mjs +129 -0
- package/.agents/backend/fm-extension.mjs +2577 -0
- package/.agents/backend/fm-extension.sh +16 -0
- package/.agents/backend/fm-ff-lib.sh +420 -0
- package/.agents/backend/fm-fleet-snapshot.sh +1463 -0
- package/.agents/backend/fm-fleet-sync.sh +458 -0
- package/.agents/backend/fm-fleet-view.sh +96 -0
- package/.agents/backend/fm-gate-refuse-lib.sh +102 -0
- package/.agents/backend/fm-guard.sh +242 -0
- package/.agents/backend/fm-harness.sh +195 -0
- package/.agents/backend/fm-herdr-ci-cleanup.sh +115 -0
- package/.agents/backend/fm-herdr-lab.sh +346 -0
- package/.agents/backend/fm-herdr-session-cleanup.sh +337 -0
- package/.agents/backend/fm-home-seed.sh +984 -0
- package/.agents/backend/fm-home-summary-refresh.sh +255 -0
- package/.agents/backend/fm-hook-host-lib.sh +36 -0
- package/.agents/backend/fm-inactive-reconcile.sh +531 -0
- package/.agents/backend/fm-inbox.sh +399 -0
- package/.agents/backend/fm-install-actionlint.sh +84 -0
- package/.agents/backend/fm-install-herdr.sh +96 -0
- package/.agents/backend/fm-install-shellcheck.sh +84 -0
- package/.agents/backend/fm-install-treehouse.sh +95 -0
- package/.agents/backend/fm-kimi-turnend-hook.sh +276 -0
- package/.agents/backend/fm-lease-lib.sh +218 -0
- package/.agents/backend/fm-lease.sh +189 -0
- package/.agents/backend/fm-line-cap-lib.sh +51 -0
- package/.agents/backend/fm-lint-workflows.sh +137 -0
- package/.agents/backend/fm-lint.sh +591 -0
- package/.agents/backend/fm-lock-lib.sh +104 -0
- package/.agents/backend/fm-lock.sh +107 -0
- package/.agents/backend/fm-marker-lib.sh +12 -0
- package/.agents/backend/fm-merge-local.sh +74 -0
- package/.agents/backend/fm-merge-outcome-lib.sh +138 -0
- package/.agents/backend/fm-nm-run-lib.sh +124 -0
- package/.agents/backend/fm-on.sh +125 -0
- package/.agents/backend/fm-operational-input.sh +253 -0
- package/.agents/backend/fm-peek.sh +46 -0
- package/.agents/backend/fm-pending-reply-lib.sh +1409 -0
- package/.agents/backend/fm-pr-check.sh +135 -0
- package/.agents/backend/fm-pr-lib.sh +1016 -0
- package/.agents/backend/fm-pr-merge.sh +707 -0
- package/.agents/backend/fm-pr-poll.sh +110 -0
- package/.agents/backend/fm-primary-scope-lib.sh +33 -0
- package/.agents/backend/fm-procevent-extension-capture.pl +259 -0
- package/.agents/backend/fm-procevent-lavish.sh +628 -0
- package/.agents/backend/fm-procevent-lib.sh +892 -0
- package/.agents/backend/fm-procevent-quota.sh +290 -0
- package/.agents/backend/fm-procevent-remote-reply.sh +577 -0
- package/.agents/backend/fm-procevent-when.sh +504 -0
- package/.agents/backend/fm-procevent.sh +1466 -0
- package/.agents/backend/fm-project-mode.sh +92 -0
- package/.agents/backend/fm-project-origin-lib.sh +180 -0
- package/.agents/backend/fm-promote.sh +282 -0
- package/.agents/backend/fm-public-followup-emit.sh +260 -0
- package/.agents/backend/fm-public-followup-lib.sh +398 -0
- package/.agents/backend/fm-public-followup.sh +1330 -0
- package/.agents/backend/fm-push-transition-lib.sh +168 -0
- package/.agents/backend/fm-quota-axi-lib.sh +93 -0
- package/.agents/backend/fm-quota-choose.sh +384 -0
- package/.agents/backend/fm-remote-delta-read.sh +189 -0
- package/.agents/backend/fm-remote-doctor.sh +800 -0
- package/.agents/backend/fm-remote-entrypoint.sh +193 -0
- package/.agents/backend/fm-remote-file.sh +234 -0
- package/.agents/backend/fm-remote-home-provision.sh +259 -0
- package/.agents/backend/fm-remote-home-seed.sh +259 -0
- package/.agents/backend/fm-remote-inherit-push.sh +90 -0
- package/.agents/backend/fm-remote-inherit.sh +179 -0
- package/.agents/backend/fm-remote-job-lib.sh +1241 -0
- package/.agents/backend/fm-remote-job-reap-orphans.sh +137 -0
- package/.agents/backend/fm-remote-job-worker.sh +1124 -0
- package/.agents/backend/fm-remote-readiness-lib.sh +44 -0
- package/.agents/backend/fm-remote-secondmate-control.sh +340 -0
- package/.agents/backend/fm-review-diff.sh +158 -0
- package/.agents/backend/fm-secondmate-charter-lib.sh +44 -0
- package/.agents/backend/fm-secondmate-nudge-lib.sh +68 -0
- package/.agents/backend/fm-secondmate-parent-lib.sh +70 -0
- package/.agents/backend/fm-secondmate-reconcile.sh +371 -0
- package/.agents/backend/fm-secondmate-registry-lib.sh +311 -0
- package/.agents/backend/fm-secondmate-report.sh +88 -0
- package/.agents/backend/fm-send.sh +1059 -0
- package/.agents/backend/fm-session-lock-lib.sh +176 -0
- package/.agents/backend/fm-session-start.sh +970 -0
- package/.agents/backend/fm-sessionstart-cursor.sh +40 -0
- package/.agents/backend/fm-sessionstart-nudge.sh +45 -0
- package/.agents/backend/fm-sessionstart-run.sh +145 -0
- package/.agents/backend/fm-spawn.sh +3153 -0
- package/.agents/backend/fm-startup-memory-budget-lib.sh +224 -0
- package/.agents/backend/fm-startup-memory-budget.sh +94 -0
- package/.agents/backend/fm-startup-network.sh +642 -0
- package/.agents/backend/fm-stow-cascade.sh +251 -0
- package/.agents/backend/fm-subagent-pretool-check.sh +207 -0
- package/.agents/backend/fm-supervise-daemon.sh +1732 -0
- package/.agents/backend/fm-supervision-instructions.sh +215 -0
- package/.agents/backend/fm-supervision-lib.sh +90 -0
- package/.agents/backend/fm-supervisor-target-lib.sh +78 -0
- package/.agents/backend/fm-tangle-lib.sh +53 -0
- package/.agents/backend/fm-task-inbox-lib.sh +402 -0
- package/.agents/backend/fm-tasks-axi-lib.sh +123 -0
- package/.agents/backend/fm-teardown.sh +2922 -0
- package/.agents/backend/fm-test-isolation-proof.sh +588 -0
- package/.agents/backend/fm-test-run.sh +2191 -0
- package/.agents/backend/fm-timeout-lib.sh +141 -0
- package/.agents/backend/fm-timing-lib.sh +179 -0
- package/.agents/backend/fm-tmux-lib.sh +291 -0
- package/.agents/backend/fm-tool-update-check.sh +898 -0
- package/.agents/backend/fm-trace-context-lib.sh +227 -0
- package/.agents/backend/fm-transition-lib.sh +103 -0
- package/.agents/backend/fm-turnend-guard-cursor.sh +391 -0
- package/.agents/backend/fm-turnend-guard-grok.sh +90 -0
- package/.agents/backend/fm-turnend-guard.sh +432 -0
- package/.agents/backend/fm-update.sh +110 -0
- package/.agents/backend/fm-vendor-auth-probe.sh +190 -0
- package/.agents/backend/fm-voice-client.py +1373 -0
- package/.agents/backend/fm-voice-relay.py +1256 -0
- package/.agents/backend/fm-wake-drain.sh +592 -0
- package/.agents/backend/fm-wake-grant.sh +127 -0
- package/.agents/backend/fm-wake-lib.sh +1849 -0
- package/.agents/backend/fm-watch-arm.sh +602 -0
- package/.agents/backend/fm-watch-checkpoint.sh +109 -0
- package/.agents/backend/fm-watch.sh +1962 -0
- package/.agents/backend/fm-x-dismiss.sh +116 -0
- package/.agents/backend/fm-x-followup.sh +286 -0
- package/.agents/backend/fm-x-lib.sh +1000 -0
- package/.agents/backend/fm-x-link.sh +234 -0
- package/.agents/backend/fm-x-poll.sh +185 -0
- package/.agents/backend/fm-x-reply.sh +385 -0
- package/.agents/backend/fm_voice_frame.py +166 -0
- package/.agents/backend/fm_voice_records.py +574 -0
- package/.agents/backend/model-bridge.py +290 -0
- package/.agents/backend/opencode-go-bridge.py +30 -0
- package/.agents/bus/README.md +12 -0
- package/.agents/bus/messages.json +1 -0
- package/.agents/config/agents.machine.example.yaml +16 -0
- package/.agents/config/agents.yaml +50 -0
- package/.agents/config/agents.yaml.example +72 -0
- package/.agents/config/crew-dispatch.json +22 -0
- package/.agents/config/cron.yaml +9 -0
- package/.agents/config/eindri-dispatch.json +67 -0
- package/.agents/config/eindri-harness +1 -0
- package/.agents/config/startup-memory-budget +1 -0
- package/.agents/config/tailscale-sync.yaml +27 -0
- package/.agents/filebrowser/.filebrowser.json +6 -0
- package/.agents/filebrowser/README.md +11 -0
- package/.agents/gateway/README.md +12 -0
- package/.agents/github/README.md +15 -0
- package/.agents/github/webhooks/.gitkeep +0 -0
- package/.agents/github/workflows/.gitkeep +0 -0
- package/.agents/harness/opencode/plugins/lib/rodd-operational-input.js +37 -0
- package/.agents/harness/opencode/plugins/package.json +4 -0
- package/.agents/harness/opencode/plugins/saga-sessionstart.js +77 -0
- package/.agents/harness/opencode/plugins/syn-cd-check.js +61 -0
- package/.agents/harness/opencode/plugins/syn-pretool-check.js +68 -0
- package/.agents/harness/opencode/plugins/syn-turnend-guard.js +105 -0
- package/.agents/harness/opencode/plugins/syn-watch-arm.js +521 -0
- package/.agents/memory/README.md +46 -0
- package/.agents/memory/kaia.engram +0 -0
- package/.agents/memory/kaia.engram-shm +0 -0
- package/.agents/memory/kaia.engram-wal +0 -0
- package/.agents/memory/runes_audit.md +5 -0
- package/.agents/memory/well/episodes.jsonl +367 -0
- package/.agents/memory/well/workspace.jsonl +27 -0
- package/.agents/migrations/0001-hodd-layout.sh +38 -0
- package/.agents/migrations/0002-a2a-mcp.sh +27 -0
- package/.agents/migrations/0003-private-data-separation.sh +111 -0
- package/.agents/migrations/0004-hoard-and-realms.sh +104 -0
- package/.agents/sandbox/Dockerfile.utgard +19 -0
- package/.agents/sandbox/README.md +14 -0
- package/.agents/sandbox/utgard.config.json +14 -0
- package/.agents/skills/README.md +59 -0
- package/.agents/skills/bragi-marketing/README.md +3 -0
- package/.agents/skills/bragi-marketing/SKILL.md +82 -0
- package/.agents/skills/eindri-homes/README.md +3 -0
- package/.agents/skills/eindri-homes/SKILL.md +291 -0
- package/.agents/skills/eindri-homes/assets/control-plane.md +122 -0
- package/.agents/skills/eindri-homes/assets/dispatch.md +80 -0
- package/.agents/skills/frigg-consent/README.md +3 -0
- package/.agents/skills/frigg-consent/SKILL.md +56 -0
- package/.agents/skills/galdr-ymirsystem/README.md +3 -0
- package/.agents/skills/galdr-ymirsystem/SKILL.md +158 -0
- package/.agents/skills/galdr-ymirsystem/assets/README.md +74 -0
- package/.agents/skills/galdr-ymirsystem/assets/brokk-distro-runtime.md +390 -0
- package/.agents/skills/galdr-ymirsystem/assets/build-method.md +113 -0
- package/.agents/skills/galdr-ymirsystem/assets/build-tool-categories.md +178 -0
- package/.agents/skills/galdr-ymirsystem/assets/eindri-orchestration.md +518 -0
- package/.agents/skills/galdr-ymirsystem/assets/eindri-profiles.md +136 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/README.md +673 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/claude-code.md +197 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/codex.md +191 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/cursor.md +193 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/opencode.md +262 -0
- package/.agents/skills/galdr-ymirsystem/assets/harness-integration/pi.md +295 -0
- package/.agents/skills/galdr-ymirsystem/assets/hlidskjalf-ui.md +496 -0
- package/.agents/skills/galdr-ymirsystem/assets/installation.md +571 -0
- package/.agents/skills/galdr-ymirsystem/assets/local-models/HOST-DATA.example.md +72 -0
- package/.agents/skills/galdr-ymirsystem/assets/local-models.md +274 -0
- package/.agents/skills/galdr-ymirsystem/assets/memory-well.md +161 -0
- package/.agents/skills/galdr-ymirsystem/assets/nornir-jobs.md +377 -0
- package/.agents/skills/galdr-ymirsystem/assets/norse-naming.md +325 -0
- package/.agents/skills/galdr-ymirsystem/assets/odrerir-hall.md +129 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/einherjar-spawn.schema.json +81 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/herdr-profile.toml +75 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/pi-profile.yml +96 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot/supervision-tree.yml +163 -0
- package/.agents/skills/galdr-ymirsystem/assets/pi-boot-guide.md +58 -0
- package/.agents/skills/galdr-ymirsystem/assets/porting-upstream-to-norse.md +301 -0
- package/.agents/skills/galdr-ymirsystem/assets/principles.md +385 -0
- package/.agents/skills/galdr-ymirsystem/assets/reference-adoption.md +99 -0
- package/.agents/skills/galdr-ymirsystem/assets/registry.md +379 -0
- package/.agents/skills/galdr-ymirsystem/assets/runtime-compliance.md +463 -0
- package/.agents/skills/galdr-ymirsystem/assets/runtime-components.md +553 -0
- package/.agents/skills/galdr-ymirsystem/assets/smidja.md +175 -0
- package/.agents/skills/galdr-ymirsystem/schemas/toon-schemas.md +190 -0
- package/.agents/skills/galdr-ymirsystem/scripts/README.md +45 -0
- package/.agents/skills/galdr-ymirsystem/scripts/bench-one.sh +248 -0
- package/.agents/skills/galdr-ymirsystem/scripts/compliance-check.sh +360 -0
- package/.agents/skills/galdr-ymirsystem/scripts/gpu-sample.sh +43 -0
- package/.agents/skills/galdr-ymirsystem/scripts/stop-all.sh +34 -0
- package/.agents/skills/galdr-ymirsystem/scripts/toon-check.py +188 -0
- package/.agents/skills/gjallarhorn-relay/README.md +3 -0
- package/.agents/skills/gjallarhorn-relay/SKILL.md +283 -0
- package/.agents/skills/groa-update/SKILL.md +70 -0
- package/.agents/skills/hamr-adapters/README.md +3 -0
- package/.agents/skills/hamr-adapters/SKILL.md +123 -0
- package/.agents/skills/hamr-adapters/references/common/control-and-recovery.md +37 -0
- package/.agents/skills/hamr-adapters/references/common/dispatch.md +32 -0
- package/.agents/skills/hamr-adapters/references/common/model-and-effort.md +42 -0
- package/.agents/skills/hamr-adapters/references/common/primary-hooks.md +40 -0
- package/.agents/skills/hamr-adapters/references/harness/claude.md +55 -0
- package/.agents/skills/hamr-adapters/references/harness/codex.md +43 -0
- package/.agents/skills/hamr-adapters/references/harness/cursor.md +75 -0
- package/.agents/skills/hamr-adapters/references/harness/grok.md +69 -0
- package/.agents/skills/hamr-adapters/references/harness/kimi.md +51 -0
- package/.agents/skills/hamr-adapters/references/harness/muse.md +70 -0
- package/.agents/skills/hamr-adapters/references/harness/opencode.md +42 -0
- package/.agents/skills/hamr-adapters/references/harness/pi.md +56 -0
- package/.agents/skills/herdr-panes/README.md +3 -0
- package/.agents/skills/herdr-panes/SKILL.md +92 -0
- package/.agents/skills/herdr-panes/assets/herdr-backend.md +346 -0
- package/.agents/skills/herdr-panes/assets/tmux-backend.md +115 -0
- package/.agents/skills/hnoss-design/DESIGN.md +19 -0
- package/.agents/skills/hnoss-design/README.md +3 -0
- package/.agents/skills/hnoss-design/SKILL.md +83 -0
- package/.agents/skills/hvild-afk/README.md +3 -0
- package/.agents/skills/hvild-afk/SKILL.md +241 -0
- package/.agents/skills/jord-projects/README.md +3 -0
- package/.agents/skills/jord-projects/SKILL.md +92 -0
- package/.agents/skills/lifecycle/SKILL.md +56 -0
- package/.agents/skills/lifecycle/smoke_test.sh +52 -0
- package/.agents/skills/lifecycle/start.sh +21 -0
- package/.agents/skills/lifecycle/status.sh +35 -0
- package/.agents/skills/lifecycle/stop.sh +16 -0
- package/.agents/skills/muninn-stow/README.md +3 -0
- package/.agents/skills/muninn-stow/SKILL.md +309 -0
- package/.agents/skills/no-mistakes/SKILL.md +379 -0
- package/.agents/skills/nornir-schedule/README.md +3 -0
- package/.agents/skills/nornir-schedule/SKILL.md +25 -0
- package/.agents/skills/nornir-schedule/assets/events.md +137 -0
- package/.agents/skills/nornir-schedule/assets/quota.md +131 -0
- package/.agents/skills/nsr-compliance/README.md +3 -0
- package/.agents/skills/nsr-compliance/SKILL.md +29 -0
- package/.agents/skills/nsr-compliance/assets/nsr/README.md +40 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/README.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/git-workflow.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/security.md +22 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/RULES/tech-stack.md +8 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/SKILL.md +71 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/config/core_four.yaml +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/validate_code.sh +29 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/gates/verify_docs.py +66 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/generate.sh +109 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/NSRcompliance/templates/compliance/telemetry/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/README.md +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/features/README.md +36 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/features/SKILL-template.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/README.md +25 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/SKILL.md +13 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/create_branch.sh +6 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/safe_commit.sh +9 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/git_ops/sync_upstream.sh +6 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/README.md +27 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/SKILL.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/smoke_test.sh +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/start.sh +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/status.sh +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/agents_skills/lifecycle/stop.sh +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/config/core_four.yaml +13 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/telemetry/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/compliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/README.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/api.md +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/compliance-wiring.md +155 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/BEST_PRACTICES/frontend.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/README.md +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/clients/README.md +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/clients/template-README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/deploy.sh +49 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/development.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/production.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/envs/staging.env.example +17 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/tenants/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/CI_CD/deployment/tenants/template.env.example +8 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/README.md +26 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/agent.md +7 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/developers/dev-1.md +20 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/linux.md +9 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/macos.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/shared.md +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/DEVELOPER_SETUP/windows.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/README.md +25 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/_template.md +41 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/HOSTING/hosting-1.md +41 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/README.md +21 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/README.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/deployment.md +19 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/disaster-recovery.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/RUNBOOK/ops-tasks.md +14 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/features/README.md +16 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/project-skills.md +146 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/research/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/research/software-compliance-research.md +269 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/docs/working-with-agents.md +260 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/AGENTS.md +38 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/ARCHITECTURE.md +36 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/BEST_PRACTICES.md +27 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/CI_CD.md +23 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/FEATURES.md +15 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/README.md +22 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/RULES.md +37 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/STRUCTURE.md +45 -0
- package/.agents/skills/nsr-compliance/assets/nsr/assets/root/TECH_STACK.md +28 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scaffold-spec.md +63 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scripts/scaffold.sh +103 -0
- package/.agents/skills/nsr-compliance/assets/nsr/scripts/validate.sh +52 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/SKILL.md +71 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/config/core_four.yaml +16 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/check_danger.sh +102 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/check_wiring.sh +69 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/validate_code.sh +29 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/gates/verify_docs.py +66 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/generate.sh +109 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/envelopes/result_envelope.json +14 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/envelopes/task_envelope.json +20 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/harness/runner.py +303 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/telemetry/logger.py +112 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/README.md +18 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/config/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/README.md +12 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_env.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_paths.sh +20 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/gates/check_platform.sh +23 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/harness/README.md +11 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/harness/envelopes/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/installer/README.md +10 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/installer/install.sh +125 -0
- package/.agents/skills/nsr-compliance/assets/nsrcompliance/templates/compliance/telemetry/README.md +11 -0
- package/.agents/skills/pr-ops/README.md +3 -0
- package/.agents/skills/pr-ops/SKILL.md +109 -0
- package/.agents/skills/ratatoskr-a2a/README.md +3 -0
- package/.agents/skills/ratatoskr-a2a/SKILL.md +148 -0
- package/.agents/skills/rules-check-drift/SKILL.md +81 -0
- package/.agents/skills/saga-bearings/README.md +3 -0
- package/.agents/skills/saga-bearings/SKILL.md +26 -0
- package/.agents/skills/saga-bearings/assets/bearings.md +161 -0
- package/.agents/skills/saga-bearings/assets/board-template.html +731 -0
- package/.agents/skills/saga-bearings/assets/recap.md +56 -0
- package/.agents/skills/syn-recovery/README.md +3 -0
- package/.agents/skills/syn-recovery/SKILL.md +54 -0
- package/.agents/skills/tyr-check/README.md +3 -0
- package/.agents/skills/tyr-check/SKILL.md +218 -0
- package/.agents/skills/urdh-hold/README.md +3 -0
- package/.agents/skills/urdh-hold/SKILL.md +25 -0
- package/.agents/skills/urdh-hold/assets/decisions.md +15 -0
- package/.agents/skills/urdh-hold/assets/hold.md +54 -0
- package/.agents/skills/vor-diagnostics/README.md +3 -0
- package/.agents/skills/vor-diagnostics/SKILL.md +68 -0
- package/.agents/skills/ymir-host/README.md +3 -0
- package/.agents/skills/ymir-host/SKILL.md +34 -0
- package/.agents/skills/ymir-host/assets/desktop.md +36 -0
- package/.agents/skills/ymir-host/assets/omarchy.md +297 -0
- package/.agents/skills/ymir-host/assets/runbooks.md +15 -0
- package/.agents/skills/ymir-host/assets/thjazi.md +220 -0
- package/.agents/skills/ymir-host/assets/update.md +64 -0
- package/.agents/tests/assets/board-render-harness.mjs +117 -0
- package/.agents/tests/cmux-test-safety.sh +51 -0
- package/.agents/tests/fixtures.sh +291 -0
- package/.agents/tests/fm-afk-inject-e2e.test.sh +428 -0
- package/.agents/tests/fm-afk-inject-herdr-e2e.test.sh +536 -0
- package/.agents/tests/fm-afk-launch.test.sh +961 -0
- package/.agents/tests/fm-afk-pi-herdr-return-e2e.test.sh +297 -0
- package/.agents/tests/fm-afk-return.test.sh +283 -0
- package/.agents/tests/fm-arm-pretool-check.test.sh +482 -0
- package/.agents/tests/fm-ask-user-authority.test.sh +42 -0
- package/.agents/tests/fm-backend-autodetect-smoke.test.sh +176 -0
- package/.agents/tests/fm-backend-cmux-smoke.test.sh +188 -0
- package/.agents/tests/fm-backend-cmux.test.sh +1166 -0
- package/.agents/tests/fm-backend-herdr-eventwait-smoke.test.sh +136 -0
- package/.agents/tests/fm-backend-herdr-eventwait.test.py +106 -0
- package/.agents/tests/fm-backend-herdr-focus-flash-e2e.test.sh +409 -0
- package/.agents/tests/fm-backend-herdr-launcher-workspace-e2e.test.sh +437 -0
- package/.agents/tests/fm-backend-herdr-presentation-e2e.test.sh +1424 -0
- package/.agents/tests/fm-backend-herdr-prune-safety-e2e.test.sh +180 -0
- package/.agents/tests/fm-backend-herdr-respawn-idem-e2e.test.sh +182 -0
- package/.agents/tests/fm-backend-herdr-smoke.test.sh +355 -0
- package/.agents/tests/fm-backend-herdr-workspace-per-home-e2e.test.sh +251 -0
- package/.agents/tests/fm-backend-herdr.test.sh +4606 -0
- package/.agents/tests/fm-backend-orca.test.sh +1357 -0
- package/.agents/tests/fm-backend-tmux-smoke.test.sh +173 -0
- package/.agents/tests/fm-backend-zellij-smoke.test.sh +205 -0
- package/.agents/tests/fm-backend-zellij.test.sh +1360 -0
- package/.agents/tests/fm-backend.test.sh +1142 -0
- package/.agents/tests/fm-backlog-atomicity.test.sh +2302 -0
- package/.agents/tests/fm-backlog-handoff.test.sh +1360 -0
- package/.agents/tests/fm-bearings-board-render.test.sh +135 -0
- package/.agents/tests/fm-bearings-board.test.sh +414 -0
- package/.agents/tests/fm-bearings-snapshot.test.sh +1990 -0
- package/.agents/tests/fm-bootstrap-network-parallel.test.sh +316 -0
- package/.agents/tests/fm-bootstrap.test.sh +1178 -0
- package/.agents/tests/fm-branch-supervision.test.sh +552 -0
- package/.agents/tests/fm-brief.test.sh +785 -0
- package/.agents/tests/fm-busy-adapter-wiring.test.sh +324 -0
- package/.agents/tests/fm-busy-state.test.sh +465 -0
- package/.agents/tests/fm-calm-pi-extension.test.sh +3979 -0
- package/.agents/tests/fm-captain-hold-lifecycle.test.sh +1187 -0
- package/.agents/tests/fm-cd-pretool-check.test.sh +400 -0
- package/.agents/tests/fm-check-unregister.test.sh +198 -0
- package/.agents/tests/fm-classify-corr-token.test.sh +543 -0
- package/.agents/tests/fm-classify-decision-key.test.sh +340 -0
- package/.agents/tests/fm-claude-stop-autoarm-live-e2e.test.sh +164 -0
- package/.agents/tests/fm-claude-stop-autoarm.test.sh +1190 -0
- package/.agents/tests/fm-cmux-claude-composer-live-e2e.test.sh +110 -0
- package/.agents/tests/fm-codex-continuity-live-e2e.test.sh +55 -0
- package/.agents/tests/fm-composer-ghost.test.sh +716 -0
- package/.agents/tests/fm-composer-lib.test.sh +666 -0
- package/.agents/tests/fm-composer-matrix-live-e2e.test.sh +220 -0
- package/.agents/tests/fm-control-herdr-smoke.test.sh +149 -0
- package/.agents/tests/fm-control-relaunch.test.sh +1530 -0
- package/.agents/tests/fm-control.test.sh +910 -0
- package/.agents/tests/fm-crew-state.test.sh +1610 -0
- package/.agents/tests/fm-cursor-harness.test.sh +404 -0
- package/.agents/tests/fm-cursor-primary-live-e2e.test.sh +217 -0
- package/.agents/tests/fm-cursor-primary.test.sh +708 -0
- package/.agents/tests/fm-daemon.test.sh +2740 -0
- package/.agents/tests/fm-documentation-audiences.test.sh +141 -0
- package/.agents/tests/fm-ensure-agents-md.test.sh +371 -0
- package/.agents/tests/fm-extension-binding.test.sh +2187 -0
- package/.agents/tests/fm-fleet-snapshot-view.test.sh +816 -0
- package/.agents/tests/fm-fleet-sync.test.sh +721 -0
- package/.agents/tests/fm-gate-refuse.test.sh +356 -0
- package/.agents/tests/fm-gitignore-config.test.sh +89 -0
- package/.agents/tests/fm-gotmp.test.sh +230 -0
- package/.agents/tests/fm-grok-continuity-live-e2e.test.sh +112 -0
- package/.agents/tests/fm-grok-harness.test.sh +117 -0
- package/.agents/tests/fm-grok-stop-live-e2e.test.sh +219 -0
- package/.agents/tests/fm-guard-stale-banner.test.sh +709 -0
- package/.agents/tests/fm-harness-adapter-instructions-live-e2e.test.sh +134 -0
- package/.agents/tests/fm-harness-adapter-references.test.sh +30 -0
- package/.agents/tests/fm-harness-liveness-drift-live-e2e.test.sh +151 -0
- package/.agents/tests/fm-herdr-lab.test.sh +243 -0
- package/.agents/tests/fm-herdr-session-cleanup-e2e.test.sh +146 -0
- package/.agents/tests/fm-herdr-session-cleanup.test.sh +329 -0
- package/.agents/tests/fm-herdr-submit-confirm-live-e2e.test.sh +125 -0
- package/.agents/tests/fm-herdr-version-floor-live-e2e.test.sh +144 -0
- package/.agents/tests/fm-home-summary-refresh.test.sh +971 -0
- package/.agents/tests/fm-inactive-reconcile.test.sh +485 -0
- package/.agents/tests/fm-kimi-harness.test.sh +687 -0
- package/.agents/tests/fm-lint-workflows.test.sh +532 -0
- package/.agents/tests/fm-lint.test.sh +1023 -0
- package/.agents/tests/fm-muse-harness.test.sh +932 -0
- package/.agents/tests/fm-muse-signals-live-e2e.test.sh +205 -0
- package/.agents/tests/fm-no-mistakes-required.test.sh +72 -0
- package/.agents/tests/fm-on.test.sh +507 -0
- package/.agents/tests/fm-opencode-primary-live-e2e.test.sh +357 -0
- package/.agents/tests/fm-operational-input.test.sh +160 -0
- package/.agents/tests/fm-peek-remote.test.sh +110 -0
- package/.agents/tests/fm-pending-reply.test.sh +1288 -0
- package/.agents/tests/fm-pi-branch-extension.test.sh +3182 -0
- package/.agents/tests/fm-pi-branch-live-e2e.test.sh +527 -0
- package/.agents/tests/fm-pi-primary-live-e2e.test.sh +345 -0
- package/.agents/tests/fm-pi-primary-types.test.sh +68 -0
- package/.agents/tests/fm-pi-watch-extension.test.sh +2843 -0
- package/.agents/tests/fm-pr-check-security.test.sh +2140 -0
- package/.agents/tests/fm-pr-merge.test.sh +2135 -0
- package/.agents/tests/fm-procevent-quota.test.sh +225 -0
- package/.agents/tests/fm-procevent-when.test.sh +406 -0
- package/.agents/tests/fm-procevent.test.sh +1745 -0
- package/.agents/tests/fm-project-origin.test.sh +110 -0
- package/.agents/tests/fm-public-followup.test.sh +2272 -0
- package/.agents/tests/fm-quota-array-dispatch-live-e2e.test.sh +526 -0
- package/.agents/tests/fm-quota-choose.test.sh +626 -0
- package/.agents/tests/fm-remote-backlog-handoff.test.sh +453 -0
- package/.agents/tests/fm-remote-doctor.test.sh +625 -0
- package/.agents/tests/fm-remote-entrypoint.test.sh +59 -0
- package/.agents/tests/fm-remote-job-orphan-reap.test.sh +205 -0
- package/.agents/tests/fm-remote-job.test.sh +768 -0
- package/.agents/tests/fm-remote-reply.test.sh +520 -0
- package/.agents/tests/fm-remote-secondmate-lifecycle-e2e.test.sh +1256 -0
- package/.agents/tests/fm-remote-secondmate-parent-binding.test.sh +326 -0
- package/.agents/tests/fm-remote-secondmate-trace-context.test.sh +310 -0
- package/.agents/tests/fm-remote-transport-lanes.test.sh +431 -0
- package/.agents/tests/fm-review-diff.test.sh +176 -0
- package/.agents/tests/fm-secondmate-harness.test.sh +2600 -0
- package/.agents/tests/fm-secondmate-lifecycle-e2e.test.sh +259 -0
- package/.agents/tests/fm-secondmate-liveness.test.sh +559 -0
- package/.agents/tests/fm-secondmate-reconcile.test.sh +732 -0
- package/.agents/tests/fm-secondmate-safety.test.sh +2972 -0
- package/.agents/tests/fm-secondmate-sync.test.sh +913 -0
- package/.agents/tests/fm-send-inbox-doorbell-live-e2e.test.sh +206 -0
- package/.agents/tests/fm-send-inbox.test.sh +352 -0
- package/.agents/tests/fm-send-popup-settle.test.sh +167 -0
- package/.agents/tests/fm-send-remote-delivery.test.sh +796 -0
- package/.agents/tests/fm-send-resolve-key.test.sh +551 -0
- package/.agents/tests/fm-send-secondmate-marker-herdr-e2e.test.sh +187 -0
- package/.agents/tests/fm-send-secondmate-marker.test.sh +278 -0
- package/.agents/tests/fm-send-settle.test.sh +147 -0
- package/.agents/tests/fm-send-strict.test.sh +241 -0
- package/.agents/tests/fm-session-lock-ancestry.test.sh +365 -0
- package/.agents/tests/fm-session-start.test.sh +2515 -0
- package/.agents/tests/fm-sessionstart-hook-live-e2e.test.sh +631 -0
- package/.agents/tests/fm-sessionstart-instruction-refresh-live-e2e.test.sh +230 -0
- package/.agents/tests/fm-sessionstart-nudge.test.sh +1039 -0
- package/.agents/tests/fm-shared-captain-inheritance.test.sh +404 -0
- package/.agents/tests/fm-spawn-batch.test.sh +148 -0
- package/.agents/tests/fm-spawn-dispatch-profile.test.sh +827 -0
- package/.agents/tests/fm-spawn-pool-base-freshen.test.sh +440 -0
- package/.agents/tests/fm-spawn-worktree-settle.test.sh +147 -0
- package/.agents/tests/fm-startup-memory-budget.test.sh +333 -0
- package/.agents/tests/fm-startup-network.test.sh +712 -0
- package/.agents/tests/fm-stow-cascade.test.sh +370 -0
- package/.agents/tests/fm-subagent-pretool-check.test.sh +291 -0
- package/.agents/tests/fm-supervision-events.test.sh +156 -0
- package/.agents/tests/fm-supervision-instructions.test.sh +189 -0
- package/.agents/tests/fm-tangle-guard.test.sh +277 -0
- package/.agents/tests/fm-task-delivery.test.sh +420 -0
- package/.agents/tests/fm-task-inbox.test.sh +513 -0
- package/.agents/tests/fm-teardown-endpoint-safety.test.sh +374 -0
- package/.agents/tests/fm-teardown.test.sh +2665 -0
- package/.agents/tests/fm-test-fixture-cleanup.test.sh +172 -0
- package/.agents/tests/fm-test-fixtures.test.sh +132 -0
- package/.agents/tests/fm-test-isolation-proof.test.sh +278 -0
- package/.agents/tests/fm-test-run.test.sh +1196 -0
- package/.agents/tests/fm-tmux-agent-liveness.test.sh +354 -0
- package/.agents/tests/fm-tmux-submit-busy.test.sh +340 -0
- package/.agents/tests/fm-tool-update-check.test.sh +1044 -0
- package/.agents/tests/fm-trace-context-lib.test.sh +253 -0
- package/.agents/tests/fm-trace-context-spawn.test.sh +581 -0
- package/.agents/tests/fm-transition-lib.test.sh +54 -0
- package/.agents/tests/fm-turnend-guard.test.sh +1822 -0
- package/.agents/tests/fm-update.test.sh +304 -0
- package/.agents/tests/fm-vendor-auth-probe.test.sh +395 -0
- package/.agents/tests/fm-voice-relay.test.sh +4741 -0
- package/.agents/tests/fm-wake-daemon-lifecycle-e2e.test.sh +171 -0
- package/.agents/tests/fm-wake-drain-open-decisions-cursor.test.sh +356 -0
- package/.agents/tests/fm-wake-drain-open-decisions.test.sh +226 -0
- package/.agents/tests/fm-wake-drain-unread-status.test.sh +379 -0
- package/.agents/tests/fm-wake-queue.test.sh +1224 -0
- package/.agents/tests/fm-watch-arm.test.sh +821 -0
- package/.agents/tests/fm-watch-checkpoint.test.sh +87 -0
- package/.agents/tests/fm-watch-recovery-loop.test.sh +223 -0
- package/.agents/tests/fm-watch-triage.test.sh +3889 -0
- package/.agents/tests/fm-watcher-lock.test.sh +1133 -0
- package/.agents/tests/fm-x-mode.test.sh +3042 -0
- package/.agents/tests/gleipnir-guard-pretool-check.test.sh +51 -0
- package/.agents/tests/gleipnir-machine-lock.test.sh +130 -0
- package/.agents/tests/herdr-test-safety.sh +42 -0
- package/.agents/tests/lib.sh +315 -0
- package/.agents/tests/remote-herdr-fixture.sh +125 -0
- package/.agents/tests/secondmate-helpers.sh +193 -0
- package/.agents/tests/smoke.test.sh +93 -0
- package/.agents/tests/wake-helpers.sh +338 -0
- package/.agents/tests/zellij-test-safety.sh +60 -0
- package/.agents/tools/README.md +10 -0
- package/.agents/tools/bin/tasks-cli +267 -0
- package/.agents/tools/tasks-cli.ts +216 -0
- package/AGENTS.md +454 -0
- package/CHANGELOG.md +881 -0
- package/LICENSE +1 -1
- package/NOTICE +63 -0
- package/README.md +113 -39
- package/RULES/01-domains.md +51 -0
- package/RULES/02-agents.md +78 -0
- package/RULES/03-houses.md +61 -0
- package/RULES/04-hoard.md +65 -0
- package/RULES/05-platforms.md +67 -0
- package/RULES/06-append-only.md +58 -0
- package/RULES/07-config.md +45 -0
- package/RULES/08-delivery-gate.md +75 -0
- package/RULES/README.md +20 -0
- package/bin/README.md +107 -0
- package/bin/a2a-mcp.sh +98 -0
- package/bin/a2a-serve.py +103 -0
- package/bin/a2a-serve.sh +8 -0
- package/bin/a2a-talk.sh +50 -0
- package/bin/a2abridge-ensure.sh +108 -0
- package/bin/agent-run.sh +43 -0
- package/bin/agents-config.sh +233 -0
- package/bin/apodex-smoke-test.sh +92 -0
- package/bin/bifrost-bridge.sh +112 -0
- package/bin/bifrost-ingress.sh +77 -0
- package/bin/bootstrap-macos.sh +107 -0
- package/bin/bootstrap-windows.ps1 +112 -0
- package/bin/branch-guard.sh +64 -0
- package/bin/brokk +73 -0
- package/bin/brokk-classify-lib.sh +1770 -0
- package/bin/brokk-lease-lib.sh +222 -0
- package/bin/brokk-lease.sh +193 -0
- package/bin/brokk-lint.sh +65 -0
- package/bin/brokk-send.sh +38 -0
- package/bin/brokk-update.sh +9 -0
- package/bin/brokk-wake-grant.sh +127 -0
- package/bin/brokk-wake-lib.sh +1849 -0
- package/bin/changelog-guard.sh +165 -0
- package/bin/crash-sense.sh +160 -0
- package/bin/desktop-place.sh +224 -0
- package/bin/docs-guard.sh +39 -0
- package/bin/editor-place.sh +207 -0
- package/bin/eindri-acclaim.sh +34 -0
- package/bin/eindri-control.sh +28 -0
- package/bin/eindri-role.sh +83 -0
- package/bin/eindri-seen.sh +41 -0
- package/bin/eindri-send.sh +15 -0
- package/bin/eindri-start.sh +85 -0
- package/bin/eindri-watch.sh +57 -0
- package/bin/einherjar-spawn.sh +576 -0
- package/bin/eir-doctor.sh +112 -0
- package/bin/erindi-brief.sh +271 -0
- package/bin/fleet-apply.sh +68 -0
- package/bin/github-deploy.sh +81 -0
- package/bin/gjallarhorn-expose.sh +102 -0
- package/bin/gjallarhorn-notify.sh +58 -0
- package/bin/gjallarhorn-purge.sh +54 -0
- package/bin/gjallarhorn-tunnel.sh +72 -0
- package/bin/gleipnir-lock-lib.sh +284 -0
- package/bin/groa-update.sh +122 -0
- package/bin/hall-snapshot.sh +92 -0
- package/bin/hamr-harness.sh +246 -0
- package/bin/heimdall-ssh-keys.sh +374 -0
- package/bin/herdr-agents.py +44 -0
- package/bin/herdr-ensure.sh +104 -0
- package/bin/herdr-run.sh +431 -0
- package/bin/hermes-ensure.sh +88 -0
- package/bin/hoard-lib.sh +25 -0
- package/bin/hodd.sh +78 -0
- package/bin/host-sense.sh +199 -0
- package/bin/huginn-research-worker.sh +108 -0
- package/bin/local-model-lock.sh +51 -0
- package/bin/mimir-bridge.py +226 -0
- package/bin/mimir-bridge.sh +87 -0
- package/bin/mimir-ingest.sh +131 -0
- package/bin/mimir.sh +113 -0
- package/bin/mjollnir-webhook.sh +59 -0
- package/bin/mjollnir.sh +85 -0
- package/bin/model-hardware.sh +82 -0
- package/bin/model-resolve.sh +147 -0
- package/bin/models-detect.sh +178 -0
- package/bin/nornir-cron-start.sh +162 -0
- package/bin/nornir-job-daily-briefing.sh +191 -0
- package/bin/nornir-job-git-sync.sh +152 -0
- package/bin/nornir-job-memory-housekeeping.sh +114 -0
- package/bin/nornir-job-observer.sh +166 -0
- package/bin/nornir-job-skillopt-sleep.sh +76 -0
- package/bin/omarchy-hook-install.sh +60 -0
- package/bin/omarchy-install.sh +148 -0
- package/bin/omarchy-plugins.sh +174 -0
- package/bin/omarchy-sense.sh +149 -0
- package/bin/perm-guard.sh +30 -0
- package/bin/pi-agent.sh +68 -0
- package/bin/pi-ensure.sh +77 -0
- package/bin/pi-local.sh +37 -0
- package/bin/pi-seat.sh +63 -0
- package/bin/prereq-ensure.sh +166 -0
- package/bin/private-guard.sh +38 -0
- package/bin/project-git.sh +55 -0
- package/bin/public-guard.sh +70 -0
- package/bin/ratatoskr.sh +49 -0
- package/bin/realm-lib.sh +32 -0
- package/bin/repo-scrub.sh +62 -0
- package/bin/rodd-operational-input.sh +250 -0
- package/bin/runes-append.sh +198 -0
- package/bin/saga-session-start.sh +172 -0
- package/bin/saga-sessionstart-run.sh +79 -0
- package/bin/saga-wake-drain.sh +41 -0
- package/bin/secret-guard.sh +63 -0
- package/bin/sessrumnir-ensure.sh +100 -0
- package/bin/sessrumnir-sync.sh +237 -0
- package/bin/sessrumnir.sh +91 -0
- package/bin/skillopt-setup.sh +76 -0
- package/bin/skuld-branch-outcome.sh +203 -0
- package/bin/skuld-branch-prompt.sh +101 -0
- package/bin/smidja-bootstrap.sh +90 -0
- package/bin/smidja-observe.sh +86 -0
- package/bin/syn-arm-pretool-check.sh +57 -0
- package/bin/syn-asset-pretool-check.sh +76 -0
- package/bin/syn-cd-pretool-check.sh +28 -0
- package/bin/syn-guard-pretool-check.sh +83 -0
- package/bin/syn-turnend-guard.sh +36 -0
- package/bin/syn-watch-arm.sh +99 -0
- package/bin/tailscale-sync.sh +190 -0
- package/bin/telegram-bot.sh +69 -0
- package/bin/toolchain.sh +74 -0
- package/bin/utgard.sh +111 -0
- package/bin/valhalla.sh +115 -0
- package/bin/valknut-load.sh +260 -0
- package/bin/vor-crew-state.sh +124 -0
- package/bin/wedge-notify.sh +47 -0
- package/bin/workspace-provision.sh +80 -0
- package/bin/workspace-rag.sh +150 -0
- package/bin/wyrd-db.sh +47 -0
- package/bin/yggdrasil.sh +152 -0
- package/bin/ymir-edit.sh +145 -0
- package/bin/ymir-install.sh +641 -0
- package/bin/ymir-invite.sh +93 -0
- package/bin/ymir-isolation.sh +88 -0
- package/bin/ymir-migrate.sh +61 -0
- package/bin/ymir-platform.sh +348 -0
- package/bin/ymir-say.sh +97 -0
- package/bin/ymir-setup-auth.sh +108 -0
- package/bin/ymir-validate.sh +173 -0
- package/bin/ymir.js +74 -16
- package/docs/Architecture.md +339 -0
- package/docs/design.md +351 -0
- package/docs/installations/README.md +63 -0
- package/docs/installations/ymir-home.md +93 -0
- package/docs/integration.md +105 -0
- package/docs/lore.md +1056 -0
- package/docs/research/agent-harnesses.md +290 -0
- package/docs/runbooks/README.md +19 -0
- package/docs/runbooks/a2a.md +91 -0
- package/docs/runbooks/agent-permissions.md +99 -0
- package/docs/runbooks/agents.md +57 -0
- package/docs/runbooks/models.md +69 -0
- package/docs/runbooks/realm-onboarding.md +60 -0
- package/docs/runbooks/secrets-and-hoard.md +60 -0
- package/docs/runbooks/updates-and-migrations.md +110 -0
- package/docs/runbooks/worktrees-isolation.md +72 -0
- package/docs/session-start.md +105 -0
- package/docs/skillopt-integration.md +321 -0
- package/docs/sync-system.md +66 -0
- package/docs/workspaces.md +104 -0
- package/docs/ymir-rut.md +260 -0
- package/package.json +44 -14
- package/packaging/build.sh +74 -0
- package/packaging/macos/Ymir Installer.command +43 -0
- package/packaging/windows/ymir-setup.nsi +74 -0
- package/scripts/README.md +22 -0
- package/scripts/electron.sh +210 -0
- package/scripts/start.sh +167 -0
- package/scripts/stop.sh +113 -0
- package/install.sh +0 -35
package/LICENSE
CHANGED
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
same "printed page" as the copyright notice for easier
|
|
188
188
|
identification within third-party archives.
|
|
189
189
|
|
|
190
|
-
Copyright
|
|
190
|
+
Copyright 2026 zerwiz
|
|
191
191
|
|
|
192
192
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
193
|
you may not use this file except in compliance with the License.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
Ymir
|
|
2
|
+
Copyright 2026 zerwiz
|
|
3
|
+
|
|
4
|
+
This product includes software developed by the Ymir project
|
|
5
|
+
(https://github.com/zerwiz/ymir).
|
|
6
|
+
|
|
7
|
+
Provenance — firstmate
|
|
8
|
+
Ymir is a Norse-named derivative of the "firstmate" agent distro
|
|
9
|
+
(https://github.com/kunchenguid/firstmate), Copyright (c) kunchenguid and
|
|
10
|
+
contributors, licensed under the MIT License
|
|
11
|
+
(https://github.com/kunchenguid/firstmate/blob/main/LICENSE). Portions of this
|
|
12
|
+
product are derived from firstmate; its copyright and permission notice are
|
|
13
|
+
retained here as that license requires. Firstmate's own names survive only as
|
|
14
|
+
provenance (see .agents/skills/galdr-ymirsystem/assets/porting-upstream-to-norse.md).
|
|
15
|
+
|
|
16
|
+
Licensed under the Apache License, Version 2.0 (see LICENSE).
|
|
17
|
+
|
|
18
|
+
--------------------------------------------------------------------------
|
|
19
|
+
Third-party components
|
|
20
|
+
--------------------------------------------------------------------------
|
|
21
|
+
|
|
22
|
+
Ymir adopts validated open-source engines under its own Norse shells. Each
|
|
23
|
+
component below remains under its own licence; its copyright belongs to its
|
|
24
|
+
authors. Ymir does not relicense them.
|
|
25
|
+
|
|
26
|
+
MIT
|
|
27
|
+
treehouse https://github.com/kunchenguid/treehouse
|
|
28
|
+
powers Yggdrasil (git worktrees)
|
|
29
|
+
sandcastle https://github.com/mattpocock/sandcastle
|
|
30
|
+
powers Utgard (ephemeral sandboxes)
|
|
31
|
+
no-mistakes https://github.com/kunchenguid/no-mistakes
|
|
32
|
+
powers the clean-PR gate
|
|
33
|
+
hermes-agent https://github.com/NousResearch/hermes-agent
|
|
34
|
+
the Hermes worker runtime
|
|
35
|
+
pi https://github.com/earendil-works/pi
|
|
36
|
+
the coding harness surface
|
|
37
|
+
oh-my-pi https://github.com/can1357/oh-my-pi
|
|
38
|
+
prior art for the pi surface (studied)
|
|
39
|
+
|
|
40
|
+
firstmate https://github.com/kunchenguid/firstmate
|
|
41
|
+
the fleet — one agent, a crew
|
|
42
|
+
axi https://github.com/kunchenguid/axi
|
|
43
|
+
agent-ergonomics design principles
|
|
44
|
+
lavish-axi https://github.com/kunchenguid/lavish-axi
|
|
45
|
+
the HTML-artifact editor (Lavish)
|
|
46
|
+
SkillOpt https://github.com/zerwiz/SkillOpt
|
|
47
|
+
**Gunnlöð** — skill optimization (MIT, © zerwiz)
|
|
48
|
+
|
|
49
|
+
Apache License 2.0
|
|
50
|
+
pi-desktop https://github.com/FaqFirebase/pi-desktop (v0.1.7-alpha,
|
|
51
|
+
commit 4a5601b)
|
|
52
|
+
vendored and re-themed as apps/sessrumnir (Sessrumnir).
|
|
53
|
+
Copyright 2026 Pi Desktop GUI Contributors.
|
|
54
|
+
This is a MODIFIED fork; the changes and the upstream
|
|
55
|
+
notice are recorded in apps/sessrumnir/NOTICE.
|
|
56
|
+
a2aproject/a2a https://github.com/a2aproject/a2a
|
|
57
|
+
the A2A 1.0 protocol (Apache-2.0); see its LICENSE.
|
|
58
|
+
|
|
59
|
+
Studied as reference only (no code shipped): oh-my-pi, microsoft/agent-framework,
|
|
60
|
+
langchain-ai/langgraph, crewAIInc/crewAI, anthropics/claude-code, openai/openai-python,
|
|
61
|
+
stanfordnlp/dspy.
|
|
62
|
+
|
|
63
|
+
Full licence texts and compliance status: THIRD-PARTY-LICENSES
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# YMIR — The Single-Tenant Agent Operating System
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
---
|
|
@@ -10,39 +10,6 @@
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
> **The front door to Ymir** — a single-operator, self-hosted, multi-agent AI runtime.
|
|
14
|
-
> One command stands it up on your own machine. No hosting, no accounts.
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
# 1 · curl — fetch the bootstrap and run it
|
|
18
|
-
curl -fsSL https://raw.githubusercontent.com/zerwiz/ymir-release/main/install.sh | bash
|
|
19
|
-
|
|
20
|
-
# 2 · npx — no install, run once
|
|
21
|
-
npx @zerwiz/ymir # add --check (report only) or --yes (unattended)
|
|
22
|
-
|
|
23
|
-
# 3 · npm global — install the command, then run it
|
|
24
|
-
npm i -g @zerwiz/ymir
|
|
25
|
-
ymir
|
|
26
|
-
|
|
27
|
-
# 4 · clone the distro and run its installer directly
|
|
28
|
-
git clone https://github.com/zerwiz/ymir.git ~/.ymir
|
|
29
|
-
bash ~/.ymir/bin/ymir-install.sh
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
> All four run the **same installer**. It is idempotent — run it again and it heals
|
|
33
|
-
> forward. `--check` shows the plan without writing anything.
|
|
34
|
-
|
|
35
|
-
This npm package is only the **bootstrap** (install.sh + a thin `ymir` bin): it
|
|
36
|
-
fetches the Ymir distro and runs its installer, which provisions, self-heals and
|
|
37
|
-
**validates** what it claims is running. It carries no secrets.
|
|
38
|
-
|
|
39
|
-
> **Alpha** — the forge is hot and the anvil works, but expect rough edges, and do
|
|
40
|
-
> not expose it as a public service yet.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
# YMIR — The Single-Tenant Agent Operating System
|
|
45
|
-
|
|
46
13
|
> **One operator. One repo. A whole business, run by a Norse-named agent fleet.**
|
|
47
14
|
|
|
48
15
|

|
|
@@ -210,10 +177,18 @@ installable by anyone running pi.
|
|
|
210
177
|
| Issue→PR | **Mjollnir** | autonomous fixes & PRs |
|
|
211
178
|
| Process monitor | **Valhalla** | PM2/Docker supervision |
|
|
212
179
|
| Skill synthesis | **Gungnir** | dynamic skill creation |
|
|
180
|
+
| Skill optimization | **Gunnlöð** | trajectory-driven skill refinement |
|
|
181
|
+
| Smíðja | **Smíðja** | the smithy — roster, phases, trace |
|
|
213
182
|
| Session digest | **Sága** | the context injected at session open |
|
|
214
183
|
| Watch / supervision | **Sýn** | watcher, guard, seat continuity |
|
|
215
184
|
| Session lock | **Gleipnir** | one live session per home |
|
|
216
185
|
| Scheduled jobs | **Nornir** | the fates who govern time |
|
|
186
|
+
| Control-plane hub | **Vingólf** | coordination, identity, sync across substrates |
|
|
187
|
+
| Live hall board | **Óðrerir** | fleet planning glass (:4322) |
|
|
188
|
+
| Multi-tenant domains | **Svartalfaheim** | scoped tenant workspaces |
|
|
189
|
+
| Agent ergonomics | **Galdr** | TOON output, 10 design principles |
|
|
190
|
+
| Smíðja orchestrator | **Völundr** | runs Smíðja (Kaia's seat inside) |
|
|
191
|
+
| MCP/A2A composition | **Hermóðr** | MCP vertical (agent→tools) + A2A horizontal |
|
|
217
192
|
| Host desktop (Omarchy) | **Omarchy** | the machine Ymir runs on: monitors, scale, themes, hooks |
|
|
218
193
|
| Terminal backend | **Þjazi** | agent panes — herdr (protocol 14+) or tmux |
|
|
219
194
|
| Harness surface | **pi** | extensions, skills, prompt templates, packages |
|
|
@@ -244,10 +219,11 @@ the master builder; Tyr judges compliance.
|
|
|
244
219
|
| `syn-recovery` | Sýn | stuck-worker recovery playbook |
|
|
245
220
|
| `ymir` | Ymir | operate the host: update · Omarchy · Þjazi |
|
|
246
221
|
| `hamr` | Hamr | per-harness adapter reference (OpenCode, Pi, Claude, Cursor, Codex) |
|
|
222
|
+
| `gunnlod` | Gunnlöð | skill optimization — trajectory-driven refinement via SkillOpt |
|
|
247
223
|
|
|
248
224
|
The Galdr family enforces the 10 ergonomic principles (TOON output, minimal schemas,
|
|
249
225
|
self-correcting errors) and the runtime acceptance gates; run
|
|
250
|
-
`bash .agents/skills/galdr-
|
|
226
|
+
`bash .agents/skills/galdr-ymirsystem/scripts/compliance-check.sh` before claiming done.
|
|
251
227
|
|
|
252
228
|
---
|
|
253
229
|
|
|
@@ -354,7 +330,44 @@ freedom of being native to all three rather than portable to none.
|
|
|
354
330
|
|
|
355
331
|
Point a harness (OpenCode, Pi, Claude Code, Cursor, Codex) at the repo and it takes
|
|
356
332
|
the seat as **Brokk**. Read [`AGENTS.md`](AGENTS.md) for the operating laws and
|
|
357
|
-
|
|
333
|
+
`$YMIR_HOME/docs/masterplan.md` for the forge orders.
|
|
334
|
+
|
|
335
|
+
### Bringing your own machine — Windows, macOS, Linux
|
|
336
|
+
|
|
337
|
+
Ymir is **Omarchy-first**: the Omarchy layer is first-class. But *first* is not
|
|
338
|
+
*only*. The core is portable, and every other host gets a layer of its own.
|
|
339
|
+
`bin/host-sense.sh` is the one place that looks before anything acts — distro,
|
|
340
|
+
kernel, session (Wayland/X11), desktop, and what that desktop can actually do:
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
bin/host-sense.sh # THIS machine, as TOON
|
|
344
|
+
bin/host-sense.sh capability tray # yes | partial | no — for scripting
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
hosts[4]{host,how_you_get_it,what_it_is}:
|
|
349
|
+
"Omarchy","bin/ymir-install.sh","the first-class layer: numbered desktops, launcher entries, the post-update hook"
|
|
350
|
+
"other Linux (Ubuntu · Fedora · Debian · Arch)","bin/ymir-install.sh","the portable core; the Omarchy layer skips cleanly, never faked"
|
|
351
|
+
"Windows","Ymir-Setup.exe — or bin/bootstrap-windows.ps1","Ubuntu on WSL2 is the host; Ymir installs inside it"
|
|
352
|
+
"macOS","Ymir Installer.command (or the .pkg) — or bin/bootstrap-macos.sh","Ubuntu in a Lima VM is the host; Ymir installs inside it"
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
Windows and macOS do not run Ymir natively: what Ymir installs is a Linux
|
|
356
|
+
runtime, so those layers raise a Linux host and hand the work to
|
|
357
|
+
`bin/ymir-install.sh` inside it. Each is gated on its host and skips cleanly
|
|
358
|
+
everywhere else — no layer asserts a machine it is not standing on.
|
|
359
|
+
|
|
360
|
+
**Build the installers** — neither needs a matching host:
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
packaging/build.sh --check # what this machine can build, and with what
|
|
364
|
+
packaging/build.sh --exe # Ymir-Setup-<version>.exe (NSIS: apt-get install nsis)
|
|
365
|
+
packaging/build.sh --mac # Ymir-<version>.pkg (pkgbuild — Apple-only)
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
CI builds both (`.github/workflows/ymir-installers.yml`): NSIS on an Ubuntu
|
|
369
|
+
runner, pkgbuild on a macOS runner. Signing and notarisation need the operator's
|
|
370
|
+
own Apple and Windows credentials, so the artefacts ship unsigned.
|
|
358
371
|
|
|
359
372
|
---
|
|
360
373
|
|
|
@@ -418,7 +431,7 @@ ymir/
|
|
|
418
431
|
├── svartalfaheim/ # company container root (zerwiz) — future multi-user
|
|
419
432
|
├── workspace/ # THE SINGLE TENANT: work/ · personal/ · companies/ ·
|
|
420
433
|
│ # workspaces.yaml · projects.yaml · memory/ · INSTALL.md
|
|
421
|
-
├── smidja/
|
|
434
|
+
├── apps/smidja/ # the smithy engine + smidja.db (runs, stats, trace)
|
|
422
435
|
├── state/ # runtime state: lock, chat/, bridges, cron
|
|
423
436
|
├── scripts/start.sh stop.sh # raise/lower the whole system
|
|
424
437
|
├── assets/ # art, the OS diagram, reference material
|
|
@@ -515,7 +528,17 @@ Every subsystem, component, and process is named for the figure whose role match
|
|
|
515
528
|
its work; the operator is the **Allfather** (Odin). The house voice is Norse-natural;
|
|
516
529
|
flavor may season a line, but an imported term never names a subsystem. The full
|
|
517
530
|
component map lives in
|
|
518
|
-
[`.agents/skills/galdr-
|
|
531
|
+
[`.agents/skills/galdr-ymirsystem/assets/norse-naming.md`](.agents/skills/galdr-ymirsystem/assets/norse-naming.md).
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
## Built on
|
|
536
|
+
|
|
537
|
+
Ymir is a Norse-named derivative of the **firstmate** agent distro
|
|
538
|
+
([github.com/kunchenguid/firstmate](https://github.com/kunchenguid/firstmate),
|
|
539
|
+
MIT License, © kunchenguid). Ymir adopts and retargets firstmate's mechanism under
|
|
540
|
+
its open-source-first law; upstream names survive only as provenance. See
|
|
541
|
+
[`NOTICE`](NOTICE).
|
|
519
542
|
|
|
520
543
|
---
|
|
521
544
|
|
|
@@ -581,9 +604,10 @@ follow them, star them, learn from them.
|
|
|
581
604
|
| [firstmate](https://github.com/kunchenguid/firstmate) | kunchenguid | MIT | the fleet |
|
|
582
605
|
| [axi](https://github.com/kunchenguid/axi) | kunchenguid | MIT | agent-ergonomics principles |
|
|
583
606
|
| [lavish-axi](https://github.com/kunchenguid/lavish-axi) | kunchenguid | MIT | the HTML-artifact editor |
|
|
607
|
+
| [SkillOpt](https://github.com/zerwiz/SkillOpt) | zerwiz | MIT | **Gunnlöð** — skill optimization (trajectory-driven refinement) |
|
|
584
608
|
|
|
585
609
|
Their full licence texts are bundled in [THIRD-PARTY-LICENSES](THIRD-PARTY-LICENSES),
|
|
586
|
-
and
|
|
610
|
+
and their attribution in [NOTICE](NOTICE).
|
|
587
611
|
If we have benefited from your work and missed you here, tell us — we will fix it,
|
|
588
612
|
loudly.
|
|
589
613
|
|
|
@@ -592,3 +616,53 @@ Thank you all. The forge is hot because you lit it.
|
|
|
592
616
|
_Where a maker teaches on YouTube we link the channel — Matt Pocock's is
|
|
593
617
|
[youtube.com/@mattpocockuk](https://www.youtube.com/@mattpocockuk). If you make a
|
|
594
618
|
tutorial for a project we use, tell us and we will link yours too._
|
|
619
|
+
|
|
620
|
+
---
|
|
621
|
+
|
|
622
|
+
## GitHub
|
|
623
|
+
|
|
624
|
+
The public repository lives at **zerwiz/ymir** on GitHub:
|
|
625
|
+
[github.com/zerwiz/ymir](https://github.com/zerwiz/ymir).
|
|
626
|
+
|
|
627
|
+
- **Issues** — report bugs, request features, or ask questions.
|
|
628
|
+
- **Pull Requests** — all changes ship via PR; every PR requires
|
|
629
|
+
explicit Allfather approval before merge. No force-pushes. No auto-merge.
|
|
630
|
+
- **Projects** — the board tracks every workstream across the hall.
|
|
631
|
+
- **Actions** — CI runs `bin/secret-guard.sh` and `bin/docs-guard.sh`
|
|
632
|
+
on every push and PR. A violation blocks the build.
|
|
633
|
+
|
|
634
|
+
Your own login is always your own: **never** share a token, never
|
|
635
|
+
commit credentials, never use a shared account. All secrets are
|
|
636
|
+
resolved from `$YMIR_HOME/secrets/platform.env` at runtime.
|
|
637
|
+
|
|
638
|
+
---
|
|
639
|
+
|
|
640
|
+
## Install — the four doors
|
|
641
|
+
|
|
642
|
+
```bash
|
|
643
|
+
curl -fsSL https://raw.githubusercontent.com/zerwiz/ymir/main/install.sh | bash
|
|
644
|
+
npx @zerwiz/ymir install # no global install
|
|
645
|
+
git clone https://github.com/zerwiz/ymir.git ~/Ymir && cd ~/Ymir && bin/ymir-install.sh
|
|
646
|
+
npm install -g @zerwiz/ymir # the CLI, global
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
**Who can install this today.** The Ymir distro is private while it is young —
|
|
650
|
+
so `curl`, `npx` and `git clone` work for the author and invited users, not for
|
|
651
|
+
the public (an unknown clone returns 404). If you would like access, ask:
|
|
652
|
+
**zerwiz.org**. When the distro opens, this note goes away and the four commands
|
|
653
|
+
above become open to everyone.
|
|
654
|
+
|
|
655
|
+
**Early adopters and contributors can install now — but it is rough.** Expect
|
|
656
|
+
sharp edges: the installer is honest about what it cannot do, and says so rather
|
|
657
|
+
than pretending. Bring a Linux host (or let the Windows/macOS bootstraps give
|
|
658
|
+
you one — see *Bringing your own machine* above), and read what the installer
|
|
659
|
+
prints before you trust it.
|
|
660
|
+
|
|
661
|
+
The npm package carries the runtime's `bin/` scripts and the installer; every
|
|
662
|
+
`npm update -g @zerwiz/ymir` re-runs the same self-healing setup that provisions
|
|
663
|
+
prerequisites, engines, and the Hlidskjalf seat. `@zerwiz/*` are the app
|
|
664
|
+
packages (Hlidskjalf, Óðrerir, Sessrúmnir, Smíðja) — one per app.
|
|
665
|
+
|
|
666
|
+
Private data never touches npm — all user data lives at `$YMIR_HOME` (the hoard
|
|
667
|
+
at `hodd/` and the realms at `svartalfaheim/`) and syncs via the user's
|
|
668
|
+
**private** GitHub repo, never a public one.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Rule 01 — Domains, Houses, and Eindri
|
|
2
|
+
|
|
3
|
+
**Status:** law. This rule governs every other: how the work of the house is
|
|
4
|
+
divided, and who does it.
|
|
5
|
+
|
|
6
|
+
## 1. A house is a company — and only that
|
|
7
|
+
|
|
8
|
+
A **house** is a **company**. Nothing else is a house. **WayOf** is a house (a
|
|
9
|
+
company). Use "house" and "company" interchangeably; never use "house" for a
|
|
10
|
+
field of knowledge.
|
|
11
|
+
|
|
12
|
+
## 2. A domain is a field of knowledge
|
|
13
|
+
|
|
14
|
+
A **domain** is an area of knowledge. The Norse word for a domain is **Grein**
|
|
15
|
+
(plural **Greinar**) — a *branch* or *discipline*; one grein, many greinar. Use
|
|
16
|
+
“domain” and “Grein” interchangeably. A domain is named for the figure whose
|
|
17
|
+
craft it is. There are eight Greinar:
|
|
18
|
+
|
|
19
|
+
| Domain | Id | Covers |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| **Ymir Labs** | `ymirlabs` | the system itself — agents knowledgeable about Ymir |
|
|
22
|
+
| **Brokk Forge** | `brokkforge` | engineering & build tooling |
|
|
23
|
+
| **Runestone Labs** | `runestone` | records & compliance |
|
|
24
|
+
| **Muninn Labs** | `muninn` | memory & knowledge |
|
|
25
|
+
| **Dvalin** | `dvalin` | crafted tools |
|
|
26
|
+
| **Utgard Studios** | `utgard` | creative |
|
|
27
|
+
| **Askr** | `askr` | human-centered products |
|
|
28
|
+
| **Mannheim** | `mannheim` | holding — allocated when a venture claims it |
|
|
29
|
+
|
|
30
|
+
A domain is **not** a company and **not** a workspace. Domains are the axes of
|
|
31
|
+
knowledge; workspaces (`personal` · `work`) are the scopes a person runs.
|
|
32
|
+
|
|
33
|
+
## 3. Eindri are the specialists
|
|
34
|
+
|
|
35
|
+
**Eindri** are the workers — a marketer, a builder, a researcher, a planner, a
|
|
36
|
+
reviewer, a documenter, a scout, and their kin. Every Eindri names **two**
|
|
37
|
+
things: its **domain** (which field it belongs to) and its **craft** (what it
|
|
38
|
+
does). An Eindri is never a domain and never a house.
|
|
39
|
+
|
|
40
|
+
- Agents knowledgeable about the **system itself** belong to **Ymir Labs**.
|
|
41
|
+
- A marketer belongs to a knowledge/market domain; a builder to the forge; a
|
|
42
|
+
researcher to the well; and so on — by craft.
|
|
43
|
+
|
|
44
|
+
## 4. The counting rule
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
one_house = many companies? no — a house IS a company.
|
|
48
|
+
one_domain = many Eindri.
|
|
49
|
+
one_eindri = exactly one domain.
|
|
50
|
+
one_project = one workspace (company) + many domains.
|
|
51
|
+
```
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Rule 02 — Agents (Brokk, the Eindri, and where they live)
|
|
2
|
+
|
|
3
|
+
**Status:** law. Read with Rule 01 (domains · houses · Eindri).
|
|
4
|
+
|
|
5
|
+
## 1. One home for agents
|
|
6
|
+
|
|
7
|
+
Agent profiles live **only** in **`.agents/agents/*.md`**. That directory is the
|
|
8
|
+
source of truth; everything else binds to it.
|
|
9
|
+
|
|
10
|
+
- Harness directories are **symlinks**, never copies:
|
|
11
|
+
- OpenCode: `.opencode/agent/<name>.md` → `../../.agents/agents/<profile>.md`
|
|
12
|
+
- Pi: `.pi/agents/<profile>.md` → the same canonical files
|
|
13
|
+
- **Never edit** `.opencode/agent` or `.pi/agents` — they are links. Edit
|
|
14
|
+
`.agents/agents/<profile>.md` and re-run `bin/valknut-load.sh --all`.
|
|
15
|
+
|
|
16
|
+
## 2. The two kinds of agent
|
|
17
|
+
|
|
18
|
+
| Kind | Who | Where |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| **Primary** | **Brokk** — the bellows; sole contact with the Allfather | `.agents/agents/brokk.md` |
|
|
21
|
+
| **Eindri** | the workers — isolated smiths in Utgard on Yggdrasil worktrees | `.agents/agents/<name>-<craft>.md` |
|
|
22
|
+
|
|
23
|
+
Every **Eindri** is a **specialist**: a marketer, a builder, a researcher, a
|
|
24
|
+
planner, a reviewer, a documenter, a scout, and their kin. An Eindri is never a
|
|
25
|
+
domain and never a house (Rule 01).
|
|
26
|
+
|
|
27
|
+
## 3. The profile contract
|
|
28
|
+
|
|
29
|
+
Every profile carries, in frontmatter:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
name the agent id (short, lowercase) e.g. sindri
|
|
33
|
+
norse_name the figure the craft is named for e.g. Sindri
|
|
34
|
+
descriptor the craft in a word e.g. smith
|
|
35
|
+
domain the field it belongs to (Rule 01) e.g. brokkforge
|
|
36
|
+
role the functional role e.g. developer
|
|
37
|
+
capabilities the skills list
|
|
38
|
+
tools the allowed tools
|
|
39
|
+
mode/model/permission the harness binding (OpenCode) — from the canonical
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- **Name for the role, never the mood.** The Norse figure must match the craft
|
|
43
|
+
(Sindri smiths, Bragi sings, Mímir remembers, Förseti judges).
|
|
44
|
+
- **Domains:** agents knowledgeable about the **system itself** belong to
|
|
45
|
+
**Ymir Labs** (`ymirlabs`).
|
|
46
|
+
- The file name is `<name>-<craft>.md`; the harness link is `<name>.md`.
|
|
47
|
+
|
|
48
|
+
## 4. No mock agents
|
|
49
|
+
|
|
50
|
+
- Agent ids, names, domains, models, and status must be **real** and sourced
|
|
51
|
+
(from the profile, the harness config, or live signals). **Never fabricate**
|
|
52
|
+
status, traceability, task counts, or uptime.
|
|
53
|
+
- The **demo** roster (`apps/hlidskjalf/src/data/mock.ts`) is the single, clearly
|
|
54
|
+
labelled mock and appears only in demo mode; it never stands in for live data.
|
|
55
|
+
|
|
56
|
+
## 5. Changing an agent
|
|
57
|
+
|
|
58
|
+
1. Edit `.agents/agents/<name>-<craft>.md`.
|
|
59
|
+
2. Run `bin/valknut-load.sh --all` to rebind the harness symlinks.
|
|
60
|
+
3. If a governed path changed, update the owning Galdr asset in the same change
|
|
61
|
+
(compliance gate `assets`).
|
|
62
|
+
|
|
63
|
+
## Permissions — bash is the hole
|
|
64
|
+
|
|
65
|
+
- A profile's `permission:` block is law for that agent over the tools.
|
|
66
|
+
- **A flat `bash: allow` is a total shell and overrides every `edit`/`write`
|
|
67
|
+
deny.** A read-only agent with `edit: deny` but `bash: allow` can still write,
|
|
68
|
+
delete, and reach the network. Never give a read-only agent a flat
|
|
69
|
+
`bash: allow`; give it a **pattern map** — only the read commands it needs are
|
|
70
|
+
`allow`, everything else is `ask` or `deny`.
|
|
71
|
+
- Network commands (`curl`, `wget`, `ssh`, arbitrary binaries) are `ask` at
|
|
72
|
+
least. Code you do not fully trust belongs in **Utgard** (no host root, no
|
|
73
|
+
network), not on the host behind a permissive shell.
|
|
74
|
+
- `mode: all` (runnable) plus a full shell is the widest door — usually not what
|
|
75
|
+
you want.
|
|
76
|
+
- `bin/perm-guard.sh` flags any profile with a flat `bash: allow`
|
|
77
|
+
(`--strict` exits 1). Run it before claiming an agent change done; see the
|
|
78
|
+
runbook `docs/runbooks/agent-permissions.md`.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Rule 03 — Houses (companies)
|
|
2
|
+
|
|
3
|
+
**Status:** law. Read with Rule 01 (domains · houses · Eindri).
|
|
4
|
+
|
|
5
|
+
## 1. A house is a company — nothing else
|
|
6
|
+
|
|
7
|
+
A **house** is a **company**. The two words are the same thing; use them
|
|
8
|
+
interchangeably. **WayOf is a house (a company).**
|
|
9
|
+
|
|
10
|
+
A house is **not** a domain (Rule 01), **not** a workspace, and **not** a
|
|
11
|
+
subsystem. The eight “Labs” — Ymir Labs, Brokk Forge, Runestone Labs, Muninn
|
|
12
|
+
Labs, Dvalin, Utgard Studios, Askr, Mannheim — are **domains**, never houses.
|
|
13
|
+
|
|
14
|
+
## 2. What a house owns
|
|
15
|
+
|
|
16
|
+
- A house **owns projects**. Every project belongs to exactly **one** house and
|
|
17
|
+
may span many **domains** (Rule 01).
|
|
18
|
+
- A house has **members**, each with a role: `owner` · `admin` · `member`.
|
|
19
|
+
- A house has **products** and a **repo** (a single master registry entry,
|
|
20
|
+
`workspace/projects.yaml`).
|
|
21
|
+
|
|
22
|
+
## 3. The house record
|
|
23
|
+
|
|
24
|
+
Each house has one entity card:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
companies/<house>/entity.md
|
|
28
|
+
name the company name (the house) e.g. WayOf
|
|
29
|
+
type company | personal
|
|
30
|
+
owner the owning operator e.g. zerwiz
|
|
31
|
+
realm the scope it runs in
|
|
32
|
+
domains the fields it works across (Rule 01 ids)
|
|
33
|
+
products what it ships
|
|
34
|
+
repo git remote or local path
|
|
35
|
+
status active | holding | paused | retired
|
|
36
|
+
lore_line the one line that names the venture
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The card lives inside the company container (`svartalfaheim/<company>/`), which
|
|
40
|
+
becomes the company's Docker boundary. A work workspace mounts that container.
|
|
41
|
+
|
|
42
|
+
## 4. Naming and boundaries
|
|
43
|
+
|
|
44
|
+
- A house is named for the **company** (WayOf). Never name a house after a
|
|
45
|
+
domain, a subsystem, or a person.
|
|
46
|
+
- **House boundaries are sacred.** A house's data never reaches across to
|
|
47
|
+
another house without explicit Allfather approval.
|
|
48
|
+
- Single tenant today: the **Allfather** owns the house (WayOf); the eight
|
|
49
|
+
domains are how its knowledge is divided, not extra companies.
|
|
50
|
+
|
|
51
|
+
## 5. Do not conflate
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
house = company (WayOf)
|
|
55
|
+
domain = field of knowledge, a Grein (the eight Labs)
|
|
56
|
+
workspace = a running scope (personal | work)
|
|
57
|
+
brand = a domain's label (Ymir Labs, Brokk Forge, …)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Anything that treats a domain as a house, or a house as a domain, is a
|
|
61
|
+
violation and must be corrected here first.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Rule 04 — Hodd, the private hoard, and YMIR_HOME
|
|
2
|
+
|
|
3
|
+
Every private thing the Allfather holds lives in **one** place: **Hodd**
|
|
4
|
+
(`hodd/`) at the repo, and **YMIR_HOME** (`$HOME/Documents/Ymir/`) as the
|
|
5
|
+
shareable private repo. *Hodd* is Old Norse for a hoard — guarded, and
|
|
6
|
+
never shown. The repo holds the **framework** (scaffolds, guards,
|
|
7
|
+
templates); the data lives at **YMIR_HOME**, committed and pushed to a
|
|
8
|
+
private GitHub repo so it can be shared between machines.
|
|
9
|
+
|
|
10
|
+
## What belongs in Hodd (at the repo)
|
|
11
|
+
|
|
12
|
+
Only **scaffolds and guards** live at the repo path `hodd/`:
|
|
13
|
+
|
|
14
|
+
- **Guards** — `hodd/.gitignore` (inner ward, tracks only itself, README,
|
|
15
|
+
and `*.example` shapes)
|
|
16
|
+
- **README** — `hodd/README.md` (this map of the hoard)
|
|
17
|
+
- **Scaffolds** — `hodd/AGENTS.example.md`, `hodd/**/*.example` (templates
|
|
18
|
+
so a new operator knows what belongs)
|
|
19
|
+
|
|
20
|
+
## What lives at YMIR_HOME (the real hoard)
|
|
21
|
+
|
|
22
|
+
All private data is committed to the **private YMIR_HOME git repo** and
|
|
23
|
+
pushed to a **private GitHub repo** for multi-machine sync. It is **NOT**
|
|
24
|
+
gitignored — the user owns it and shares it between computers:
|
|
25
|
+
|
|
26
|
+
| Repo location | YMIR_HOME location |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `hodd/docs/` | `$YMIR_HOME/docs/` |
|
|
29
|
+
| `hodd/secrets/` | `$YMIR_HOME/secrets/` |
|
|
30
|
+
| `hodd/identity/` | `$YMIR_HOME/identity/` |
|
|
31
|
+
| `hodd/tenants/` | `$YMIR_HOME/tenants/` |
|
|
32
|
+
| `data/` | `$YMIR_HOME/data/` |
|
|
33
|
+
| `memory/kaia.engram*` | `$YMIR_HOME/memory/` |
|
|
34
|
+
|
|
35
|
+
## The law
|
|
36
|
+
|
|
37
|
+
- **Hodd at the repo is untracked.** `hodd/.gitignore` tracks only the guard
|
|
38
|
+
and the README; everything beneath is private on every clone. A clone
|
|
39
|
+
must never inherit another operator's hoard.
|
|
40
|
+
- **YMIR_HOME is committed.** All private data at YMIR_HOME is committed
|
|
41
|
+
to the user's **private** git repo and pushed to a private GitHub repo
|
|
42
|
+
for sync between machines. It is never gitignored (except runtime
|
|
43
|
+
ephemera like `*.wal`, `*.shm`, `smidja/`, `state/`).
|
|
44
|
+
- **Secrets are referenced, never inlined.** Read them by path — `YMIR_HOARD`
|
|
45
|
+
(default `$YMIR_HOME`), `bin/hodd.sh emit <file>` to set them in a shell. A
|
|
46
|
+
value never enters a tracked file, a commit, or a document.
|
|
47
|
+
- **Two wards.** `bin/secret-guard.sh` is the outer ward (pre-commit + CI);
|
|
48
|
+
`hodd/.gitignore` is the inner one. Nothing leaves without passing both.
|
|
49
|
+
- **Realm boundaries are sacred.** Private data at YMIR_HOME is
|
|
50
|
+
scoped per operator; a clone must never inherit another's hoard.
|
|
51
|
+
- **The public tree keeps only the framework** (lore, architecture, scaffold)
|
|
52
|
+
and `*.example` shapes.
|
|
53
|
+
- A change that contradicts this rule must change the rule first (append-only;
|
|
54
|
+
never silently rewritten).
|
|
55
|
+
|
|
56
|
+
## docs/ is public — plans are not
|
|
57
|
+
|
|
58
|
+
`docs/` is the **public, user-facing** tree: it holds what a user of Ymir may
|
|
59
|
+
read. Operator-private documents — plans, strategy, roadmaps, the masterplan,
|
|
60
|
+
`append-only-log`, and project planning — belong in `hodd/docs/` at the repo
|
|
61
|
+
(never `docs/`), or live at `$YMIR_HOME/docs/` in the private repo.
|
|
62
|
+
|
|
63
|
+
`bin/docs-guard.sh` blocks a commit that stages such a document under `docs/`
|
|
64
|
+
(wired into the pre-commit hook beside `secret-guard.sh`). When it fires, move
|
|
65
|
+
the file to `$YMIR_HOME/docs/` in the private repo.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Rule 05 — Platform installations
|
|
2
|
+
|
|
3
|
+
Ymir is **Omarchy-first**: the Omarchy layer is the first-class desktop
|
|
4
|
+
integration. Different operating systems and desktops may have their own
|
|
5
|
+
installation layer — macOS and Windows bring their own — while the **core stays
|
|
6
|
+
portable** and identical everywhere.
|
|
7
|
+
|
|
8
|
+
## The law
|
|
9
|
+
|
|
10
|
+
- **One core, many installations.** The core runtime — session digest, lock,
|
|
11
|
+
watch, cron, skills, the installer's user-space prerequisites, machine-config
|
|
12
|
+
rendering — runs on Linux, macOS and Windows (WSL2; MSYS best-effort).
|
|
13
|
+
Anything platform-specific lives in an *installation layer* beside the core,
|
|
14
|
+
never as a branch inside it.
|
|
15
|
+
- **A layer is gated, never assumed.** It detects its own host and reports a
|
|
16
|
+
clean skip elsewhere (`/usr/share/omarchy`, `uname`, `ymir_os`). A layer that
|
|
17
|
+
assumes it is present is a bug on every other machine.
|
|
18
|
+
- **Core changes propagate to every layer.** When a core feature changes, **every
|
|
19
|
+
platform installation layer must be updated in the same change**. A layer that
|
|
20
|
+
still installs the old shape is drift — and drift here means a machine that
|
|
21
|
+
boots expecting a runtime it no longer has.
|
|
22
|
+
- **A layer owns its integration, not a copy of the core.** No layer forks a
|
|
23
|
+
core script. It calls the core and adds only what its platform needs; two
|
|
24
|
+
copies of one script is how the platforms silently diverge.
|
|
25
|
+
- **The desktop is a platform concern.** Window placement, launcher entries,
|
|
26
|
+
service managers (systemd / launchd / Windows services) and GPU tooling belong
|
|
27
|
+
to the layer that knows the platform.
|
|
28
|
+
- **Verification is per-layer.** "It works" is a claim about *one* layer. Name
|
|
29
|
+
the layer that was tested; never let a core change be called verified because
|
|
30
|
+
one platform's install passed.
|
|
31
|
+
|
|
32
|
+
## The layers
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
layers[4]{layer,host,owns}:
|
|
36
|
+
"Omarchy (first-class)","Omarchy (Arch + Hyprland)","host sensing, numbered-desktop placement, launcher entries, shell plugins, post-update hook"
|
|
37
|
+
"macOS","macOS","launchd services, .command/.app launchers, Apple GPU reporting"
|
|
38
|
+
"Windows","WSL2 (MSYS best-effort)","WSL service wiring, .cmd/.lnk launchers"
|
|
39
|
+
"Core (portable)","every platform","the runtime, the capability shim, generated config, user-space prerequisites"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Where this shows up
|
|
43
|
+
|
|
44
|
+
| Place | What carries the rule |
|
|
45
|
+
|---|---|
|
|
46
|
+
| `bin/ymir-platform.sh` | the capability shim: the one place a platform difference is known |
|
|
47
|
+
| `bin/ymir-install.sh` | runs the core; Omarchy steps are gated on the host |
|
|
48
|
+
| the Omarchy layer (`omarchy-sense`, `omarchy-plugins`, `omarchy-hook-install`, `desktop-place`) | Omarchy only, each reporting a clean skip elsewhere |
|
|
49
|
+
| `galdr/assets/installation.md` | the two-layer model, and the rule for new desktop features |
|
|
50
|
+
| `galdr/assets/build-method.md` | the maintenance duty: a core change updates every layer |
|
|
51
|
+
|
|
52
|
+
## Maintenance duty
|
|
53
|
+
|
|
54
|
+
A core change is not complete until every layer has been checked against it. The
|
|
55
|
+
check is cheap and must be explicit:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# which layers does this change touch?
|
|
59
|
+
git grep -l "<the changed core interface>" -- bin scripts .agents/skills
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
If a layer needs a matching edit, make it in the same change, or record why it
|
|
63
|
+
does not. A rule that contradicts this rule must change the rule first
|
|
64
|
+
(append-only; never silently rewritten).
|
|
65
|
+
|
|
66
|
+
**Related:** `RULES/04-hoard.md` (what is private), `AGENTS.md` (the contract),
|
|
67
|
+
`.agents/skills/galdr-ymirsystem/assets/installation.md` (the install procedure).
|