v2.0.0 — Canopy
Development milestone: 2026-04-18
This is a major version milestone 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. This is the version that will ship at public launch.
Summary
Section titled “Summary”Forge was the internal working 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 | $CANOPY_DOWNLOAD_URL |
| 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:
- 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.
- 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.
- Pricing and tiers. Community, Solo, Pro, Team, and Air-Gapped tiers are unchanged.
Migration (at launch)
Section titled “Migration (at launch)”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 installing, 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 at launch
Section titled “Manual steps at launch”- Install the binary. Download the new
canopybinary from$CANOPY_DOWNLOAD_URL/releases/latest/and add it to 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.
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. The new name is cleaner. We’re keeping it.
Forge entries dated before 2026-04-18 in the changelog are preserved exactly as written — that wording is the accurate historical record of what was built under that name internally.