Iβm using an agent in the main session. Depending on circumstances and tasks we work on, I switch between the ways to communicate with the agent:
β’ Signal
β’ openclaw Tui
β’ openclaw webui
All three communication channels show different chat histories and different information depth for me on the screen. Is there a way the make that identical?
#One Session three different chat views
1 messages Β· Page 1 of 1 (latest)
Short answer: not fully, no.
Whatβs expected today:
- TUI + WebUI/Control UI are the closest thing to the source of truth, because they read the gateway-backed transcript.
- Signal is a messaging surface, so it will not mirror everything 1:1, especially richer transcript details like tool cards, system notices, and some long/normalized history rendering.
- Even TUI vs WebUI can differ a bit:
- TUI loads the latest 200 messages by default
- WebUI bounds/truncates
chat.historyfor stability
So if your goal is identical across all three, thatβs not really supported yet.
What Iβd recommend:
- Use TUI or WebUI as the canonical history view
- Use Signal as the convenience chat surface
- Make sure both UI surfaces are actually on the same session key (
main), otherwise theyβll drift for real
If you want to make TUI and WebUI closer, these help:
- TUI:
openclaw tui --history-limit <n> - WebUI: tune
gateway.webchat.chatHistoryMaxChars
Relevant docs:
- https://docs.openclaw.ai/concepts/messages
- https://docs.openclaw.ai/concepts/session
- https://docs.openclaw.ai/web/tui
- https://docs.openclaw.ai/web/webchat
If theyβre showing different actual conversations, not just different formatting/depth, paste:
openclaw --version
openclaw status
and I can help narrow down whether itβs session routing vs just UI behavior.
Overview
ββββββββββββββββββββββββ¬βββββββββββββββββ
β Item β Value
ββββββββββββββββββββββββΌβββββββββ
β OS β linux 6.12.75+rpt-rpi-2712 (arm64) Β· node 22.22.2
β Dashboard β http://127.0.0.1:18789/
β Tailscale β off
β Channel β stable (default)
β Update β pnpm Β· up to date Β· npm latest 2026.4.21
β Gateway β local Β· ws://127.0.0.1:18789 (local loopback) Β· reachable 61ms Β· auth token Β· BββPβ (βββ.βββ.βββ.βββ) app 2026.4.21 linux 6.12.75+rpt-rpi-2712
β Gateway self β BββPβ (βββ.βββ.βββ.βββ) app 2026.4.21 linux 6.12.75+rpt-rpi-2712
β Gateway service β systemd installed Β· enabled Β· running (pid 1317, state active)
β Node service β systemd not installed
β Agents β 6 Β· no bootstrap files Β· sessions 17 Β· default mβββ active 4m ago
β Memory β 48 files Β· 231 chunks Β· sources memory Β· plugin memory-core Β· vector ready Β· fts ready Β· cache on (375)
β Plugin compatibility β none
β Probes β skipped (use --deep)
β Events β none
β Tasks β 0 active Β· 0 queued Β· 0 running Β· 22 issues Β· audit 2 errors Β· 261 warn Β· 523 tracked
β Heartbeat β 30m (mβββ), 30m (fβββ), 30m (hβββ), 30m (kβββ), 30m (oβββ), 30m (vβββ)
β Sessions β 17 active Β· default glm-5.1:cloud (175k ctx) Β· 6 stores
ββββββββββββββββββββββββ΄ββββββ
Task maintenance: openclaw tasks maintenance --apply
Security audit
Summary: 1 critical Β· 2 warn Β· 1 info
CRITICAL Small models require sandboxing and web tools disabled
Small models (<=300B params) detected: - ollama/gemma4:31b-cloud (31B) @ agents.list.oβββ.model (unsafe; sandbox=off; web=[web_search, web_fetch]) Uncontrolledβ¦
Fix: If you must use small models, enable sandboxing for all sessions (agents.defaults.sandbox.mode="all") and disable web_search/web_fetch/browser (tools.deny=["group:web","browser"]).
WARN Reverse proxy headers are not trusted
Your status looks healthy, and youβre already on current stable (2026.4.21), so this is probably expected behavior, not a broken install.
Short version: there is no βmake Signal, TUI, and WebUI identicalβ switch right now.
Whatβs happening:
- They can map to the same underlying session
- But history is not fully synced back to every client
- TUI/WebUI are the closest to the gateway transcript
- Signal is just the messaging surface, so it will not show the same depth/tool details as the UI surfaces
Also, TUI and WebUI can still differ a bit:
- TUI loads a bounded history, default
200 - WebUI bounds/truncates
chat.historyfor stability
So the practical answer is:
- Use TUI or WebUI as your canonical history view
- Treat Signal as the lightweight chat endpoint
- Make sure both UI surfaces are on the same session key (
main) - If needed, increase:
- TUI history:
openclaw tui --history-limit <n> - WebUI history depth:
gateway.webchat.chatHistoryMaxChars
- TUI history:
If you want the closest possible setup, Iβd use:
- Signal for quick/mobile messaging
- WebUI or TUI for the real transcript / debugging / tool visibility
Docs:
If you want, I can help you with a best-effort config to make TUI and WebUI feel much closer, even though Signal still wonβt be fully identical.
Yep, that session list is the useful clue.
You appear to have one real main session for that agent, agent:mβββ:main, so this does not look like a routing bug. It looks like the same session rendered through three different clients.
So the mismatch is basically:
- Signal shows delivered chat messages only
- TUI shows the gateway transcript plus richer live/tool UI
- WebUI shows gateway
chat.history, but with truncation/normalization rules
In other words, same brain, different window.
Best-effort setup to make it closer:
- Keep TUI on
mainopenclaw tui --session main --history-limit <n>
- Keep WebUI on that same
mainsession
- Increase
gateway.webchat.chatHistoryMaxChars - Avoid
/new,/reset, or hopping sessions if you want parity
But even then, Signal still wonβt become identical to TUI/WebUI. That part is just current product behavior.
Also, the trustedProxies / denyCommands warnings are unrelated to this history mismatch.
So my answer is:
- Same session: probably yes
- Identical history rendering across Signal, TUI, WebUI: currently no
- Closest source of truth: TUI/WebUI, not Signal
If you want, I can sketch a best-effort config + launch command combo for βTUI and WebUI as close as possible.β
Yep, the extra rows donβt change the conclusion.
agent:fβββ:*andagent:hβββ:*are other agents- the relevant one for this discussion is still
agent:mβββ:main
So this looks like a current limitation, not a bad setup.
Bottom line: there is no supported way today to make Signal, TUI, and WebUI render one session identically.
You can only get closer by:
- keeping both UIs on the same session key
- raising TUI history with
--history-limit - increasing
gateway.webchat.chatHistoryMaxChars
But Signal parity still wonβt be exact.
So if you want true cross-surface identical transcript/history rendering, Iβd treat that as a feature request and file it here: