Skip to content

docs: propose a single MSIX lifecycle for OpenClaw on Windows - #1073

Draft
llongley wants to merge 1 commit into
openclaw:mainfrom
llongley:user/llongley/plan-openclaw-msix
Draft

docs: propose a single MSIX lifecycle for OpenClaw on Windows#1073
llongley wants to merge 1 commit into
openclaw:mainfrom
llongley:user/llongley/plan-openclaw-msix

Conversation

@llongley

@llongley llongley commented Aug 1, 2026

Copy link
Copy Markdown

What Problem This Solves

Installing, updating, repairing, and removing OpenClaw on Windows is spread across Inno Setup, a ZIP updater, in-progress MSIX packaging, SetupEngine, and a separately installed WSL gateway. Nothing in the repository says how those pieces are meant to fit together, which of them MSIX should own, or what we'd need to prove before retiring the current installer.

Why This Change Was Made

This adds a proposal (docs/MSIX_LIFECYCLE_PLAN.md) for what MSIX would own: the app package only, with the WSL gateway installed and updated on its own path, app updates delivered through App Installer, and the same small per-user maintenance program installed alongside each of Stable, Preview, and installed Dev. It separates what the prototypes proved from what they didn't, so the unproven parts don't read as settled. It covers current behavior, the alternatives it rules out and why, what the prototypes actually showed, the implementation steps, and what each step has to prove before the next one starts. The current Inno installer and ZIP updater stay in place until the MSIX path clears those gates.

It also links the release and uninstall docs to the proposal, and corrects the uninstall recovery guidance and the guidance in the MSIX storage validation script so they match the per-channel package identities, the startup task, the current state paths, and the restricted windows.customInstall extension.

User Impact

No runtime behavior changes. Maintainers and reviewers now have one place in the repository to decide how OpenClaw on Windows should be packaged and serviced, along with the evidence and validation still needed before anyone implements it.

Evidence

  • I checked the proposal against what's in the repository today: the packaging project, manifest generation, the paused MSIX CI job, the ZIP updater, SetupEngine's gateway acquisition, the package identities and state paths the app uses, the release docs, and the earlier MSIX packaging work in PR Work in progress: msix installer #732.
  • The lifecycle recommendations come from prototype runs on a disposable x64 Windows VM covering AppData behavior, windows.customInstall actions, signed deployment trust, per-user coordination, removing the app package and the maintenance entry in either order, and cleanup run as the system account instead of the signed-in user. Package composition was checked for both x64 and ARM64 builds, but ARM64 runtime behavior is one of the gates still open.

Change Type

  • Bug fix
  • Feature
  • Refactor
  • Docs or instructions
  • Tests or validation
  • Security hardening
  • Chore or infrastructure

Scope

  • Tray or WinUI UX
  • Windows node capability
  • Local MCP or winnode
  • Gateway, connection, or pairing
  • Setup or onboarding
  • Permissions, privacy, or security
  • Tests, CI, or docs

Validation

  • git diff --check
  • PowerShell syntax parsing for scripts/validate-msix-storage-paths.ps1
  • Link, heading-anchor, and source line-range checks for every changed doc
  • Internal-link, stale-guidance, and changed-line punctuation checks
  • .\build.ps1
  • dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore - 3,399 passed, 32 skipped
  • dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore - 2,022 passed

The first Tray test run hit one timing-related failure in QueuedSend_LifecycleStartBeforeAck_PromotesByIdempotencyKey. That test passed when rerun on its own, and the full required build and test set passed on the final rerun.

Real Behavior Proof

  • Environment tested: Windows_NT local worktree
  • PR head or commit tested: a9cfa04a
  • Exact steps or command run: .\build.ps1; the required Shared and Tray test projects; git diff --check; PowerShell parser validation; repository-relative link, anchor, and source line-range validation
  • Evidence after fix: The repository build and required test suites pass, every changed documentation target resolves, every source line range is valid, and the edited PowerShell script parses successfully
  • Observed result: Passed
  • Screenshot or artifact links verified? (Yes/No/N/A): N/A
  • Not verified or blocked: This PR doesn't change runtime installation, update, repair, migration, or removal behavior. The proposal lists those as things implementation still has to prove, not as work that's done.

Security Impact

  • New permissions or capabilities? (Yes/No): No
  • Secrets or tokens handling changed? (Yes/No): No
  • New or changed network calls? (Yes/No): No
  • Command or tool execution surface changed? (Yes/No): No
  • Data access scope changed? (Yes/No): No
  • If any answer is Yes, explain the risk and mitigation: N/A

The proposal writes down future requirements for package trust, gateway payload verification, credential storage, cleanup, and fail-closed command execution, but this PR doesn't implement any of them.

Compatibility and Migration

  • Backward compatible? (Yes/No): Yes
  • Config or environment changes? (Yes/No): No
  • Migration needed? (Yes/No): No
  • If yes, list the exact upgrade steps: N/A

Review Conversations

  • I replied to or resolved every bot review conversation addressed by this PR.
  • I left unresolved only conversations that still need maintainer judgment.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. labels Aug 1, 2026
@clawsweeper

clawsweeper Bot commented Aug 1, 2026

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge. Reviewed August 9, 2026, 10:51 AM ET / 14:51 UTC.

ClawSweeper review

What this changes

This PR adds an MSIX packaging-lifecycle proposal and updates release, uninstall, and storage-validator guidance for the Windows Companion.

Merge readiness

Blocked until real behavior proof from a real setup is added - 10 items remain

Keep open. The draft contains four previously reported factual gaps and lacks real current-head package proof; it also needs a maintainer decision before becoming official lifecycle guidance.

Likely related people: Caleb Eden (high confidence) and Barbara Kudiess (medium confidence).

Priority: P2
Reviewed head: a9cfa04a66caef813b3d08e5f371688c4bea448f
Owner decision: Required. See Decision needed.

Review scores

Measure Result What it means
Overall readiness 🦪 silver shellfish (2/6) The proposal is substantial and researched, but unresolved factual blockers and absent real package proof keep it below merge-ready.
Proof confidence 🦪 silver shellfish (2/6) Needs real behavior proof before merge: The PR reports build, test, parser, and link checks, but no redacted current-head execution of the changed validator against a real Companion MSIX; the docs-only exemption does not apply because a script is changed. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Patch quality 🦐 gold shrimp (3/6) 4 actionable review findings remain.

Verification

Check Result Evidence
Real behavior Needs proof Needs real behavior proof before merge: The PR reports build, test, parser, and link checks, but no redacted current-head execution of the changed validator against a real Companion MSIX; the docs-only exemption does not apply because a script is changed. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed 6 items Current package identity: Current main declares the MSIX identity as OpenClaw.Companion, not OpenClaw.Tray.
Validator identity mismatch: The PR renames validator guidance to Companion, but the script still resolves OpenClaw.Tray and later queries OpenClaw.Tray, so it cannot find the current Companion package.
Warning condition differs from documentation: The actual warning opens for a packaged app with either setup-state.json or a localhost gateway URL, rather than only the file-exists condition documented by the PR.
Findings 4 actionable findings [P2] Remove customInstall as a lifecycle candidate
[P2] Account for embedded App Installer metadata
[P2] Resolve validator lookups through Companion identities
Security None None.

How this fits together

The Windows Companion is the packaged tray and Windows-node application, while SetupEngine manages the separately installed WSL gateway. These docs and the validator define how package installation, updates, retained state, and removal would be assessed before an MSIX release path is enabled.

flowchart LR
A[Current Inno installer and ZIP updater] --> B[Windows Companion]
B --> C[Proposed App Installer servicing]
D[SetupEngine and WSL gateway] --> E[Maintenance and removal path]
C --> E
E --> F[Storage validation evidence]
F --> G[Release guidance]
Loading

Decision needed

Question Recommendation
Should the supported WSL-period lifecycle be an App Installer-serviced Companion plus a per-user Inno maintenance coordinator, or should this remain a non-binding design proposal? Keep MSIX paused pending design approval: Treat the document as a proposal, correct its factual claims, and do not make it release guidance until the lifecycle owners approve Step 0.

Why: Current main explicitly pauses MSIX releases, and the proposed coordinator, servicing authority, and channel contracts establish new long-lived product behavior that source review cannot approve.

Before merge

  • Add real behavior proof - Needs real behavior proof before merge: The PR reports build, test, parser, and link checks, but no redacted current-head execution of the changed validator against a real Companion MSIX; the docs-only exemption does not apply because a script is changed. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • Remove customInstall as a lifecycle candidate (P2) - The proposal still calls this restricted extension “promising” and leaves it as a future route, despite the linked review feedback that it is limited to MSIXVC desktop-game scenarios. Remove it as an OpenClaw lifecycle alternative rather than preserving an unsupported implementation path.
  • Account for embedded App Installer metadata (P2) - This says a direct MSIX install cannot establish update association, but the linked review feedback identifies embedded .appinstaller metadata as the supported developer-published path. Require that metadata or explicitly qualify the statement by deployment method so the servicing design does not omit a supported route.
  • Resolve validator lookups through Companion identities (P2) - The updated guidance names a Companion package, but the unchanged runtime lookups still query OpenClaw.Tray; current main declares OpenClaw.Companion. A real run will fail to resolve the installed package, so parameterize the channel identities before claiming this validates the current artifact.
  • State the warning's actual visibility condition (P2) - The changed comment reduces the warning gate to File.Exists(setupStatePath), whereas the Settings page also opens it for a localhost gateway URL. State the full predicate or link to the implementation so validation does not falsely classify that supported condition as absent.
  • Resolve merge risk (P1) - Merging would publish an unapproved lifecycle recommendation while the current release policy keeps MSIX paused.
  • Resolve merge risk (P1) - The validator still targets the retired OpenClaw.Tray identity, so a claimed Companion validation run can fail before collecting evidence.
  • Resolve merge risk (P1) - The draft is currently reported as merge-conflicted and needs a refreshed merge result after the factual corrections.
  • Complete next step (P2) - A maintainer must choose the lifecycle direction, and the contributor must provide real Companion-package proof before merge.

Findings

  • [P2] Remove customInstall as a lifecycle candidate — docs/MSIX_LIFECYCLE_PLAN.md:17
  • [P2] Account for embedded App Installer metadata — docs/MSIX_LIFECYCLE_PLAN.md:244
  • [P2] Resolve validator lookups through Companion identities — scripts/validate-msix-storage-paths.ps1:71-72
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Documentation and guidance surface 888 added, 72 removed across 4 files The 799-line lifecycle proposal would become a major source of packaging and upgrade guidance if merged.

Merge-risk options

Maintainer options:

  1. Correct the lifecycle contract and prove the validator (recommended)
    Remove unsupported custom-install framing, account for embedded App Installer metadata, resolve Companion identities, state the real warning condition, and add redacted current-head package evidence.
  2. Keep it as an unmerged proposal
    Leave the draft unmerged until maintainers choose the supported MSIX lifecycle and its upgrade contract.

Technical review

Best possible solution:

Keep MSIX paused until maintainers approve the lifecycle direction, then correct the proposal and validator and attach redacted proof from a real current-head Companion package run.

Do we have a high-confidence way to reproduce the issue?

Yes, source inspection reproduces one defect: the validator queries OpenClaw.Tray while current main's MSIX identity is OpenClaw.Companion. No real current-head Companion package execution was supplied for the changed validator guidance.

Is this the best way to solve the issue?

No. The plan needs the four factual corrections and explicit product approval before it can be the repository's recommended servicing model.

Full review comments:

  • [P2] Remove customInstall as a lifecycle candidate — docs/MSIX_LIFECYCLE_PLAN.md:17
    The proposal still calls this restricted extension “promising” and leaves it as a future route, despite the linked review feedback that it is limited to MSIXVC desktop-game scenarios. Remove it as an OpenClaw lifecycle alternative rather than preserving an unsupported implementation path.
    Confidence: 0.93
  • [P2] Account for embedded App Installer metadata — docs/MSIX_LIFECYCLE_PLAN.md:244
    This says a direct MSIX install cannot establish update association, but the linked review feedback identifies embedded .appinstaller metadata as the supported developer-published path. Require that metadata or explicitly qualify the statement by deployment method so the servicing design does not omit a supported route.
    Confidence: 0.88
  • [P2] Resolve validator lookups through Companion identities — scripts/validate-msix-storage-paths.ps1:71-72
    The updated guidance names a Companion package, but the unchanged runtime lookups still query OpenClaw.Tray; current main declares OpenClaw.Companion. A real run will fail to resolve the installed package, so parameterize the channel identities before claiming this validates the current artifact.
    Confidence: 0.99
  • [P2] State the warning's actual visibility condition — scripts/validate-msix-storage-paths.ps1:38-40
    The changed comment reduces the warning gate to File.Exists(setupStatePath), whereas the Settings page also opens it for a localhost gateway URL. State the full predicate or link to the implementation so validation does not falsely classify that supported condition as absent.
    Confidence: 0.98

Overall correctness: patch is incorrect
Overall confidence: 0.96

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 582a44713860.

Labels

Label justifications:

  • P2: This is a normal-priority packaging and lifecycle documentation change with concrete correctness blockers.
  • merge-risk: 🚨 compatibility: The PR specifies future installation, servicing, identity, and removal behavior that can shape existing-user upgrade compatibility.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs real behavior proof before merge: The PR reports build, test, parser, and link checks, but no redacted current-head execution of the changed validator against a real Companion MSIX; the docs-only exemption does not apply because a script is changed. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Evidence

What I checked:

Likely related people:

  • Caleb Eden: Commit d0fca93 introduced the current Companion manifest and the storage-validation script lineage. (role: introduced current package identity and MSIX validation path; confidence: high; commits: d0fca93d5f61; files: src/OpenClaw.Tray.WinUI/Package.appxmanifest, scripts/validate-msix-storage-paths.ps1)
  • Barbara Kudiess: Recent Settings-page refactoring makes this person a useful routing contact for the documented packaged-warning behavior. (role: recent Settings-area contributor; confidence: medium; commits: d2638ddbef57; files: src/OpenClaw.Tray.WinUI/Pages/SettingsPage.xaml.cs)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Correct the four review findings on the current head.
  • Attach redacted output or a terminal capture from the validator running against a real current-head Companion MSIX.
  • Update the PR body after the maintainer design decision and proof are available.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (36 earlier review cycles; latest 8 shown)
  • reviewed 2026-08-04T22:05:06.419Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a validation candidate
  • reviewed 2026-08-05T08:14:40.306Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Resolve validator package lookups to Companion | [P2] Remove customInstall as a lifecycle alternative
  • reviewed 2026-08-08T14:24:19.989Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as an OpenClaw lifecycle candidate | [P2] Resolve validator package lookups to Companion identities | [P2] State the warning’s actual visibility condition
  • reviewed 2026-08-08T15:40:33.198Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Reject customInstall as a lifecycle option | [P2] Account for embedded App Installer metadata | [P2] Resolve validator lookups to Companion identities | [P2] State the warning's full visibility condition
  • reviewed 2026-08-09T00:06:31.832Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a lifecycle candidate | [P2] Account for embedded App Installer metadata | [P2] State the warning's full visibility condition | [P2] Resolve the validator through Companion identities
  • reviewed 2026-08-09T03:16:39.328Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Remove customInstall as a lifecycle candidate | [P2] Account for embedded App Installer metadata | [P2] Resolve validator lookups to Companion identities | [P2] State the warning's actual visibility condition
  • reviewed 2026-08-09T09:28:24.971Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Reject customInstall as a lifecycle candidate | [P2] Require embedded App Installer update metadata | [P2] Resolve validator lookups through Companion identities | [P2] State the warning's actual visibility condition
  • reviewed 2026-08-09T11:58:37.929Z sha a9cfa04 :: needs real behavior proof before merge. :: [P2] Reject customInstall as a lifecycle candidate | [P2] Require embedded App Installer update metadata | [P2] Resolve validator lookups through Companion identities | [P2] State the warning's actual visibility condition

@clawsweeper clawsweeper Bot added merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. labels Aug 1, 2026
@@ -0,0 +1,799 @@
# One supported install, update, repair, and removal path for OpenClaw on Windows

The way OpenClaw is installed, updated, repaired, and removed on Windows should be changed because those responsibilities are currently split across mechanisms that do not know about each other. This document presents the recommended design, the evidence behind it, the remaining validation gates, and the decisions that need team agreement.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

General rule of thumb: Use max line length = 100 in .md files
Makes it easier to review, diff, etc

VS code is very good at reflowing Markdown, especially with the Reflow Markdown extension (alt-q to reflow paragraph, doesn't break URLs, etc)


1. Package the **Windows companion** as MSIX. The companion package contains the WinUI tray application, the Windows node hosted in that process, setup and connection libraries, and all required Windows runtime files for one architecture.
2. Keep the **gateway separate from the companion package**, both now and if a Windows-hosted gateway becomes available. The current gateway remains a separately installed WSL component. A Windows-hosted gateway appears likely to arrive through separate OpenClaw and Windows platform work, but it has no published schedule or contract at the time of writing. This proposal allows the companion to ship without it and adopt it later; construction of that gateway is not proposed here.
3. Install each supported companion channel through App Installer. A `.appinstaller` document associates the installed package with that channel's HTTPS update source so Windows can check, stage, verify, and apply later companion versions.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The App Installer app is merely one of many possible ways to install MSIX packages. Alternatives include PowerShell cmdlets, WinGet, the Microsoft Store, Intune, and many more.

All produce equivalent results.


1. Package the **Windows companion** as MSIX. The companion package contains the WinUI tray application, the Windows node hosted in that process, setup and connection libraries, and all required Windows runtime files for one architecture.
2. Keep the **gateway separate from the companion package**, both now and if a Windows-hosted gateway becomes available. The current gateway remains a separately installed WSL component. A Windows-hosted gateway appears likely to arrive through separate OpenClaw and Windows platform work, but it has no published schedule or contract at the time of writing. This proposal allows the companion to ship without it and adopt it later; construction of that gateway is not proposed here.
3. Install each supported companion channel through App Installer. A `.appinstaller` document associates the installed package with that channel's HTTPS update source so Windows can check, stage, verify, and apply later companion versions.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Developers are encouraged to embed a .appinstaller file in their .msix packge. This way there's no need for separate files.

(Admins after the fact can't embed a .appinstaller file into a signed package w/o breaking the signing integrity, thus admins adding .appinstaller to a package MUST put it outside the package. But for developers authoring the package, embedding ensures even if someone directly installs a .msix the .appinstaller's information will be used for updates, repair, etc)

1. Package the **Windows companion** as MSIX. The companion package contains the WinUI tray application, the Windows node hosted in that process, setup and connection libraries, and all required Windows runtime files for one architecture.
2. Keep the **gateway separate from the companion package**, both now and if a Windows-hosted gateway becomes available. The current gateway remains a separately installed WSL component. A Windows-hosted gateway appears likely to arrive through separate OpenClaw and Windows platform work, but it has no published schedule or contract at the time of writing. This proposal allows the companion to ship without it and adopt it later; construction of that gateway is not proposed here.
3. Install each supported companion channel through App Installer. A `.appinstaller` document associates the installed package with that channel's HTTPS update source so Windows can check, stage, verify, and apply later companion versions.
4. Use the same small signed **per-user Inno coordinator** for WSL-backed Stable, Preview, and installed Dev channels. This creates an additional Windows Installed Apps maintenance entry alongside each channel's companion MSIX; it is not another package containing the companion. It installs a signed `OpenClawMaintenance.exe` program that inventories, migrates, repairs, and removes OpenClaw components even after the companion has been removed. The coordinator also installs the companion through its approved `.appinstaller` source so that the update association is recorded.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'same small signed' - odd phrasing. Typo?

4. Use the same small signed **per-user Inno coordinator** for WSL-backed Stable, Preview, and installed Dev channels. This creates an additional Windows Installed Apps maintenance entry alongside each channel's companion MSIX; it is not another package containing the companion. It installs a signed `OpenClawMaintenance.exe` program that inventories, migrates, repairs, and removes OpenClaw components even after the companion has been removed. The coordinator also installs the companion through its approved `.appinstaller` source so that the update association is recorded.
5. Keep SetupEngine responsible for the current WSL gateway. Its acquisition path should be strengthened so reviewed gateway releases are described by signed, immutable metadata and exact payload hashes rather than relying on a mutable HTTPS installation script.
6. Support Stable, Preview, and installed Dev side by side using separate package identities, URI protocol handlers, state roots, startup registrations, maintenance registrations, `.appinstaller` feeds, local Model Context Protocol (MCP) endpoints and tokens, and app execution aliases when approved. Versions within one channel update in place. Installing one channel must not force removal of another.
7. Treat the `windows.customInstall` MSIX extension, which declares install, repair, and uninstall actions, as a promising alternative to the coordinator. It should not be used until the [five clearance requirements](#windowscustominstall) covering platform guidance, production lifecycle proof, managed deployment, Store review when applicable, and OpenClaw approval are met. The disposable prototype established only action ordering and interactive-user file-system scope.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Treat the windows.customInstall MSIX extension...as a promising alternative to the coordinator.

It's not.

The windows.customInstall extension is only usable by MSIXVC and as noticed on the docs

This element is currently intended to be used only by certain types of desktop PC games that are published by Microsoft and our partners.

There is no intention to change this restriction at this time.

What are you trying to accomplish? There may be other (supported) ways to do so.

Are you familiar with the windows.preInstalledConfigTask and windows.updateTask extensions? See https://learn.microsoft.com/en-us/windows/uwp/launch-resume/run-a-background-task-during-updatetask for more details.

Are you familiar with Uninstall/Reset/Repair Tasks #2779? If this interests you please share your feedback at that link.

To name a few. Devil's in the details so it's hard to say more without a better understanding of what you're trying to accomplish (sorry, I'm not familiar with the coordinator's details).

9. Keep the current full Inno companion installer and ZIP updater until the MSIX path has passed installation, update, migration, repair, recovery, and complete-removal gates. The full Inno companion payload should be retired only after every responsibility has a validated replacement. The small Inno coordinator in item 4 remains part of the WSL-period design.
10. Advance the design through explicit validation gates. The package boundary, custom-install action mechanics, and coordinator removal ordering have been established by prototypes. Production-trusted signing, App Installer update association and package replacement, package repair, managed deployment, ARM64 runtime behavior, and migration of real OpenClaw state remain required before the design is supported.

MSIX is recommended for the companion for the reasons listed under [Why MSIX is recommended for the companion](#why-msix-is-recommended-for-the-companion). Those benefits apply only to the companion MSIX. Comparable gateway assurances should be provided separately through SetupEngine's signed release metadata, exact payload verification, inventory, transactional update, and recovery contract. Neither mechanism reduces the permissions of the full-trust tray and in-process Windows node.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those benefits apply only to the companion MSIX.

Is OpenClaw for Windows == companion + gateway?

I'm curious what the gateway would need that MSIX currently doesn't provide.

| `windows.customInstall` | It can declare package install, repair, and uninstall actions and request user-context execution. | Technically promising but not a baseline. The [five clearance requirements](#windowscustominstall) apply: platform eligibility and semantics; production-signed App Installer lifecycle proof, including repair, removal, failure recovery, and target-user execution; managed-deployment proof; Store approval when applicable; and OpenClaw release and security approval. |
| Direct MSIX | It provides an immutable signed companion artifact and works for offline or controlled installation. | Supported as an artifact, but not the primary self-service path because a direct MSIX does not establish an update association. |
| Portable ZIP | It is useful for development, diagnostics, and recovery. | Retain as a support artifact. It is not an installed product lifecycle. |
| Put the gateway in the companion MSIX | It appears to simplify first acquisition. | Rejected. The gateway is optional, writable, long-running, independently versioned, and owned by a different update and repair lifecycle. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're missing another alternative: Put the gateway in its own MSIX

That would address most issues if packing companion + gateway in one MSIX package. I'm curious if it addresses all, or why not.

| Small per-user Inno coordinator plus companion MSIX | It keeps a maintenance executable available after package removal and naturally runs against the current user's WSL and CurrentUser state. | Recommended for each installed WSL-backed Stable, Preview, and Dev channel. It is a temporary coordinator, not a second copy of the companion. |
| Machine-context MSI coordinator | It offers standardized Windows Installer product, repair, logging, and enterprise policy concepts. | Rejected as the baseline for the current per-user WSL lifecycle. WSL registration and CurrentUser credentials require target-user execution. A machine-context design would need a supported way to identify and act as that user, and the prototype demonstrated the risk of a success result scoped only to `SYSTEM`. |
| Per-user MSI coordinator | It could run in the correct user context while retaining Windows Installer semantics. | Not selected. It adds MSI component, upgrade, and custom-action complexity without a demonstrated lifecycle advantage over the existing Inno expertise. |
| `windows.customInstall` | It can declare package install, repair, and uninstall actions and request user-context execution. | Technically promising but not a baseline. The [five clearance requirements](#windowscustominstall) apply: platform eligibility and semantics; production-signed App Installer lifecycle proof, including repair, removal, failure recovery, and target-user execution; managed-deployment proof; Store approval when applicable; and OpenClaw release and security approval. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can declare an MSIXVC package...

Not a general purpose solution. Not viable for your scenarios today, and unlikely ever to be. See https://github.com/openclaw/openclaw-windows-node/pull/1073/changes#r3699825644 for more information


Store publication during the WSL period remains difficult because an ordinary Store listing does not deliver the separate Inno coordinator. A Store release should wait for one of these:

- OpenClaw is approved to use `windows.customInstall` and the production lifecycle passes;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wouldn't expect to see this. See previous comments

| Microsoft Store | Deferred until representative policy and submission evidence covers full-trust execution, requested capabilities, external gateway lifecycle, state, identity, and complete removal. |
| WinGet | Added only after it points to an approved installer and the resulting update authority is unambiguous. |

Store publication during the WSL period remains difficult because an ordinary Store listing does not deliver the separate Inno coordinator. A Store release should wait for one of these:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would be required for coordinator to be an MSIX package?

What of these (if anything) is a problem achieving with MSIX?

(Sorry, I'm not familiar with coordinator or the InnoSetup details)

@clawsweeper clawsweeper Bot added merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants