v2.0.0 — Canopy
Released: 2026-04-20
This is a major version release with a single purpose: the product formerly known as Forge is now Canopy. Every public interface has been renamed to match — binary, MCP tools, environment variables, config paths, and infrastructure. No functional behavior has changed. If you were a Forge user, your license key still works and your indexed data migrates automatically on first run.
Summary
Section titled “Summary”Forge shipped under that name through v1.6.0. In v2.0.0 it was renamed to Canopy to fit the Ironpine Labs brand family (Pith / Grove / Canopy — botanical, hierarchical) and to clear the heavily saturated “forge” namespace: Laravel Forge, Atlassian Forge, Autodesk Forge, and Minecraft Forge all occupy that word. “Canopy” is distinctive, memorable, and accurately describes what the tool does — it provides an overview of your codebase from above.
Because every public interface changed, this is a major version bump under semver. The bump does not reflect any behavior change; it reflects the rename being a breaking change to public naming conventions.
What Changed
Section titled “What Changed”The table below maps every renamed identifier from its former Forge name to the current Canopy name.
| Category | Old (Forge) | New (Canopy) |
|---|---|---|
| Binary | forge | canopy |
| MCP tool prefix | forge_* (21 tools) | canopy_* (21 tools) |
| Config directory (global) | ~/.forge/ | ~/.canopy/ |
| Config directory (per-repo) | <repo>/.forge/ | <repo>/.canopy/ |
| Log directory | ~/.local/share/forge-mcp/ | ~/.local/share/canopy-mcp/ |
| Environment variables | FORGE_REPO, FORGE_EPHEMERAL, FORGE_PUBLIC_KEY_HEX, FORGE_HEARTBEAT_URL, FORGE_ACTIVATION_URL, FORGE_LICENSE_KEY, FORGE_AIR_GAPPED_* | CANOPY_* equivalents |
| systemd service | forge-mcp | canopy-mcp |
| Keygen binary | forge-keygen | canopy-keygen |
| GitHub repository | github.com/ironpine-labs/forge | github.com/ironpine-labs/canopy |
| Domain | forge.ironpinelabs.com | canopy.ironpinelabs.com |
| Heartbeat subdomain | heartbeat.forge.ironpinelabs.com | heartbeat.canopy.ironpinelabs.com |
| Admin portal subdomain | admin.forge.ironpinelabs.com | admin.canopy.ironpinelabs.com |
| Downloads subdomain | downloads.forge.ironpinelabs.com | downloads.canopy.ironpinelabs.com |
| Workers | forge-license-webhook, forge-admin-portal | canopy-license-webhook, canopy-admin-portal |
| R2 buckets | forge-releases, forge-backups | canopy-releases, canopy-backups |
| Core types | ForgeConfig, ForgeError, ForgeStats | CanopyConfig, CanopyError, CanopyStats |
| MCP output headers | FORGE PREPARE, FORGE VALIDATE, FORGE UNDERSTAND | CANOPY PREPARE, CANOPY VALIDATE, CANOPY UNDERSTAND |
| Workspace crates (12) | forge-{core,ast,indexer,graph,...} | canopy-{core,ast,indexer,graph,...} |
All 21 MCP Tool Names
Section titled “All 21 MCP Tool Names”The full set of renamed MCP tools (function signature and behavior unchanged):
canopy_parse_file, canopy_extract_symbol, canopy_search, canopy_search_symbols,
canopy_pattern_search, canopy_trace_imports, canopy_trace_dependents,
canopy_check_wiring, canopy_find_cycles, canopy_dependency_graph,
canopy_health_check, canopy_architecture_map, canopy_coverage,
canopy_git_history, canopy_git_blame, canopy_index_status, canopy_reindex,
canopy_ingest_scip, canopy_prepare, canopy_validate, canopy_understand.
What Didn’t Change
Section titled “What Didn’t Change”These things are unchanged in v2.0.0:
- License keys. The Ed25519 signing key is identical. Existing keys issued under the Forge name activate cleanly under Canopy v2.0.0 with no re-keying required.
- Pricing and tiers. Community, Solo, Pro, Team, and Air-Gapped tiers are unchanged.
- MCP tool behavior. Every tool behaves identically. Only the name prefix changed.
- CLI behavior. All 11 CLI commands work the same way. Only the binary name changed.
- SQLite schema. The database schema is unchanged. Your existing index migrates intact.
- Plugin YAML schema. All existing
.canopy/plugins/*.yamlplugin files continue to work. - API stability guarantee. The v1.0.0 API freeze is still in effect. Tool signatures, CLI flags, and plugin schema remain frozen; breaking changes require a future major bump.
- Apache-2.0 license. No change to the open-source license.
Migration
Section titled “Migration”Automatic migration (most users — do nothing)
Section titled “Automatic migration (most users — do nothing)”When you run any canopy subcommand for the first time after updating, the migration module runs automatically:
~/.forge/is copied to~/.canopy/(your license key, config, and stats move over).- Any per-repo
.forge/directories are copied to.canopy/when Canopy operates on them. - The originals (
~/.forge/,.forge/) are left in place so a rollback to v1.6.x recovers cleanly.
Both operations run at most once per destination — re-running canopy after migration does not re-copy.
Manual steps for most users
Section titled “Manual steps for most users”- Update the binary. Download the new
canopybinary fromdownloads.canopy.ironpinelabs.com/releases/latest/and replaceforgein your$PATH. - Update shell aliases. If you aliased
forgeto the binary path, update the alias. - Update scripts. Replace
forgeinvocations withcanopy. UpdateFORGE_*env var names toCANOPY_*. - Update
.mcp.json. Rename the server key from"forge"(or similar) to"canopy"and update thecommandfield tocanopy.
Existing shell alias shim
Section titled “Existing shell alias shim”If you invoke the binary via an old alias pointing at the Canopy v2.0.0 binary by name forge, the binary detects this and emits a deprecation notice before continuing normally:
[canopy] invoked as 'forge' — this alias will stop working in a future release. Update to 'canopy'.This shim will be removed in the next minor release after 2026-07-20.
systemd service swap
Section titled “systemd service swap”If you run Canopy as a systemd service, swap the unit:
bash scripts/swap-systemd-service.shThis script handles stopping the old forge-mcp service, enabling canopy-mcp, and verifying the transition.
Team and enterprise (Air-Gapped) customers
Section titled “Team and enterprise (Air-Gapped) customers”Reach out to support if you need custom migration assistance. Air-Gapped builds are issued as new canopy-branded binaries; the old forge air-gapped binary continues to function until your renewal date.
Backward Compatibility (scheduled for removal)
Section titled “Backward Compatibility (scheduled for removal)”These compatibility shims are active in v2.0.0 and will be removed in a follow-up release after 2026-07-20:
FORGE_REPOandFORGE_EPHEMERALenv vars are still read as fallbacks when the newCANOPY_*names are unset. A one-shot deprecation warning is emitted.- The
forge-ignore: secret_scansuppression marker is still accepted alongsidecanopy-ignore:. ~/.forge/and.forge/source directories are left untouched after migration so a v1.6.x rollback works.forge.dbSQLite filename inside the data directory is retained for this release.- 301 redirects from
heartbeat.forge.*andadmin.forge.*to the new*.canopy.*subdomains are active for 90 days (until 2026-07-20).
Acknowledgments
Section titled “Acknowledgments”This rename was a lot of tedious, careful work. Special thanks to everyone who filed issues pointing out Forge collisions in their existing toolchain. The new name is cleaner. We’re keeping it.
Forge entries dated before 2026-04-20 in the changelog are preserved exactly as written — that wording is the accurate historical record of what shipped under that name.