Launch a bound program to RUN in a region (§2). Non-blocking: resolves once the frame is created and bound, with a LaunchHandle — or a typed { ok:false, code } on refusal (§8), NEVER a throw for an ordinary refusal (so a launcher branches on code without a try/catch). The launched app runs under its OWN grants; the launcher's authority does not flow to it (R-SAL-4).

const h = await launch({ task: 'open-project' }, { region: 'stage', input: { dir: capDir({ mountId: 'space:abc', relPath: 'proj' }, { mode: 'ro' }) }, }); if ('ok' in h && h.ok === false) { ...handle h.code... } else { h.onDismiss(() => ...); }

Off-host (plain vite dev — no host transport) it rejects with a plain "no host transport" error: there is no host to run a launch in.