feat(cli): create hosted workspaces on armadillo by default

Merged
KJ
9d ago
+1778-572

What changes

  • relay init --hosted and relay workspace create now create workspaces on https://armadillo.agentrelay.com and bind the new key there.
  • The printed join line now includes --url https://armadillo.agentrelay.com.
  • Armadillo credentials are accepted, masked and routed to armadillo in the CLI, cloud, broker and probe. They use different prefixes from cast: workspace keys are ar_ws_…, agent tokens are ar_ag_….
  • armadillo is added to the trusted hosted origins for fleet attach, persisted canonical routes and Cloud routes. cast stays trusted.

What deliberately stays on cast

"No recorded server" has to keep meaning cast. Hosted keys were never bound, so every existing workspace key is unbound. If the fallback moved, those keys would be sent to armadillo.

  • UNBOUND_CREDENTIAL_ORIGIN (TS), DEFAULT_BASE_URL (probe) and DEFAULT_RELAYCAST_BASE_URL (broker) stay on cast.
  • @relaycast/sdk and the Rust relaycast crate default to cast, so undefined still means cast.
  • The precedence is: explicit URL, then saved binding, then ar_ws_/ar_ag_ format means armadillo, then cast.

Needs a new probe release

Yes. Merging this is not enough on its own. The probe's fallback default did not change, but the released core 15.0.5 cannot serve armadillo:

  • It rejects ar_ws_ keys.
  • It treats a binding to any *.agentrelay.com host as a malformed relaycast-origins.json and fails closed.

Order: merge, cut probe-v<next>, then bump PROBE_VERSION. PROBE_VERSION is not bumped here because that release does not exist yet. The desktop app's bundled core needs the same update. Older brokers and CLIs also refuse a bindings file that contains armadillo. They fail closed and do not misroute keys.

Still on cast, as follow-ups

These write or hold a key with no way to record its server, so moving only the mint would strand the key:

  • broker zero-config mint
  • SDK AgentRelay.createWorkspace
  • MCP create_workspace
  • the Gemini and Codex plugin hooks

ar_-prefixed keys reach the right host through the broker, CLI and probe. The plugin hooks and the Swift SDK still need an explicit RELAY_BASE_URL.

Tests

  • relaycast-origin-binding, init, workspace and fleet-sandbox tests updated and extended.
  • Broker transport and probe origin_binding tests added.
  • Live evidence against armadillo will follow in a comment.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.


Agent Relay sessions

  • claude session 8ab900cc · opened via gh pr create · last active 2026-10-31