Skip to content

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.


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.


The table below maps every renamed identifier from its former Forge name to the current Canopy name.

CategoryOld (Forge)New (Canopy)
Binaryforgecanopy
MCP tool prefixforge_* (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 variablesFORGE_REPO, FORGE_EPHEMERAL, FORGE_PUBLIC_KEY_HEX, FORGE_HEARTBEAT_URL, FORGE_ACTIVATION_URL, FORGE_LICENSE_KEY, FORGE_AIR_GAPPED_*CANOPY_* equivalents
systemd serviceforge-mcpcanopy-mcp
Keygen binaryforge-keygencanopy-keygen
GitHub repositorygithub.com/ironpine-labs/forgegithub.com/ironpine-labs/canopy
Domainforge.ironpinelabs.comcanopy.ironpinelabs.com
Heartbeat subdomainheartbeat.forge.ironpinelabs.comheartbeat.canopy.ironpinelabs.com
Admin portal subdomainadmin.forge.ironpinelabs.comadmin.canopy.ironpinelabs.com
Downloads subdomaindownloads.forge.ironpinelabs.comdownloads.canopy.ironpinelabs.com
Workersforge-license-webhook, forge-admin-portalcanopy-license-webhook, canopy-admin-portal
R2 bucketsforge-releases, forge-backupscanopy-releases, canopy-backups
Core typesForgeConfig, ForgeError, ForgeStatsCanopyConfig, CanopyError, CanopyStats
MCP output headersFORGE PREPARE, FORGE VALIDATE, FORGE UNDERSTANDCANOPY PREPARE, CANOPY VALIDATE, CANOPY UNDERSTAND
Workspace crates (12)forge-{core,ast,indexer,graph,...}canopy-{core,ast,indexer,graph,...}

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.


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/*.yaml plugin 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.

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:

  1. ~/.forge/ is copied to ~/.canopy/ (your license key, config, and stats move over).
  2. Any per-repo .forge/ directories are copied to .canopy/ when Canopy operates on them.
  3. 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.

  1. Update the binary. Download the new canopy binary from downloads.canopy.ironpinelabs.com/releases/latest/ and replace forge in your $PATH.
  2. Update shell aliases. If you aliased forge to the binary path, update the alias.
  3. Update scripts. Replace forge invocations with canopy. Update FORGE_* env var names to CANOPY_*.
  4. Update .mcp.json. Rename the server key from "forge" (or similar) to "canopy" and update the command field to canopy.

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.

If you run Canopy as a systemd service, swap the unit:

Terminal window
bash scripts/swap-systemd-service.sh

This 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_REPO and FORGE_EPHEMERAL env vars are still read as fallbacks when the new CANOPY_* names are unset. A one-shot deprecation warning is emitted.
  • The forge-ignore: secret_scan suppression marker is still accepted alongside canopy-ignore:.
  • ~/.forge/ and .forge/ source directories are left untouched after migration so a v1.6.x rollback works.
  • forge.db SQLite filename inside the data directory is retained for this release.
  • 301 redirects from heartbeat.forge.* and admin.forge.* to the new *.canopy.* subdomains are active for 90 days (until 2026-07-20).

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.