Move Canopy to a New Machine
The normal path for moving to a new laptop takes two commands: canopy deactivate on the old machine, then canopy activate on the new one. Your license key does not change.
Before you start
Section titled “Before you start”- Your old machine must be powered on and reachable.
- You need your license key. Run
canopy licenseon the old machine to display it. - If your old machine is lost, broken, or wiped, skip to Recover from a dead machine instead.
On your old machine
Section titled “On your old machine”Step 1. Confirm which license is active:
canopy licenseExpected output:
tier: soloexpires: 2027-04-17seats: 1/1 usedmachine: this machineStep 2. Deactivate this machine:
canopy deactivateExpected output:
canopy: license deactivated. This machine's binding has been released.Your license key is unchanged. The seat is now free for activation on your new machine.
On your new machine
Section titled “On your new machine”Step 1. Install Canopy. See Install Canopy if you have not done this yet.
Step 2. Activate with your license key:
canopy activate <your-license-key>Expected output:
canopy: license activated (tier: solo, expires: 2027-04-17)canopy: machine fingerprint registered (1/1 slots used)canopy: all 21 MCP tools unlockedStep 3. Index your repo:
canopy index /path/to/your/repoThat is the entire process. Your new machine is now the active binding for your license.
Troubleshooting
Section titled “Troubleshooting”canopy deactivate fails or hangs
Section titled “canopy deactivate fails or hangs”If the old machine cannot reach the license server (no network, corporate proxy blocking the endpoint), deactivation may time out.
Check connectivity:
curl -I https://heartbeat.canopy.ironpinelabs.com/health# Expected: HTTP/2 200If the request times out or returns an error, the server is not reachable from that machine. Use the portal self-service path instead — see Recover from a dead machine.
Check connectivity in PowerShell:
Invoke-WebRequest -Uri "https://heartbeat.canopy.ironpinelabs.com/health" -Method Head# Expected: StatusCode 200If this fails, use the portal self-service path instead — see Recover from a dead machine.
canopy activate says “seat limit reached”
Section titled “canopy activate says “seat limit reached””This means the old machine’s binding was not fully released. Two recovery paths:
- Go back to the old machine and run
canopy deactivateagain, then retry activation on the new machine. - Use the portal at
https://canopy.ironpinelabs.com/portal/loginto manually revoke the old binding. See Recover from a dead machine.
canopy activate says “invalid key”
Section titled “canopy activate says “invalid key””The license key may have been re-issued during an eviction on another machine. Check your original purchase confirmation email for the key, or retrieve the currently stored key from the old machine before deactivating:
canopy license --show-key