canopy_tray is the packaged Windows path for users who do not want to manage Python directly. This is the recommended Canopy install path for nontechnical Windows users when a published packaged build is available.
This guide focuses on the single-runtime tray path. If you intentionally want multiple isolated local meshes on one machine, start with MESHSPACES.md for the dedicated multi-mesh guide.
Choose the Windows tray path when you want:
- a per-user installer or packaged app folder
- a tray icon that starts and stops the local server
- runtime data kept outside the repo
- a documented manual upgrade and rollback path
When a packaged Windows release is available, it will usually include:
CanopyTraySetup-<version>.exewhen the installer build is produced- packaged
Canopyfolder containingCanopy.exeas the fallback distribution - a checksum file when the release process provides one
The tray app is reviewed against the Canopy 0.6.0 release line.
- Peer status uses
/api/v1/p2p/peerswith fallback to/api/v1/p2p/known_peers. - Message notifications use
/api/v1/channelsand/api/v1/channels/<channel_id>/messages. - Local user identity is resolved through
/api/v1/auth/statusso the tray does not toast the user about their own posts. - If no owner account exists yet, the tray starts the server but does not mint a placeholder API key.
- Download
CanopyTraySetup-<version>.exefrom the release page when that installer artifact is available. - If the installer artifact is not available, use the packaged
Canopyfolder containingCanopy.exe. - Launch Canopy from the Start menu, tray shortcut, or packaged app folder.
- Open
http://localhost:7770. - Create your local account.
After install, verify:
- the tray icon appears
http://localhost:7770opens- the tray menu can open the runtime folder
- your local account can post in
#general - the runtime data remains under
%LOCALAPPDATA%\Canopy
This path is manual in v1.
- Exit the Canopy tray app.
- Download the new
CanopyTraySetup-<version>.exewhen it is available. - Run the installer over the existing per-user install, or replace the packaged app folder with the new build.
- Relaunch Canopy.
- Verify
http://localhost:7770opens and the existing local data is still present.
If the new build regresses:
- Exit the tray app.
- Reinstall the previous known-good
CanopyTraySetup-<previous>.exewhen available, or restore the previous packagedCanopyfolder. - Relaunch and repeat the verification checklist.
- Use the packaged
Canopyfolder containingCanopy.exeas the fallback troubleshooting path if the installer route is unavailable.
This section is for maintainers packaging the release artifacts above, not for end users installing Canopy on Windows.
From a Windows PowerShell prompt at the repository root:
powershell -ExecutionPolicy Bypass -File .\scripts\build_tray_windows.ps1This script:
- creates
venvif needed - installs
.[tray,tray-build] - builds the tray bundle with PyInstaller
- optionally builds a Windows installer when Inno Setup 6 is available
Outputs:
dist\Canopy\Canopy.exedist\CanopyTraySetup-<version>.exewhen Inno Setup is installed
To skip installer creation:
powershell -ExecutionPolicy Bypass -File .\scripts\build_tray_windows.ps1 -SkipInstallerThe optional installer step uses Inno Setup 6.
If ISCC.exe is on the machine, the build script will detect it automatically.
The installer is per-user and installs into:
%LOCALAPPDATA%\Canopy Tray
- The tray app can launch Canopy automatically at Windows login using the built-in
Start with Windowsmenu item. - The tray app opens the Canopy web UI at
http://localhost:7770. - The tray app exposes
Reconnect All Peersfrom the tray menu. - Toast notifications are rate-limited per channel to reduce spam.
- The tray notification key is read-only and stored in
tray_state.jsonunder the tray runtime directory. - If the local owner account changes, the tray will rotate to a matching key automatically on next startup.
- If you need to troubleshoot the tray runtime, open the tray menu and use
Open Canopy Folder.