Intramedial is in restricted beta. At sign up or sign in, you have to provide the beta tester password you received or request one at preview@intramedial.com. Thank you.
Loading…
rehoming.planModule 52
Plane module
Region rehoming
Plan where this workspace's coordination records should live, see exactly what would move, then carry it to another region on your own say.
rehoming.plan names a source and target region for the workspace's state, leases and ledger rows. execute copies a real snapshot the target region pulls on its own; live presence stays regional, and an EU-bound workspace is pinned by refusing calls from the old region once recorded.
Agents act when the plane says yes, and the record says why.
Put admission in front of your MCP servers, repositories, SaaS tools and cloud accounts. Every agent gets a lease or a reason – and you keep the lever to stop any of them.
RehomingSnapshot.signed is always false; there is no cryptographic attestation of the transfer. plan and execute persist to the policy store and a config key, but neither calls the ledger's appendEvent, so "recorded" means written there, not to the audit ledger other modules use.
Record
The record
What gets recorded
from
The workspace's current region.
to
The requested target region.
pinDOs
Whether Durable Object classes are pinned to the target as part of this move.
Whether the target region is an EU jurisdiction, driving the 421 pin after execution.
status
planned from plan, or the recorded state from status.
workflowId
Set when execute runs as an async Cloudflare Workflow rather than inline.
Mechanism
Step by step
How it works
A move is planned
plan with a target to region returns the computed from, pinned Durable Object classes and whether the target is EU-bound, as a flat object, not wrapped in a plan key.
Execution captures a real snapshot
execute reads live policy-store keys, leases, D1 rows and Durable Object state, including unsealed ledger leaves, and writes it to a shared CONFIG_KV sidecar key for the workspace.
The target pulls, it is never pushed
The target region applies the snapshot lazily on its own next request to this workspace, idempotently keyed by the snapshot's own timestamp.
An EU pin takes effect once recorded
Once an EU-bound move is recorded, every other ACP module call from the old region returns 421 for this workspace, except rehoming's own routes, which stay reachable everywhere for inspection.
Try it
Live demo
Run it from this page
GET/api/v1/acp/rehoming/status
// No body: this is a GET. Press Run.
Runs in a shared demo workspace with a demo key: anyone can see what it holds, so send nothing private. rehoming.plan docs
Responses
Press Run to send the request on the left to the shared demo workspace.
Runs in a shared demo workspace with a demo key: anyone can see what it holds, so send nothing private.
Code
Live example
A real request
A request in the shape the API accepts, and an example response in the shape the module returns.
api.intramedial.com/api/v1/acp/rehoming/planPOST
POST/api/v1/acp/rehoming/planAuthorization: Bearer av_workspace_••••Content-Type: application/json
{
"to": "weur"
}
→ 200 { from, to, pinDOs, doClasses, targetWorker, euBound, status, workflowId, llm } (flat; the { plan } wrapper is what rehoming.status returns, not rehoming.plan)
A workspace plans a move to weur, executes it, and from then on every call from its old region is refused with 421 rather than silently serving stale data.
Running the capture inline
Passing forceInline: true runs the snapshot capture and persistence synchronously instead of handing it to a Workflow, useful when a small workspace does not need the async path.
Keeping live sessions where they are
A workspace moving regions keeps its live PresenceHub websockets connected to the source region; only the last-known presence rows travel in the snapshot, not the open connections themselves.
Re-running status from any region
An operator checks status from whichever region they are working in, since rehoming's own routes stay reachable even after an EU pin takes effect.
When to use something else
An atomic, destructive move. Execution copies a snapshot and lets the target pull it; nothing is deleted from the source at that moment.
A cryptographically attested transfer. The snapshot's signed field is always false; there is no signature over what moved.
An audit-ledgered record of the move. Plan and execute write to the policy store and a config key, never to the coordination ledger ledger.blame reads.
Evidence
Guarantees
What it does, and what it does not
A module is a strong claim about a narrow thing. Rely on it for exactly what it is.
It does
An EU-bound workspace, once its move is recorded, refuses every non-rehoming ACP call from any other production region with 421.
A captured snapshot includes live policy-store keys, leases, D1 rows and Durable Object state, not just a region label.
Live PresenceHub connections are never migrated; only their last-known rows are copied into the snapshot.
It does not
That the transfer is cryptographically signed. signed is always false on the snapshot the module writes.
That the move is written to the ledger other modules use. It is recorded in the policy store and a config key, not through appendEvent.
That execute is itself gated on a human confirmation. Unlike remediation.blast's restore path, rehoming has no separate confirm step before execution.
Details
Build notes
Before you build
plan's own shape is flat
The plan action's response is not wrapped in a plan key; that wrapper only appears from the separate status action, which returns { plan: stored }.
Twenty-two policy paths move
A capture walks a fixed list of policy-store paths alongside leases, D1 rows and Durable Object state; nothing outside that list is captured.
Dev mode is exempt from the pin
The EU 421 pin only applies once ITML_REGION is a live production region; the local development region is exempt so a workspace can still be worked on locally after a planned move.
Limits and metering
execute writes an unsigned snapshot; there is no attestation of the transfer to verify later.
The move is not written to the coordination ledger; ledger.blame will not show it.
There is no restore action; the lifecycle is exactly plan, execute and status.
Access
API & MCP
REST and MCP
Authenticate with a workspace API key as a Bearer token. The base URL is https://api.intramedial.com.
REST endpoints
POST/api/v1/acp/rehoming/planPlan a region move and see what it covers.
POST/api/v1/acp/rehoming/executeCapture and persist the snapshot for the target region to pull.
GET/api/v1/acp/rehoming/statusRead the recorded plan and its status.
MCP actions
MCPcoordination.rehoming.planPlan a move as an MCP action.
MCPcoordination.rehoming.executeExecute a planned move as an MCP action.
MCPcoordination.rehoming.statusRead rehoming status as an MCP action.