Canopydocs v0.4.7

Troubleshooting

Installing and launching#

SymptomCauseFix
"Canopy is damaged and can't be opened"macOS quarantine on a non-notarized appxattr -dr com.apple.quarantine /Applications/Canopy.app
"unidentified developer" / "can't check for malicious software"SameSame, or System Settings → Privacy & Security → Open Anyway
No window and no menu-bar iconIt launched into the tray and the icon is easy to missLook for the fork mark in the menu bar. On Linux with GNOME you may need an AppIndicator extension
Nothing happens on launch, or an old version reappearsAnother instance is already runningCanopy is single-instance by design, so the running one gets focused. Quit it from the tray first
The window is blankA CSP or asset failure in a release buildCheck the log file. This is what npm run csp:check guards against in CI

Adding a repository#

SymptomCauseFix
"not a git repository" while typing a pathThe path isn't inside a git work treePoint at the repository root, not a subdirectory of something else
Detection finds no servicesNo package.json, or no script names matching the service patternAdd the services by hand. The pattern is Node-specific; the execution isn't
Detection needs the desktop appYou're running the UI in a browser (mock mode)Detection is a backend call, so use the app
A dotfile can't be chosen in the file pickermacOS hides dotfiles in the pickerType the path, or use Settings → ⋯ → Load from repo file, which reads the hidden config by path

Creating a worktree#

SymptomCauseFix
The branch row is disabled and tagged in usegit won't check the same branch out twiceUse the worktree that already has it, or pick another branch
The worktree lands in an unexpected folderThe name is sanitised: anything outside letters, digits, - and . becomes _Expected. The destination panel shows the exact path before you commit
Creation succeeded but setup failedA setup command failedOpen the notice in Needs you for the log tail, fix the command, then ⋯ → Run setup…
Setup fails with notsup or the wrong NodeThe pinned Node version isn't installedasdf install nodejs <version>, or the nvm/fnm equivalent, for the version in .nvmrc or .tool-versions
Cannot find module @tooljet/plugins/dist/serverA package that has to be built per worktree wasn'tAdd the build step to setup, before migrations
Nothing appears in the sidebar for minutesCreation is a minutes-long jobIt shows as an in-progress row with the current step. Leave it and keep working

Services and ports#

SymptomCauseFix
A service shows stopped but its port is busyAnother worktree, or a stale process, holds itStop the other worktree, or override this service's port in service detail
Port N is already used by <branch> · <service>Clash detection found the real holderPick another port. The message names who has it
The frontend talks to the wrong APIThe server URL was baked from the environment at launchSet it from a port variable in the provisioned .env (http://localhost:${WT_SERVER_PORT}), and give the frontend --port $PORT
A command can't find your toolsCommands run through $SHELL as a login shellMake sure your PATH and version-manager setup live in that shell's profile, not only in an interactive rc file
A service exits immediatelyUsually a bad command or a missing dependencyRead the fix bar → Jump to error. The exit code is in service detail
Stopping leaves child processes behindShouldn't happen: services run in their own process groupIf it does, quit Canopy, which kills every group. The next launch also sweeps recorded orphans

Databases#

SymptomCauseFix
"PG_DB not set in this worktree's .env"The provisioned .env has no PG_DBAdd "PG_DB": "${WT_DB_NAME}" to your provision keys, then ⋯ → Run setup…
A snapshot or export fails on versionClient and server major versions don't matchInstall the Postgres version matching your server. Postgres.app/Versions/<major> is preferred
Restore fails on a file that dumped fine elsewhereA newer pg_dump produced an archive the older server rejectsDump and restore with the server's own major version
The database chip is missingThe worktree has no database nameSame as the first row: no PG_DB, no database features
A database job seems stuckThey take seconds to minutes and hold the worktree's operation leaseUse Run in background. Each Postgres invocation is capped at 15 minutes
Two worktrees share dataThey're pointing at the same database nameCheck the worktree's .env: PG_DB should be its own ${WT_DB_NAME}

Agents and terminals#

SymptomCauseFix
"<Agent> exited immediately — check the agent command"The configured CLI isn't on PATH, or rejected its argumentsRun the command in a terminal in that worktree. If it takes no positional prompt, turn Prompt on launch off
The agent ignores your briefThe brief was written after launchThe handoff is composed at launch. Edit the context, then start a new session
An agent tab says it's running but nothing happensThe process ended without exiting the shellUse the tab's Restart, or close it and start a new one
A popped-out terminal is emptyIts PTY is goneClose the window and Restart the session inline
Shell tabs disappeared overnightIdle shell sessions are swept after an hourExpected. Agent sessions are exempt

Sync and state#

SymptomCauseFix
A worktree you deleted by hand still appearsgit keeps a stale registrationSync, then use the prune dialog it opens
Ports changed after you deleted state.jsonIndices get reassigned from scratchDon't hand-edit state.json. Re-set any overrides you needed
Settings edits you made in a text editor didn't appearThe app holds the authoritative copy while runningEdit settings.json with Canopy closed. For .worktreemanager.json, press Sync
Settings shows an old .worktreemanager.jsonIt changed outside the appSync re-reads it, except for a repository you have unsaved changes on, which is never clobbered

Further diagnostics#

Needs you holds every failed background job with its error and log tail, and the notice modal lets you copy it.

The app's own log is canopy.log in the platform log directory (see Where settings live). RUST_LOG=debug raises the level for a run started from a terminal.

A service's last error lines are in its detail dialog, alongside the exit code.

Documentation for Canopy 0.4.7. Controls marked coming soon are present in the interface but have no implementation behind them yet.