@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
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# AI Agent Harnesses — Comparison Report
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-09-12
|
|
4
|
+
**Author:** Brokk
|
|
5
|
+
**Status:** researched, written
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Scope
|
|
10
|
+
|
|
11
|
+
This report surveys the major open-source and vendor AI agent harnesses as of September 2026. It covers frameworks that provide **agent orchestration**, **multi-agent collaboration**, **tool use**, **memory/state management**, and **workflow control** — the core primitives that define a harness.
|
|
12
|
+
|
|
13
|
+
The report is organized by **archetype** rather than vendor, because the field has converged around a few distinct patterns.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 2. Archetype Map
|
|
18
|
+
|
|
19
|
+
| # | Archetype | What it does |
|
|
20
|
+
|---|-----------|-------------|
|
|
21
|
+
| A | **Graph orchestrators** | Low-level state machines / directed graphs for agent loops |
|
|
22
|
+
| B | **Opinionated harnesses** | Batteries-included agents that work out of the box |
|
|
23
|
+
| C | **Role-based crews** | Predefined agent roles with collaborative pipelines |
|
|
24
|
+
| D | **Programming frameworks** | Declarative pipelines where code replaces prompts |
|
|
25
|
+
| E | **Vendor SDKs** | Model-provider toolkits with agent primitives |
|
|
26
|
+
| F | **Terminal agents** | IDE/terminal-bound coding agents |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 3. Detailed Comparison
|
|
31
|
+
|
|
32
|
+
### A. Graph Orchestrators
|
|
33
|
+
|
|
34
|
+
#### LangGraph (LangChain)
|
|
35
|
+
|
|
36
|
+
- **Repo:** `langchain-ai/langgraph` (Python + JS)
|
|
37
|
+
- **License:** MIT
|
|
38
|
+
- **Stars:** ~20k+
|
|
39
|
+
- **Core idea:** Build agents as stateful directed graphs (nodes = steps, edges = transitions). Inspired by Pregel and Apache Beam.
|
|
40
|
+
- **Key features:**
|
|
41
|
+
- Durable execution — agents persist through failures, resume from checkpoints
|
|
42
|
+
- Human-in-the-loop — interrupt and modify state at any point
|
|
43
|
+
- Comprehensive memory — short-term working memory + long-term persistence
|
|
44
|
+
- LangSmith integration — tracing, evaluation, deployment
|
|
45
|
+
- Subgraphs — compose complex graphs from smaller ones
|
|
46
|
+
- **Strengths:** Deepest production story; best debugging/observability via LangSmith; most flexible for custom workflows
|
|
47
|
+
- **Weaknesses:** Steep learning curve; requires understanding graph semantics; opinionated toward LangChain ecosystem
|
|
48
|
+
- **Best for:** Teams building production-grade, long-running, stateful agent systems with complex control flows
|
|
49
|
+
|
|
50
|
+
#### Microsoft Agent Framework (MAF)
|
|
51
|
+
|
|
52
|
+
- **Repo:** `microsoft/agent-framework` (Python + .NET + Go)
|
|
53
|
+
- **License:** MIT
|
|
54
|
+
- **Stars:** ~5k+
|
|
55
|
+
- **Core idea:** Enterprise-ready multi-agent orchestration with graph-based workflows (sequential, concurrent, handoff, group collaboration)
|
|
56
|
+
- **Key features:**
|
|
57
|
+
- Multi-language: Python, C#/.NET, Go
|
|
58
|
+
- Middleware system for request/response processing
|
|
59
|
+
- Declarative agents (YAML definitions)
|
|
60
|
+
- Agent Skills — domain-specific knowledge bases
|
|
61
|
+
- Foundry-hosted agents — deploy to Microsoft Foundry
|
|
62
|
+
- OpenTelemetry observability
|
|
63
|
+
- Checkpointing, streaming, human-in-the-loop, time-travel
|
|
64
|
+
- A2A and MCP interoperability
|
|
65
|
+
- **Strengths:** Enterprise-grade; multi-language; strong Microsoft ecosystem integration; successor to both AutoGen and Semantic Kernel
|
|
66
|
+
- **Weaknesses:** Newer than LangGraph; smaller community; tied to Microsoft ecosystem for full value
|
|
67
|
+
- **Best for:** Enterprise teams already in the Microsoft stack; teams needing multi-language support
|
|
68
|
+
|
|
69
|
+
### B. Opinionated Harnesses
|
|
70
|
+
|
|
71
|
+
#### Deep Agents (LangChain)
|
|
72
|
+
|
|
73
|
+
- **Repo:** `langchain-ai/deepagents` (Python + JS)
|
|
74
|
+
- **License:** MIT
|
|
75
|
+
- **Stars:** ~1k+
|
|
76
|
+
- **Core idea:** Opinionated, batteries-included agent harness inspired by Claude Code. Works out of the box for long-horizon, multi-step work.
|
|
77
|
+
- **Key features:**
|
|
78
|
+
- Sub-agents with isolated context windows
|
|
79
|
+
- Filesystem abstraction (local, sandboxed, remote)
|
|
80
|
+
- Context management (summarize long threads, offload to disk)
|
|
81
|
+
- Shell access (run commands in sandbox)
|
|
82
|
+
- Persistent memory (pluggable backends)
|
|
83
|
+
- Human-in-the-loop (approve/edit/reject tool calls)
|
|
84
|
+
- Skills (reusable behaviors loaded on demand)
|
|
85
|
+
- Tools (BYO functions or any MCP server)
|
|
86
|
+
- **Strengths:** Most "just works" experience; inspired by Claude Code's design; extensible without forking; model-agnostic
|
|
87
|
+
- **Weaknesses:** Newer; smaller ecosystem than LangGraph; "trust the LLM" security model
|
|
88
|
+
- **Best for:** Developers who want a coding agent experience without building from scratch; teams wanting to customize a solid default
|
|
89
|
+
|
|
90
|
+
#### Ymir / Brokk (this project)
|
|
91
|
+
|
|
92
|
+
- **Repo:** `Way-Of/ymir` (shell scripts + Python + JS)
|
|
93
|
+
- **License:** MIT
|
|
94
|
+
- **Core idea:** Single-operator executive partner harness with Norse-named subsystems. Covers development, marketing, business strategy, and life execution.
|
|
95
|
+
- **Key features:**
|
|
96
|
+
- Yggdrasil worktree isolation (parallel branches, zero collision)
|
|
97
|
+
- Utgard sandboxes (CPU/RAM/timeout caps, no host root, no network)
|
|
98
|
+
- A2A 1.0 collaboration backbone (Ratatoskr)
|
|
99
|
+
- Session lock bound to live harness process
|
|
100
|
+
- Nornir cron (stateless spawn → inject → execute → write → exit)
|
|
101
|
+
- Mimirsbrunn memory engine (engram store + MCP)
|
|
102
|
+
- Hlidskjalf control plane (Electron desktop + Cloudflare tunnel)
|
|
103
|
+
- Galdr CLI ergonomics (agent-facing CLI across harnesses)
|
|
104
|
+
- Smiðja agent factory (Völundr orchestrator)
|
|
105
|
+
- **Strengths:** Holistic — covers the full operator lifecycle; strong isolation; Norse naming aids mental model; open-source-first
|
|
106
|
+
- **Weaknesses:** Custom stack (not a general-purpose library); steep onboarding; domain-specific (single-tenant)
|
|
107
|
+
- **Best for:** Single-operator executive environments where isolation, audit, and full lifecycle coverage matter
|
|
108
|
+
|
|
109
|
+
### C. Role-Based Crews
|
|
110
|
+
|
|
111
|
+
#### CrewAI
|
|
112
|
+
|
|
113
|
+
- **Repo:** `crewAIInc/crewAI` (Python)
|
|
114
|
+
- **License:** MIT
|
|
115
|
+
- **Stars:** ~15k+
|
|
116
|
+
- **Core idea:** Role-based AI agents that collaborate through "Crews" with precise event-driven control via "Flows"
|
|
117
|
+
- **Key features:**
|
|
118
|
+
- Crews — autonomous agents with specialized roles, goals, backstories
|
|
119
|
+
- Flows — event-driven workflows combining precise control + LLM calls + Crews
|
|
120
|
+
- JSON-first project scaffolding (`crewai create crew`)
|
|
121
|
+
- Knowledge files + skills + custom tools
|
|
122
|
+
- Sequential and hierarchical processes
|
|
123
|
+
- CrewAI AMP Suite (commercial control plane with observability, governance, security)
|
|
124
|
+
- Official skills for Claude Code, Cursor, Codex, Windsurf
|
|
125
|
+
- **Strengths:** Easiest onboarding for multi-agent; strong community (100k+ certified); JSON-first config is developer-friendly; commercial option available
|
|
126
|
+
- **Weaknesses:** Python-only; less flexible for complex state management; commercial features behind paywall
|
|
127
|
+
- **Best for:** Teams building multi-agent automation pipelines; marketing/operations workflows; rapid prototyping
|
|
128
|
+
|
|
129
|
+
### D. Programming Frameworks
|
|
130
|
+
|
|
131
|
+
#### DSPy
|
|
132
|
+
|
|
133
|
+
- **Repo:** `stanfordnlp/dspy` (Python)
|
|
134
|
+
- **License:** MIT
|
|
135
|
+
- **Stars:** ~15k+
|
|
136
|
+
- **Core idea:** Programming — not prompting — language models. Declarative, self-improving Python pipelines.
|
|
137
|
+
- **Key features:**
|
|
138
|
+
- Declarative pipelines (compositional Python code)
|
|
139
|
+
- Self-improving via teleprompters (optimize prompts automatically)
|
|
140
|
+
- Works for classifiers, RAG pipelines, and agent loops
|
|
141
|
+
- Compiled LM calls into self-improving pipelines
|
|
142
|
+
- Assertions as computational constraints
|
|
143
|
+
- **Strengths:** Best for prompt optimization; research-backed; works with any LM; declarative approach reduces brittle prompting
|
|
144
|
+
- **Weaknesses:** Not a full agent harness; focused on pipeline optimization rather than orchestration; steeper learning curve for the paradigm
|
|
145
|
+
- **Best for:** Teams optimizing prompt quality; RAG pipelines; research teams; anyone tired of brittle prompt engineering
|
|
146
|
+
|
|
147
|
+
### E. Vendor SDKs
|
|
148
|
+
|
|
149
|
+
#### OpenAI Python SDK
|
|
150
|
+
|
|
151
|
+
- **Repo:** `openai/openai-python` (Python)
|
|
152
|
+
- **License:** MIT
|
|
153
|
+
- **Core idea:** Official Python client for OpenAI REST API (Chat Completions + Responses API)
|
|
154
|
+
- **Key features:**
|
|
155
|
+
- Responses API (new standard) + Chat Completions API (legacy)
|
|
156
|
+
- Async/sync clients
|
|
157
|
+
- Streaming responses (SSE)
|
|
158
|
+
- Realtime API (text/audio via WebSocket)
|
|
159
|
+
- Workload identity authentication (Kubernetes, Azure, GCP, X.509 mTLS)
|
|
160
|
+
- Vision support (image URLs + base64)
|
|
161
|
+
- **Strengths:** Direct access to OpenAI models; best-in-class model quality; comprehensive auth options
|
|
162
|
+
- **Weaknesses:** No agent orchestration; no multi-agent support; vendor lock-in
|
|
163
|
+
- **Best for:** Teams building on OpenAI models; low-level API access; realtime applications
|
|
164
|
+
|
|
165
|
+
#### Anthropic SDK (Python)
|
|
166
|
+
|
|
167
|
+
- **Repo:** `anthropics/anthropic-sdk-python` (Python)
|
|
168
|
+
- **License:** MIT
|
|
169
|
+
- **Core idea:** Official Python client for Claude API
|
|
170
|
+
- **Key features:**
|
|
171
|
+
- Messages API
|
|
172
|
+
- Tool use / function calling
|
|
173
|
+
- Streaming
|
|
174
|
+
- Vision support
|
|
175
|
+
- **Strengths:** Direct access to Claude models; strong tool-use support; clean API
|
|
176
|
+
- **Weaknesses:** No agent orchestration; no multi-agent support; vendor lock-in
|
|
177
|
+
- **Best for:** Teams building on Claude models; tool-use applications
|
|
178
|
+
|
|
179
|
+
### F. Terminal Agents
|
|
180
|
+
|
|
181
|
+
#### Claude Code (Anthropic)
|
|
182
|
+
|
|
183
|
+
- **Repo:** `anthropics/claude-code` (Node.js)
|
|
184
|
+
- **License:** Proprietary (source-available)
|
|
185
|
+
- **Core idea:** Agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster
|
|
186
|
+
- **Key features:**
|
|
187
|
+
- Terminal-bound coding agent
|
|
188
|
+
- Codebase understanding
|
|
189
|
+
- Natural language commands
|
|
190
|
+
- Git workflow handling
|
|
191
|
+
- Plugin system
|
|
192
|
+
- IDE integration
|
|
193
|
+
- @claude tagging on GitHub
|
|
194
|
+
- **Strengths:** Best-in-class coding experience; deep codebase understanding; strong Anthropic model integration
|
|
195
|
+
- **Weaknesses:** Proprietary; Claude-only; no multi-agent orchestration; no self-hosting
|
|
196
|
+
- **Best for:** Developers who want a coding agent in their terminal; teams already using Claude
|
|
197
|
+
|
|
198
|
+
#### Cursor / Codex / Windsurf
|
|
199
|
+
|
|
200
|
+
- These are IDE-bound coding agents that use various model providers
|
|
201
|
+
- Not open-source frameworks; proprietary products
|
|
202
|
+
- Focus on single-agent coding assistance
|
|
203
|
+
- Plugin ecosystems for extension
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 4. Feature Matrix
|
|
208
|
+
|
|
209
|
+
| Feature | LangGraph | MAF | CrewAI | Deep Agents | DSPy | OpenAI SDK | Anthropic SDK | Claude Code | Ymir/Brokk |
|
|
210
|
+
|---------|-----------|-----|--------|-------------|------|------------|---------------|-------------|------------|
|
|
211
|
+
| **Multi-agent** | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
|
212
|
+
| **Graph orchestration** | ✅ | ✅ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
|
213
|
+
| **Human-in-the-loop** | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ⚠️ | ✅ |
|
|
214
|
+
| **Memory/state** | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
|
215
|
+
| **Tool use** | ✅ | ✅ | ✅ | ✅ | ❌ | ⚠️ | ✅ | ✅ | ✅ |
|
|
216
|
+
| **MCP support** | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
|
217
|
+
| **A2A protocol** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
|
218
|
+
| **Sandboxing** | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
|
219
|
+
| **Multi-language** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
|
220
|
+
| **Observability** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
|
221
|
+
| **Self-hosting** | ✅ | ✅ | ⚠️ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
|
|
222
|
+
| **Model-agnostic** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
|
|
223
|
+
| **Terminal agent** | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ✅ | ✅ |
|
|
224
|
+
| **Cron/scheduling** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
|
225
|
+
| **Audit trail** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
|
226
|
+
|
|
227
|
+
**Legend:** ✅ = full support, ⚠️ = partial/limited, ❌ = not available
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 5. Convergence Patterns
|
|
232
|
+
|
|
233
|
+
The field has converged around these patterns:
|
|
234
|
+
|
|
235
|
+
1. **Graph-based orchestration** is the dominant paradigm for complex workflows (LangGraph, MAF)
|
|
236
|
+
2. **Human-in-the-loop** is becoming table stakes (all major harnesses now support it)
|
|
237
|
+
3. **MCP (Model Context Protocol)** is emerging as the standard tool interface (MAF, Deep Agents, Ymir)
|
|
238
|
+
4. **A2A (Agent-to-Agent) 1.0** is becoming the standard for cross-agent communication (MAF, Ymir)
|
|
239
|
+
5. **Model-agnostic design** is expected — harnesses should work with any LLM provider
|
|
240
|
+
6. **Observability** (tracing, evaluation, debugging) is critical for production
|
|
241
|
+
7. **Sandboxing** is essential for untrusted code execution
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 6. Recommendations for Ymir
|
|
246
|
+
|
|
247
|
+
Ymir's current architecture already aligns well with the convergence patterns:
|
|
248
|
+
|
|
249
|
+
- **A2A 1.0** (Ratatoskr) — Ymir is ahead of the curve here
|
|
250
|
+
- **MCP support** — Ymir's engram store provides unscoped MCP for all harnesses
|
|
251
|
+
- **Sandboxing** (Utgard) — Ymir's Utgard is more robust than most competitors
|
|
252
|
+
- **Audit trail** (Runes) — unique to Ymir; no competitor provides chained audit
|
|
253
|
+
- **Cron/scheduling** (Nornir) — Ymir's stateless cron is more reliable than most
|
|
254
|
+
|
|
255
|
+
**Gaps to consider:**
|
|
256
|
+
|
|
257
|
+
1. **LangGraph-style durable execution** — Ymir's Nornir jobs are stateless; consider adding checkpointing for long-running tasks
|
|
258
|
+
2. **Human-in-the-loop** — Ymir has human-in-the-loop for code merges; consider extending to agent task approval
|
|
259
|
+
3. **Observability** — Ymir's Runes provide audit; consider adding distributed tracing (OpenTelemetry) for agent execution
|
|
260
|
+
4. **Multi-language** — Ymir is shell/Python/JS; consider Go support for performance-critical components
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 7. Notable Mentions
|
|
265
|
+
|
|
266
|
+
- **Google Agent SDK** — Google's open-source agent framework (not found in public repos as of 2026-09)
|
|
267
|
+
- **LlamaIndex** — RAG-focused framework with agent primitives
|
|
268
|
+
- **AutoGen Studio** — No-code GUI for AutoGen (now in maintenance mode)
|
|
269
|
+
- **OpenDevin** — Open-source coding agent (competes with Claude Code)
|
|
270
|
+
- **Smithy/Smidja** — Ymir's own agent factory (Völundr orchestrator)
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 8. Sources
|
|
275
|
+
|
|
276
|
+
- `github.com/microsoft/autogen` — AutoGen (maintenance mode)
|
|
277
|
+
- `github.com/microsoft/agent-framework` — Microsoft Agent Framework 1.0
|
|
278
|
+
- `github.com/microsoft/semantic-kernel` — Semantic Kernel (being replaced by MAF)
|
|
279
|
+
- `github.com/crewAIInc/crewAI` — CrewAI
|
|
280
|
+
- `github.com/langchain-ai/langgraph` — LangGraph
|
|
281
|
+
- `github.com/langchain-ai/langchain` — LangChain
|
|
282
|
+
- `github.com/langchain-ai/deepagents` — Deep Agents
|
|
283
|
+
- `github.com/stanfordnlp/dspy` — DSPy
|
|
284
|
+
- `github.com/openai/openai-python` — OpenAI Python SDK
|
|
285
|
+
- `github.com/anthropics/anthropic-sdk-python` — Anthropic SDK
|
|
286
|
+
- `github.com/anthropics/claude-code` — Claude Code
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
*Report written by Brokk. All facts verified against live repository data.*
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Runbooks
|
|
2
|
+
|
|
3
|
+
Task-oriented guides for operating a Ymir home. Each is written for the
|
|
4
|
+
operator, not just the maintainer.
|
|
5
|
+
|
|
6
|
+
```
|
|
7
|
+
runbooks[8]{file,subject}:
|
|
8
|
+
"models.md","choose models per agent; local (llama.cpp) vs hosted; per-machine overlays"
|
|
9
|
+
"agents.md","Eindri profiles: where they live, how to add/run/dispatch one"
|
|
10
|
+
"agent-permissions.md","set what each agent may do — the bash gap and recommended postures"
|
|
11
|
+
"updates-and-migrations.md","update the runtime; heal old homes (bin/ymir-migrate.sh)"
|
|
12
|
+
"secrets-and-hoard.md","Hodd: secrets by path, secret-guard, rotation + history scrub"
|
|
13
|
+
"worktrees-isolation.md","Yggdrasil worktrees: isolated by default, --main opt-out, see them in Hlidskjalf, merge"
|
|
14
|
+
"a2a.md","Ratatoskr — talk between agents over A2A: engine, MCPs, addressing, injection, registration"
|
|
15
|
+
"realm-onboarding.md","onboarding a realm/tenant"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Related: `.agents/skills/galdr-ymirsystem/assets/installation.md` (first setup),
|
|
19
|
+
`.agents/skills/galdr-ymirsystem/assets/registry.md` (inventory).
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Runbook — A2A (Ratatoskr), talking between agents
|
|
2
|
+
|
|
3
|
+
Ratatoskr is Ymir's A2A/MCP mesh: agents discover each other and exchange tasks
|
|
4
|
+
over the open **A2A 1.0** protocol (JSON-RPC + SSE, Agent Cards), locally and
|
|
5
|
+
across machines over Tailscale. **Way of Teams** rides the same mesh as the
|
|
6
|
+
control plane.
|
|
7
|
+
|
|
8
|
+
## The pieces
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
a2a[4]{piece,what,path}:
|
|
12
|
+
"engine","a2abridge — directory (discovery) · bridge (announce) · service · cert · doctor","~/.a2abridge/bin/a2abridge"
|
|
13
|
+
"MCP (mesh)","a2abridge — a2a_* tools for the agents","~/.pi/agent/mcp.json, opencode.json"
|
|
14
|
+
"MCP (control plane)","wayofteams-* — tickets, plans, memory, knowledge (NEEDS AUTH)","WOTEAMS_URL / WOTEAMS_TOKEN"
|
|
15
|
+
"Ymir front door","bin/ratatoskr.sh, bin/a2a-mcp.sh","bin/"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Setup
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
bin/a2a-mcp.sh install # wires the MCP servers into pi + opencode
|
|
22
|
+
bin/ratatoskr.sh status # engine + directory + served agents
|
|
23
|
+
bin/ratatoskr.sh doctor # health-check
|
|
24
|
+
```
|
|
25
|
+
`bin/ymir-install.sh` and `bin/brokk-update.sh` run the migration that does this.
|
|
26
|
+
|
|
27
|
+
**The control plane needs auth.** In an MCP host you may see:
|
|
28
|
+
```
|
|
29
|
+
wayofteams-agents Needs auth
|
|
30
|
+
wayofteams-core Needs auth
|
|
31
|
+
```
|
|
32
|
+
Set `WOTEAMS_URL` and `WOTEAMS_TOKEN` (from `.env.local` / your Hoard) to
|
|
33
|
+
connect them. `a2abridge` should read **Connected**.
|
|
34
|
+
|
|
35
|
+
## Talking
|
|
36
|
+
|
|
37
|
+
**From an agent** (pi — tools come from the `a2abridge` MCP + `Way-Of/pi-a2a-adaptor`;
|
|
38
|
+
the `ratatoskr-a2a` skill teaches their use):
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
a2a-agents # list peers {name,url,skills}
|
|
42
|
+
a2a_call agent_url="http://host:7777/" text="…" # task a peer; reply returns
|
|
43
|
+
a2a_inbox # your incoming queue
|
|
44
|
+
a2a_complete_task task_id="…" text="…" # answer a task
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**From Brokk / scripts:** `bin/a2a-talk.sh agents` and
|
|
48
|
+
`bin/a2a-talk.sh send <peer> "<text>"`.
|
|
49
|
+
|
|
50
|
+
## Rules that bite
|
|
51
|
+
|
|
52
|
+
- **Names are NOT URLs.** `a2a_call` wants a **URL**; a peer name fails
|
|
53
|
+
`Invalid URL`. Resolve first with `a2a-agents`, then use its `url`.
|
|
54
|
+
- **Delivery = injection.** An A2A task that only reaches the bridge is never
|
|
55
|
+
read; the inbound text must be **injected into the agent's chat**
|
|
56
|
+
(`herdr agent prompt <agent> "<text>"`), and the reply read back
|
|
57
|
+
(`herdr agent read`). Without injection an Eindri will not read the a2a.
|
|
58
|
+
- **All four, or it fails:** transport + a live peer + delivery (injection) +
|
|
59
|
+
return. Missing any one shows as a timeout.
|
|
60
|
+
|
|
61
|
+
## Reachability (registering an Eindri)
|
|
62
|
+
|
|
63
|
+
An agent must **announce to the directory** to appear in `a2a-agents`:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
a2abridge bridge -name <agent> -model <model> -skills <s1,s2> \
|
|
67
|
+
-directory http://127.0.0.1:7777 -advertise-host <tailnet-ip> -id <stable>
|
|
68
|
+
```
|
|
69
|
+
`-advertise-host` must be the machine's **Tailscale IP** (never 127.0.0.1) for
|
|
70
|
+
cross-machine reach. If a peer is missing from `a2a-agents`, the bridge announced
|
|
71
|
+
to the wrong directory — fix the **config/skill**, not new code.
|
|
72
|
+
|
|
73
|
+
## Troubleshooting
|
|
74
|
+
|
|
75
|
+
- **`Invalid URL`** — you passed a name; resolve with `a2a-agents`, then `a2a_call`.
|
|
76
|
+
- **`Task … exceeded max attempts (N)`** — addressed right, never completed: no
|
|
77
|
+
live receiving agent / injection / return. Check the peer is in `a2a-agents`
|
|
78
|
+
and a receiving agent is running its bridge.
|
|
79
|
+
- **No reply at all** — transport carried it; the **return path** is missing.
|
|
80
|
+
- **`wayofteams-* Needs auth`** — set `WOTEAMS_TOKEN`; the mesh still works
|
|
81
|
+
standalone without it.
|
|
82
|
+
|
|
83
|
+
## Status
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
a2a-today[3]{piece,state}:
|
|
87
|
+
"transport","works (messaged hermes -> reply)"
|
|
88
|
+
"delivery (injection)","works (an agent reads an injected task and answers)"
|
|
89
|
+
"directory registration + return","OPEN — a served Eindri is not yet listed in the directory"
|
|
90
|
+
```
|
|
91
|
+
See the private plan `$YMIR_HOME/docs/ratatoskr.md` for the registration spec.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Runbook — setting an agent's permissions
|
|
2
|
+
|
|
3
|
+
Every agent profile declares what it may do. Permissions are **law for that
|
|
4
|
+
agent** — set them deliberately. The default that ships is a starting point, not
|
|
5
|
+
a recommendation.
|
|
6
|
+
|
|
7
|
+
## Where permissions live
|
|
8
|
+
|
|
9
|
+
In the profile's frontmatter: `.agents/agents/<name>-<craft>.md`.
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
---
|
|
13
|
+
name: kvasir
|
|
14
|
+
mode: subagent
|
|
15
|
+
permission:
|
|
16
|
+
read: allow
|
|
17
|
+
glob: allow
|
|
18
|
+
grep: allow
|
|
19
|
+
edit: deny
|
|
20
|
+
write: deny
|
|
21
|
+
bash:
|
|
22
|
+
"*": ask # everything else asks first
|
|
23
|
+
"ls *": allow
|
|
24
|
+
"rg *": allow
|
|
25
|
+
"cat *": allow
|
|
26
|
+
"git status*": allow
|
|
27
|
+
"git diff*": allow
|
|
28
|
+
skill: allow
|
|
29
|
+
webfetch: deny
|
|
30
|
+
---
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
After editing, rebind:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
bin/valknut-load.sh --all
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## The one rule that matters most
|
|
40
|
+
|
|
41
|
+
**A flat `bash: allow` overrides every other restriction.** An agent with
|
|
42
|
+
`edit: deny` but `bash: allow` can still write files (`sed -i`, `cat > f`),
|
|
43
|
+
delete them, or reach the network (`curl`, `ssh`). `edit`/`write: deny` only
|
|
44
|
+
stops the *edit tool*, not the shell.
|
|
45
|
+
|
|
46
|
+
So: **never give a read-only agent a flat `bash: allow`.** Give it a **pattern
|
|
47
|
+
map** — only the read commands it needs are `allow`, everything else is `ask` or
|
|
48
|
+
`deny`.
|
|
49
|
+
|
|
50
|
+
## What each key does
|
|
51
|
+
|
|
52
|
+
| Key | Controls |
|
|
53
|
+
|-----|----------|
|
|
54
|
+
| `read` | reading files |
|
|
55
|
+
| `glob` / `grep` | finding files / searching content |
|
|
56
|
+
| `edit` | the edit tool (in-place changes) |
|
|
57
|
+
| `write` | creating/overwriting files |
|
|
58
|
+
| `bash` | the shell — `allow` is total; prefer a pattern map |
|
|
59
|
+
| `skill` | loading skills |
|
|
60
|
+
| `webfetch` / `websearch` | outbound network from tools |
|
|
61
|
+
| `task` | dispatching subagents |
|
|
62
|
+
|
|
63
|
+
Values: `allow`, `ask`, `deny`. `bash` may also be a map of command patterns.
|
|
64
|
+
|
|
65
|
+
## Recommended postures
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
postures[4]{role,read,edit/write,bash,notes}:
|
|
69
|
+
"read-only (scout, researcher, reviewer)","allow","deny","pattern map: ls/rg/cat/git-status allow, \"*\": ask","never flat allow; no curl/wget/ssh"
|
|
70
|
+
"builder (developer)","allow","allow","pattern map: package manager + build + git allow, \"*\": ask","the widest real need; still ask on unknown"
|
|
71
|
+
"content (marketer)","allow","allow","* ask; allow the editor/crawl commands only","network only where the task truly needs it"
|
|
72
|
+
"designer","allow","allow","* ask; allow the design CLI only","keep the shell narrow even when runnable"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Modes
|
|
76
|
+
|
|
77
|
+
`mode:` decides how an agent can be reached:
|
|
78
|
+
|
|
79
|
+
- `primary` — run directly as a top-level agent.
|
|
80
|
+
- `subagent` — dispatched by another agent (Task tool).
|
|
81
|
+
- `all` — both. Widest; pair it with a narrow `bash`.
|
|
82
|
+
|
|
83
|
+
A runnable (`all`) agent with a full shell is the biggest door — usually not
|
|
84
|
+
what you want.
|
|
85
|
+
|
|
86
|
+
## Network and untrusted work
|
|
87
|
+
|
|
88
|
+
- Treat `curl`, `wget`, `ssh`, and arbitrary binaries as `ask` at least.
|
|
89
|
+
- Code you do not fully trust belongs in **Utgard** (no host root, no network),
|
|
90
|
+
not on the host with a permissive shell.
|
|
91
|
+
|
|
92
|
+
## Check your posture
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
bin/perm-guard.sh # flags a flat bash:allow, especially with edit/write denied
|
|
96
|
+
bin/valknut-load.sh --all # rebind after edits
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
The rule of thumb: **grant the narrowest shell that does the job.**
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Runbook — setting up agents
|
|
2
|
+
|
|
3
|
+
An **Eindri** is a worker profile. Profiles live in one canonical place and are
|
|
4
|
+
symlinked into each harness.
|
|
5
|
+
|
|
6
|
+
## Where agents live
|
|
7
|
+
|
|
8
|
+
- **Canonical:** `.agents/agents/<name>-<craft>.md` (edit these only).
|
|
9
|
+
- **Bindings:** `.opencode/agent/*.md` and `.pi/agents/*.md` are symlinks.
|
|
10
|
+
|
|
11
|
+
Rebind after any change:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
bin/valknut-load.sh --all
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## A profile's frontmatter
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
---
|
|
21
|
+
mode: all # primary | subagent | all (all = runnable AND dispatchable)
|
|
22
|
+
model: llama.cpp/frontend-design-expert-8b
|
|
23
|
+
domain: utgard # one of the eight Greinar (see RULES/01-domains.md)
|
|
24
|
+
name: hnoss
|
|
25
|
+
description: "..."
|
|
26
|
+
permission: # read/write/edit/glob/grep/bash/skill: allow|deny
|
|
27
|
+
read: allow
|
|
28
|
+
edit: allow
|
|
29
|
+
ymir_tools: # Ymir capabilities (NOT opencode built-ins; never `tools:`)
|
|
30
|
+
- opendesign
|
|
31
|
+
---
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
OpenCode rejects `tools:` as a list — Ymir capabilities go under **`ymir_tools:`**.
|
|
35
|
+
|
|
36
|
+
## Add an agent
|
|
37
|
+
|
|
38
|
+
1. Write `.agents/agents/<name>-<craft>.md` (copy a neighbour).
|
|
39
|
+
2. Give it a `model` (or leave it to inherit `default_model`) and a `domain`.
|
|
40
|
+
3. `bin/valknut-load.sh --all` to bind it into OpenCode + Pi.
|
|
41
|
+
4. Register it in `.agents/skills/galdr-ymirsystem/assets/registry.md` if it is durable.
|
|
42
|
+
|
|
43
|
+
## Run an agent
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
bin/agent-run.sh hnoss "design a compact hero" # harness+model from agents.yaml
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Local models run through `pi`, hosted through `opencode` (see the **models**
|
|
50
|
+
runbook). `mode: all` lets an agent be dispatched *and* driven directly.
|
|
51
|
+
|
|
52
|
+
## Dispatch to a live pane (herdr)
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
bin/eindri-start.sh "design a landing page" # one command: role -> seat -> run
|
|
56
|
+
bin/eindri-start.sh "…" --pane | --tab | --space # seat a pane / tab / workspace
|
|
57
|
+
```
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Runbook — setting up models
|
|
2
|
+
|
|
3
|
+
Ymir runs each agent on a model you choose. **Local models run through `pi`,
|
|
4
|
+
hosted models through `opencode`** — the syncer derives this, you just pick the
|
|
5
|
+
model.
|
|
6
|
+
|
|
7
|
+
## The one place you choose
|
|
8
|
+
|
|
9
|
+
`config/agents.yaml` (private; from `config/agents.yaml.example`):
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
harness:
|
|
13
|
+
local: pi
|
|
14
|
+
online: opencode
|
|
15
|
+
local_providers: [llama.cpp, llama-cpp, lmstudio]
|
|
16
|
+
providers:
|
|
17
|
+
llama.cpp: { pi: llama-cpp } # same server, renamed per harness
|
|
18
|
+
|
|
19
|
+
default_model: opencode-go/deepseek-v4.1-flash
|
|
20
|
+
|
|
21
|
+
providers:
|
|
22
|
+
llama.cpp:
|
|
23
|
+
npm: "@ai-sdk/openai-compatible"
|
|
24
|
+
name: "llama-server (local)"
|
|
25
|
+
base_url: "http://127.0.0.1:8080/v1"
|
|
26
|
+
models:
|
|
27
|
+
- frontend-design-expert-8b # bare alias; apply resolves the exact id
|
|
28
|
+
|
|
29
|
+
agents:
|
|
30
|
+
hnoss: { model: "llama.cpp/frontend-design-expert-8b", primary: true }
|
|
31
|
+
brokk: { model: opencode-go/deepseek-v4.1-flash }
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Local models (llama.cpp)
|
|
35
|
+
|
|
36
|
+
1. Start a server (llama.cpp `llama-server`) — e.g. `:8080`. Check it:
|
|
37
|
+
```bash
|
|
38
|
+
curl -s http://127.0.0.1:8080/v1/models | head
|
|
39
|
+
```
|
|
40
|
+
2. A llama.cpp **router needs the exact served id**, e.g.
|
|
41
|
+
`frontend-design-expert-8b@q4_k_m`. Put the bare alias in the YAML; `apply`
|
|
42
|
+
asks the server and fills in the exact id.
|
|
43
|
+
3. `pi` must know the provider. Verify: `pi --list-models | grep llama`.
|
|
44
|
+
|
|
45
|
+
## Apply and use
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
bin/agents-config.sh init # seed from template (once)
|
|
49
|
+
bin/agents-config.sh resolve # show bare alias -> exact id
|
|
50
|
+
bin/agents-config.sh show # the live combination (agent, harness, model)
|
|
51
|
+
bin/agents-config.sh apply # write into profiles + opencode.json
|
|
52
|
+
bin/agent-run.sh hnoss "design a hero section"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Different models on different machines
|
|
56
|
+
|
|
57
|
+
Keep a per-machine overlay `config/agents.<hostname>.yaml`; it deep-merges over
|
|
58
|
+
the base. Example: `config/agents.machine.example.yaml`. Override the host with
|
|
59
|
+
`YMIR_AGENTS_MACHINE=omarchy-1`.
|
|
60
|
+
|
|
61
|
+
## Hosted models
|
|
62
|
+
|
|
63
|
+
Add the provider key to `.env.local` (e.g. `OPENCODE_GO_API_KEY`) — never inline
|
|
64
|
+
a key. Models named `opencode-go/...` run through `opencode`.
|
|
65
|
+
|
|
66
|
+
## Adding a model
|
|
67
|
+
|
|
68
|
+
Add it under `providers.<name>.models` (or a new `providers` entry). If it's a
|
|
69
|
+
new server, add the id to `.agents/skills/galdr-ymirsystem/assets/registry.md`.
|