docs/platforms/mac/webchat.md
The macOS menu bar app embeds the WebChat UI as a native SwiftUI view. It connects to the Gateway and defaults to the primary session for the selected agent (main, or global when session.scope is global).
The full chat window is a native split view:
sessions.create./ opens slash-command autocomplete backed by commands.list, with arrow/Tab/Return/Escape keyboard navigation. Right-click a message to copy it.The anchored quick-chat panel from the menu bar keeps the compact single-column layout with inline pickers.
Manual: Lobster menu -> "Open Chat".
Auto-open for testing:
dist/OpenClaw.app/Contents/MacOS/OpenClaw --chat
(--webchat is accepted as a legacy alias.)
Logs: ./scripts/clawlog.sh (subsystem ai.openclaw, category WebChatSwiftUI).
chat.history, chat.send, chat.abort, chat.inject, and events chat, agent, presence, tick, health.chat.history returns a display-normalized transcript: inline directive tags are stripped from visible text, plain-text tool-call XML payloads (<tool_call>, <function_call>, <tool_calls>, <function_calls>, including truncated blocks) and leaked model control tokens are stripped, pure silent-token assistant rows such as exact NO_REPLY/no_reply are omitted, and oversized rows can be replaced with a truncated placeholder.~/Library/Application Support/OpenClaw/chat-cache.sqlite): cold opens paint the last known transcript immediately and refresh once the Gateway responds, and recent chats stay browsable while disconnected (sending stays disabled until the connection is back).