openclaw/docs/platforms/mac/webchat.md
Jon Shapiro 92697edb7c fix(venice): add compat settings to prevent HTTP 400 errors
Venice's API doesn't support certain OpenAI-compatible parameters that
Clawdbot sends by default:

- `store`: Venice returns HTTP 400 with no body when this is present
- `developer` role: Not supported by Venice's API

This adds VENICE_COMPAT settings (supportsStore: false,
supportsDeveloperRole: false) to all Venice model definitions, both
from the static catalog and dynamically discovered models.

Fixes issues reported in PR #1666 where users experienced silent
failures (HTTP 400, no body) when using Venice models.

Co-authored-by: jonisjongithub <jonisjongithub@users.noreply.github.com>
Co-authored-by: Clawdbot <bot@clawd.bot>
2026-01-26 17:56:01 -08:00

1.3 KiB
Raw Blame History

summary read_when
How the mac app embeds the gateway WebChat and how to debug it
Debugging mac WebChat view or loopback port

WebChat (macOS app)

The macOS menu bar app embeds the WebChat UI as a native SwiftUI view. It connects to the Gateway and defaults to the main session for the selected agent (with a session switcher for other sessions).

  • Local mode: connects directly to the local Gateway WebSocket.
  • Remote mode: forwards the Gateway control port over SSH and uses that tunnel as the data plane.

Launch & debugging

  • Manual: Lobster menu → “Open Chat”.
  • Autoopen for testing:
    dist/Clawdbot.app/Contents/MacOS/Clawdbot --webchat
    
  • Logs: ./scripts/clawlog.sh (subsystem com.clawdbot, category WebChatSwiftUI).

How its wired

  • Data plane: Gateway WS methods chat.history, chat.send, chat.abort, chat.inject and events chat, agent, presence, tick, health.
  • Session: defaults to the primary session (main, or global when scope is global). The UI can switch between sessions.
  • Onboarding uses a dedicated session to keep firstrun setup separate.

Security surface

  • Remote mode forwards only the Gateway WebSocket control port over SSH.

Known limitations

  • The UI is optimized for chat sessions (not a full browser sandbox).