Add extensible agent harnesses - #10171
Open
lcavadas wants to merge 8 commits into
Open
Conversation
lcavadas
force-pushed
the
add-agent-harness-providers
branch
2 times, most recently
from
September 4, 2026 12:52
6e46179 to
7b6457e
Compare
Let users add declarative mise-backed coding-agent harnesses without changing Omarchy core.\n\nGenerated with AFK\nCo-Authored-By: AFK <noreply@afk.local> using gpt-5.6-luna
lcavadas
force-pushed
the
add-agent-harness-providers
branch
from
September 4, 2026 13:00
7b6457e to
a591ce3
Compare
Permit agent harness integrations to provide metadata without a QML entry point while preserving entry-point requirements for ordinary plugins. Generated with AFK Co-Authored-By: AFK <noreply@afk.local> using gpt-5.6-luna
lcavadas
marked this pull request as draft
September 4, 2026 13:11
added 6 commits
September 4, 2026 15:11
Keep metadata-only harness plugins out of shell activation while preserving built-in and installed harness discovery. Validate harness metadata and launch templates, reconcile defaults across plugin lifecycle changes, and invoke the registry from the guaranteed Omarchy path so the defaults menu remains populated. Generated with AFK Co-Authored-By: AFK <noreply@afk.local> using gpt-5.6-luna
Warn about pre-existing harness identity collisions while retaining deterministic catalog selection. Add remove and update lifecycle tests, including rollback coverage for rejected updates. Generated with AFK Co-Authored-By: AFK <noreply@afk.local> using gpt-5.6-luna
Clarify the built-in and third-party harness lifecycle, metadata-only plugin behavior, and supported launch contract across user and contributor documentation. Generated with AFK Co-Authored-By: AFK <noreply@afk.local> using gpt-5.6-luna
Apply the harness identity contract to aliases, direct metadata-only plugin installs to default selection, and correct the AFK manual wording. Generated with AFK Co-Authored-By: AFK <noreply@afk.local> using gpt-5.6-luna
Clarify the shell plugin reference for agent-harness integrations that are immediately available without shell enablement. Generated with AFK Co-Authored-By: AFK <noreply@afk.local> using gpt-5.6-luna
Reject option-shaped mise package metadata, terminate mise option parsing, and keep built-in harnesses available when an installed manifest is not an object. Generated with AFK Co-Authored-By: AFK <noreply@afk.local> using gpt-5.6-luna
lcavadas
marked this pull request as ready for review
September 4, 2026 15:05
Author
|
A brief clarification on scope and relationship to the companion PRs: this is the general extensible harness architecture. It moves harness registration and lifecycle handling into declarative plugin metadata while keeping the built-in harnesses, including AFK, available and preserving the existing launch behavior. PR #10079 is the narrower AFK-specific integration and may be reviewed as the concrete predecessor/alternative; if this general architecture is preferred, the AFK PR can be rebased or reduced to the parts that should remain first-party. PR #10092 is separate and provides the marketplace discovery UI. Focused validation and the security/lifecycle constraints are documented above. |
This was referenced Sep 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
agentHarnessblock, soomarchy plugin addis the only installation path for third-party integrationskinds: []andentryPoints: {}—no dummy QML service is required{project}/{prompt}templatesWhy
Agent harnesses should be an extension point within the existing plugin lifecycle—not a separate plugin category or installer. Built-in harnesses, including AFK, remain shipped by Omarchy and are always available in the Agent defaults menu; selecting an uninstalled harness installs it. A single third-party integration repository can ship a harness plus optional bar/panel/service UI, installed, updated, and removed through the normal plugin commands.
A harness-only integration is available as soon as its plugin is installed. It has no Quickshell component to enable, and its successful install output directs the user to choose it as their default. Plugins that do include UI retain normal enable/disable behavior independently from their harness metadata.
This removes the scalability problem: ordinary harnesses no longer need core changes to default-agent switches, menu JSON, migrations, and launch behavior. Third-party manifests permit only
miseinstallation and argv templates with{project}/{prompt}substitutions; arbitrary install hooks and unknown placeholders are rejected. IDs and aliases use the same safe identity rules, and new installs/updates reject collisions; any pre-existing conflict is resolved deterministically with a warning.Lifecycle and safety
omarchy plugin add <git-url>validates and installs the integration.omarchy plugin update [id]validates updates and rolls back rejected changes.omarchy plugin remove [id]removes the integration and clears it as the default when necessary.Documentation
manual/17-ai.mddistinguishes built-in selectable harnesses from pre-wired CLI stubs and documents plugin installation and selection.docs/agent-harnesses.mddocuments the manifest schema, metadata-only lifecycle, collision handling, and security constraints.default/agents/skills/omarchy/plugins.mdandagents/skills/shell-dev.mddocument contributor/agent guidance.Verification
git diff --checkjq empty default/agents/harnesses.jsonbash test/shell.d/agent-harness-test.shbash test/shell.d/agent-harness-launch-test.shbash test/shell.d/plugin-add-test.shbash test/shell.d/plugin-harness-lifecycle-test.shbash test/shell.d/plugin-enable-test.shbash test/shell.d/plugin-registry-contract-test.shbash test/shell.d/default-agent-test.shbash test/shell.d/menu-test.sh./test/cliGenerated with AFK