wt CLI v0.3.0 — 2026-06-15
The first CLI release since v0.2.1 (2026-04-28). Adds the agent install bundle delivery path, the license refresh runtime, and the free-trial MCP affordance. Reshapes wt_subscribe from a per-twin verb to the org billing-plan verb. Hardens the installer’s supply-chain posture and routes every HTTP call through a TLS-floor-enforcing internal client.
What changed
Section titled “What changed”MCP install bundle delivery
Section titled “MCP install bundle delivery”Agents can now install commercial twins through wt mcp without leaving the conversation. The wt_install MCP tool calls the platform’s install endpoint and either delivers the twin + license bundle for atomic local commit, queues the request for human approval, or returns a shaped envelope explaining what setup is still required.
License refresh on demand
Section titled “License refresh on demand”wt_license_refresh forces a sync of the local license to match the org’s current entitlements. The runtime auto-calls it when a stale-IssuedAt is detected in mcp_metadata; agents can also invoke it directly for manual refresh affordances.
Free-trial surface
Section titled “Free-trial surface”wt_trial exposes the one-trial-per-account affordance. Day-Zero users get a signup URL whose post-signup flow activates the trial. Authenticated users get routed to the plan-management page where the web app determines trial eligibility (one trial per account; expired trials require subscribing, not re-trialing).
Supply-chain hardening (installer)
Section titled “Supply-chain hardening (installer)”- Strict checksum verification is now the default — set
WT_INSTALLER_ALLOW_MISSING_CHECKSUM=1to opt out (the prior soft-WARN phase is replaced). - Twin binary download URLs are allowlisted by host and required to be HTTPS.
- The unified HTTP client (
internal/httpclient) enforces a TLS 1.2 floor on every call site — 12 call sites migrated.
Runtime durability
Section titled “Runtime durability”wt-collectormirrors the deleted-wt-auth hardening shape (structured logging, key length floors, bounded request reads, graceful shutdown).- Shared twin HTTP server gets an explicit
ReadHeaderTimeout(closes a slow-loris class for twins running outsidewt-admindefaults). wtmain is wrapped in a deferred panic recovery so an unexpected crash returns a structured exit rather than a raw goroutine dump.
Filesystem hygiene
Section titled “Filesystem hygiene”~/.wondertwin/config.jsonis now enforced as0600;~/.wondertwin/as0700. Permissions are checked on every load — a permissive config causeswt loginto refuse rather than silently trusting it.
Naming cleanup
Section titled “Naming cleanup”- API key prefix simplified:
wt_live_→wt_. The redundantlivesegment served no purpose at customer scale (every key was_live_); shorter prefix reads cleaner and matches the post-billing tier vocabulary. - Internal:
ParseLicenseKey→validateChecksumto stop a parser-without-producer pattern that misled finding F-004.
New commands
Section titled “New commands”wt verify— CI-time entitlement gate. Readswondertwin.lockand.wondertwin/project.json, validates every twin against the asserted org’s entitlements via the platform’s entitlements API. Exit 0 on full coverage; exit 1 with a setup URL on a missing entitlement. A GitHub Action wrapper atwondertwin-ai/verify-action@v1is the recommended customer integration.wt replay— surface for replaying recorded scenarios against an installed twin. Companion to existingwt test.
New MCP tools
Section titled “New MCP tools”wt_install— install a commercial twin into the local runtime via the org’s agent-install policy. Returns the structured envelope (installed/already_installed_refreshed/trial_started_and_installed/queue/deny/upgrade_required/setup_required/policy_error).wt_license_refresh— force-refresh the local license to match the server’s current view.wt_trial— surface the free-trial affordance. Day-Zero users get a signup URL; authenticated users get routed to plan management for server-side eligibility determination.
All return structured JSON per the MCP envelope contract.
Breaking changes
Section titled “Breaking changes”-
wt_subscribesemantics reshaped. Previously a per-twin verb ({twin_name: "stripe"}→ subscribe to stripe). Now the org-plan-relationship verb — change the org’s WonderTwin plan (trial → paid; paid → larger plan). Thetwin_nameparameter is removed. Per-twin install moves towt_install.Migration: any MCP client calling
wt_subscribewithtwin_nameshould switch towt_installwith the same twin name. The wt_subscribe call site that used{twin_name: "stripe"}now doeswt_install({twin_name: "stripe"}). Newwt_subscribecallers pass an optionaltarget_planhint or nothing at all.This is the semver-major change driving the version bump from v0.2.x to v0.3.0.
Deprecations
Section titled “Deprecations”None.
Known limitations
Section titled “Known limitations”wt_installagainst production currently returnsSETUP_REQUIREDfor all callers because the platform-side install-bundle signing key is not yet populated on production. The envelope shape is correct; the install path is intentionally deferred until the MCP-auth design lands. Customers on the agent install path until that lifts will see “Setup required: complete WonderTwin signup before installing commercial twins.” Community twin install viawt install <twin>@<version>is unaffected.wt verifyrequires the org’s entitlements API to be reachable from the CI runner. For self-hosted CI behind a firewall that can’t reachapi.wondertwin.ai, the workaround is the existingwt installlockfile-based reproducible-install —wt verifyis the gate, not a replacement for the install path.- No
wt mcpconfig-change required for existing integrators (Claude Desktop, Cursor, etc.) — the binary is at the same path; new tools auto-appear viatools/list. The breaking change is in tool semantics, not server config.
Dependencies and coordination
Section titled “Dependencies and coordination”- Required to use the new
wt mcpinstall/trial/license-refresh flows: wondertwin-appv0.2.1or later on the target environment. Calling these against av0.2.0platform will succeed at the protocol level but return shaped policy_error envelopes because the corresponding endpoints aren’t deployed. - Compatible with all existing twin versions in the registry. No twin contract changes in this release.
Install
Section titled “Install”brew upgrade wondertwin-ai/tap/wtwt version # 0.3.0Fresh install:
brew install wondertwin-ai/tap/wt