From 65aa9627659a52f1a6cca7bdb2a882a31970ca8f Mon Sep 17 00:00:00 2001 From: Roger Chappel Date: Wed, 3 Jun 2026 19:43:55 +1000 Subject: [PATCH] fix(talk): pass transport=gateway-relay to realtimeTalkSession The session route was calling realtimeTalkSession() without specifying transport, causing talk.client.create to return a Webrtc session (no relaySessionId) instead of a gateway-relay session. This broke the realtime relay route with 502 errors. Fixes protocol mismatch from openclaw May 28 rewrite that removed talk.realtime.relay* RPC methods in favor of talk.session.* session- scoped transport model. --- docs/examples/mobile/org.mobile.local.json | 43 +++++++++++++++++++ .../[id]/talk/realtime/session/route.ts | 1 + 2 files changed, 44 insertions(+) create mode 100644 docs/examples/mobile/org.mobile.local.json diff --git a/docs/examples/mobile/org.mobile.local.json b/docs/examples/mobile/org.mobile.local.json new file mode 100644 index 00000000..bb6dd916 --- /dev/null +++ b/docs/examples/mobile/org.mobile.local.json @@ -0,0 +1,43 @@ +{ + "$schema": "./org.mobile.schema.json", + "app": { + "slug": "AxisLabs crewcmd", + "displayName": "AxisLabs CrewCmd", + "iosBundleId": "com.axislabs.crewcmd", + "androidApplicationId": "com.axislabs.crewcmd" + }, + "branding": { + "orgName": "Axis Labs", + "profileId": "axislabs-prod", + "primaryColor": "#0A7B83", + "secondaryColor": "#F7B500", + "iconPath": "./branding/icon.svg", + "splashPath": "./branding/splash.svg" + }, + "distribution": { + "channel": "private-enterprise", + "ios": { + "teamName": "Axis Labs", + "distributionNote": "Use Apple Business Manager Custom App or MDM for employee-only rollout." + }, + "android": { + "distributionNote": "Use Managed Google Play private app or MDM-managed APK deployment." + }, + "managedMetadataLabel": "Axis Labs CrewCmd Mobile" + }, + "server": { + "defaultBaseUrl": "https://taim4.tail82c33.ts.net:3000", + "bootstrapMode": "qr-or-url", + "lockToSingleServer": true, + "tailscaleRequired": true + }, + "deepLinks": { + "scheme": "crewcmd", + "host": "mobile" + }, + "managedConfig": { + "allowManualServerOverride": false, + "supportEmail": "hello@axislabs.dev", + "environmentLabel": "Production" + } +} diff --git a/src/app/api/runtimes/[id]/talk/realtime/session/route.ts b/src/app/api/runtimes/[id]/talk/realtime/session/route.ts index d2817f4c..2b1728ab 100644 --- a/src/app/api/runtimes/[id]/talk/realtime/session/route.ts +++ b/src/app/api/runtimes/[id]/talk/realtime/session/route.ts @@ -46,6 +46,7 @@ export async function POST( const client = await getGatewayClientForRuntime(runtime.id); const session = await client.realtimeTalkSession({ + transport: "gateway-relay", sessionKey: readOptionalString(body.sessionKey), provider: readOptionalString(body.provider), model: readOptionalString(body.model),