Repository navigation
feat(huginn): independent multi-component releases and crates.io/npm/Docker distribution #278
Copy link
Copy link
Open
Labels
area/ciCI, tooling, and automationCI, tooling, and automationarea/coreCore domain logic and modelsCore domain logic and modelsarea/dashboardRook management dashboard and frontendRook management dashboard and frontendarea/dependenciesDependency management, lockfiles and RenovateDependency management, lockfiles and Renovatearea/docsDocumentation and READMEDocumentation and READMEarea/providersLLM provider integrations and adaptersLLM provider integrations and adaptersarea/releasePackaging, versioning, publishing and distributionPackaging, versioning, publishing and distributionarea/runtimeAgent execution loop, tool runtime, streaming and sessionsAgent execution loop, tool runtime, streaming and sessionsarea/storageDatabase, persistence, migrations and cachingDatabase, persistence, migrations and cachingarea/testingTests, QA, acceptance, and testing infrastructureTests, QA, acceptance, and testing infrastructurearea/transportHTTP transport, API protocol and SSE wire handlingHTTP transport, API protocol and SSE wire handlingproduct/agentDEPRECATED — kept for historical issues. Use product/huginn for new issues.DEPRECATED — kept for historical issues. Use product/huginn for new issues.triage/needs-classificationNeeds human triage — missing or ambiguous product/type/area classificationNeeds human triage — missing or ambiguous product/type/area classificationtype/featureNew user-visible capabilityNew user-visible capability
Description
Activity
- addedarea/releasePackaging, versioning, publishing and distributionPackaging, versioning, publishing and distributionproduct/agentDEPRECATED — kept for historical issues. Use product/huginn for new issues.DEPRECATED — kept for historical issues. Use product/huginn for new issues.type/featureNew user-visible capabilityNew user-visible capability
on Oct 8, 2026 - addedarea/ciCI, tooling, and automationCI, tooling, and automationarea/dashboardRook management dashboard and frontendRook management dashboard and frontendarea/dependenciesDependency management, lockfiles and RenovateDependency management, lockfiles and Renovatearea/docsDocumentation and READMEDocumentation and READMEarea/providersLLM provider integrations and adaptersLLM provider integrations and adaptersarea/runtimeAgent execution loop, tool runtime, streaming and sessionsAgent execution loop, tool runtime, streaming and sessionsarea/testingTests, QA, acceptance, and testing infrastructureTests, QA, acceptance, and testing infrastructure
on Oct 9, 2026 - changed the title
[-]feat(agent): add independent packaging and release artifacts[/-][+]feat(huginn): independent multi-component releases and crates.io/npm/Docker distribution[/+]on Oct 10, 2026 - addedarea/coreCore domain logic and modelsCore domain logic and modelsarea/storageDatabase, persistence, migrations and cachingDatabase, persistence, migrations and cachingarea/transportHTTP transport, API protocol and SSE wire handlingHTTP transport, API protocol and SSE wire handlingtriage/needs-classificationNeeds human triage — missing or ambiguous product/type/area classificationNeeds human triage — missing or ambiguous product/type/area classification
on Oct 10, 2026
Metadata
Metadata
Assignees
Labels
area/ciCI, tooling, and automationCI, tooling, and automationarea/coreCore domain logic and modelsCore domain logic and modelsarea/dashboardRook management dashboard and frontendRook management dashboard and frontendarea/dependenciesDependency management, lockfiles and RenovateDependency management, lockfiles and Renovatearea/docsDocumentation and READMEDocumentation and READMEarea/providersLLM provider integrations and adaptersLLM provider integrations and adaptersarea/releasePackaging, versioning, publishing and distributionPackaging, versioning, publishing and distributionarea/runtimeAgent execution loop, tool runtime, streaming and sessionsAgent execution loop, tool runtime, streaming and sessionsarea/storageDatabase, persistence, migrations and cachingDatabase, persistence, migrations and cachingarea/testingTests, QA, acceptance, and testing infrastructureTests, QA, acceptance, and testing infrastructurearea/transportHTTP transport, API protocol and SSE wire handlingHTTP transport, API protocol and SSE wire handlingproduct/agentDEPRECATED — kept for historical issues. Use product/huginn for new issues.DEPRECATED — kept for historical issues. Use product/huginn for new issues.triage/needs-classificationNeeds human triage — missing or ambiguous product/type/area classificationNeeds human triage — missing or ambiguous product/type/area classificationtype/featureNew user-visible capabilityNew user-visible capability
Objective
Introduce independently versioned and independently distributable Cortex products, using the multi-component Release Please pattern already established in
dallay/profiletailors.com.The current products are Rook (model gateway) and Huginn (coding agent, once #315 is merged). Future products, such as Muninn, must be addable without creating a global Cortex release version or changing existing product identities.
A code change limited to one product MUST NOT cause an unrelated product release. Each product owns its SemVer, changelog, release PR, tag, GitHub Release, artifacts and distribution jobs.
Hard blockers and sequencing
Do not activate Huginn Release Please or publicly publish Huginn until all applicable gates pass.
agenttohuginn) intomain; targetapps/huginn,crates/huginn/{core,runtime}, binaryhuginnand canonicalHUGINN_*names only after the rename lands. Do not bind the new release component to provisionalapps/agentpaths.The issue can be specified and reviewed now; implementation of the Huginn release configuration and public distribution is gated by the above.
Versioning and Release Please
apps/rookandapps/huginn.separate-pull-requests: true,always-update: true,include-component-in-tag: true,tag-separator: "@".rook@vX.Y.Zandhuginn@vX.Y.Z. Preserve historical Rook tags; do not retag or rewrite old releases.cortex@vX.Y.Zproduct release.apps/rook--release_created,apps/huginn--release_created, corresponding--version,--tag_name,--sha), not the root outputs.cargo-workspaceplugin can propagate dependent bumps: update/release another product only when a real shared dependency change requires it, never merely because the products share a repository. Test the dependency graph and component-change detection.Distribution contract — both products
On a successful product-specific GitHub Release, publish artifacts only for that product, built from its exact tag/SHA, never from mutable
main:huginnidentityrookand publishable dependencieshuginnand publishable dependencies@dallay/rook+ platform packages@dallay/huginn+ platform packagesdallay/rookdallay/huginnghcr.io/dallay/rookghcr.io/dallay/huginnThe exact published name must be verified as available and owned before enabling writes. Docker tags must be product-local (
X.Y.Z, controlled moving tags) and never collide across Rook/Huginn.<binary> --version == release SemVer.optionalDependencies; verify install/run on the supported systems. Use provenance/trusted publishing when available and appropriate.cargo publish --dry-run --locked -p <product>must succeed before actual publication. Audit path-only/internal dependencies andpublish = falsedeclarations; publish necessary dependencies in dependency order or restructure packaging so the target binary crate is genuinely publishable. Never run unscopedcargo publishfrom the virtual workspace root.rust-toolchain.toml,Cargo.lockwhere applicable, and explicit package selection in all build/publish jobs.Audit and repair the existing Rook pipeline before replicating it
The current
.github/workflows/release.ymlandrelease-please-config.jsonare not yet a safe template for a second component:apps/rook, but the workflow currently forwards root-onlyrelease_created/version/tag_nameoutputs; switch to the documented path-scoped outputs.rook@vX.Y.Z.cargo publish --lockedlacks package selection in a virtual workspace and must be changed and validated against publishable crate dependencies.optionalDependenciespackage names, artifact paths and executable permissions).Release verification
feat(rook)changes only Rook's pending release and leaves Huginn's version unchanged.feat(huginn)changes only Huginn's pending release and leaves Rook's version unchanged.--version,doctorand one offline mock turn.Out of scope
Related
dallay/profiletailors.com/release-please-config.jsonand.github/workflows/release-please.yml.