Features
The complete feature list, grouped by where you meet it. Each entry links to the page and section with the full explanation, the valves that control it, and a screenshot of it (or, for the parts with nothing on screen, the log lines that show them).
Applies to: Pipe, Action, Filter
Markers
Everything here works as soon as the Pipe is installed, except entries marked:
- needs agent setup: the integration provides the mechanism, but your agent has to know the convention, see agent skills;
- separate function: ships as its own file and installs separately, see Status button and thinking control.
In the chat
- Real-time streaming: replies appear token by token, not all at once at the end
- Native tool cards: tool calls render as Open WebUI's own two-phase cards, expandable to their input and output
- Sub-agent cards: a sub-agent the agent starts shows as a card named after it, with the head of its task and whether it started
- Failed tools marked: failed calls are labelled live, and a call that never returns is closed rather than left spinning
- Embed your own page in tool-using replies: a hook that adds a page you serve to a reply when it makes a matching tool call; the Pipe ships no such page
- Take-over link: when the agent hands you a page to do a step yourself (a login, a CAPTCHA) and waits, the reply gets a Take control link that opens it in a new tab
- Questions as cards (needs agent setup): agent questions become Open WebUI's question cards (text, yes/no, single choice, multi-select by number), a masked dialog for a secret, and survive a reload
- Plugin approvals in the chat: a tool call a plugin holds for approval, in an owner's chat, asks you in the question card with the decisions the plugin allows (Deny, Allow once, Always allow), instead of failing with "no approval route"; guests' chats and channel threads are denied at once, sub-agents are not asked
- Per-chat thinking control (separate function): a toggle in the composer sets the reasoning level per chat, offering only the levels your models support
- Images and files from the agent (needs agent setup):
MEDIA:files, and images an agent's own image tool made, are uploaded to the Open WebUI Files API and attached natively - Image input: images you attach are forwarded to the agent
- Voice calls: a message you speak in Open WebUI's voice mode reaches the agent with a note that the reply will be read aloud, so it answers in short spoken sentences without markup
- Composer toggles: Open WebUI's web search, code interpreter, tools and integrations toggles do not reach the agent, which uses only the tools your Gateway gives it
- Slash commands in the / menu: the Gateway's slash commands as prompts in Open WebUI's
/menu, kept in sync, without touching your own prompts - Usage and goal line: context, rate-limit and goal state under every reply
- Context compaction marked: when the Gateway compacts the session mid-reply, the reply shows a collapsed "Context compacted" block where it happened
- Chat titles: chats name themselves, on a separate agent so it never queues behind your conversation
Sessions and models
- Persistent sessions: one stable OpenClaw session per Open WebUI chat, so the agent remembers context across messages
- Edit, Regenerate, Fork and Clone: when you edit, regenerate, switch branches or delete messages, the agent is told what the chat no longer shows; a forked or cloned chat starts with the copied messages
- Several models side by side: each OpenClaw model you send one message to answers in its own session, on its own model, and going on after you pick a reply continues in the right one
- Model picker: one entry per model your Gateway knows, discovered with
models.list - Picker size cap: keeps the picker from flooding with every model the Gateway knows
- Owner users: only the users you list act with the Gateway owner's rights
In channels
- Threads in channels: a mention in an Open WebUI channel gets its answer in a thread, one session shared by everyone in it, with what was said before the mention
- Following a thread: the agent answers a message in its thread that is meant for it without a new mention, and stays out of the rest
Status
- Status dialog (separate function): context, rate limits, background work and sub-agents, fetched live on demand, each section on its own, from the message toolbar or the composer
- Compact from the dialog: run
/compacton the session and watch the numbers change - Sub-agent drawer: each sub-agent's run as a read-only chat, its tool calls as cards, growing while it runs
- Backend diagnostics: prefixed logs for every reply, save decision and tool call
Replies the agent starts
- Cron jobs and
sessions_send: a reply the agent starts lands in your chat as a normal reply, live, with tool cards, and no message from you - Sub-agent results: a finished sub-agent's result reaches the chat through its parent's reply, or as a Sub-agent card when the parent stays silent
- Open tabs update live: the reply appears in an open tab without a reload, and Stop works on it
Reliability
- Persistent connection: one shared WebSocket, reconnecting on its own with backoff
- Messages while the agent works: a message you send mid-run is in the chat at once, with no queue to click, and gets a real reply once the current work is done
- Reload and restart safety: reload mid-reply and the partial answer is still there; a restart of Open WebUI or the Gateway mid-reply continues the same reply
- No split replies: a reply whose stream ends early is finished in place, rebuilt from the run's transcript, instead of leaving its tail in a second message
- Recovery from lost events: lost events are filled in from the Gateway's transcript, and silence is never mistaken for the end
- Stop that actually stops: aborts the run and kills the tool that is still running
- Send now keeps the run: Send now continues the running reply and then answers your message, instead of killing it
- Clean redeploys: a redeploy never leaves a duplicate connection writing every message twice
- Background tasks skipped: Open WebUI's own title, tag, follow-up, emoji and autocomplete calls never reach your agent
- Continue Response handled: Open WebUI's Continue button leaves a finished reply as it was and says why, instead of sending the agent its own reply
- Actionable errors: failures name the valve, the config key and the command that fixes them
Setup
- Ed25519 device auth: challenge/response handshake, with a device identity that survives restarts and reinstalls
- Installer: wizard, in-place updates that keep your valves, backups, healthcheck
- Valves: everything configurable from the Open WebUI admin UI, no file access and no restart
Three functions
| File | Open WebUI type | Purpose |
|---|---|---|
openclaw_pipe.py | Pipe (manifold) | The chat integration: almost everything above |
openclaw_status_action.py | Action | The toolbar button (a crab claw) and the dialog, titled Claw; reuses the Pipe's live connection and device identity, so there is no second pairing |
openclaw_thinking_filter.py | Filter | The per-chat thinking toggle in the composer. Optional, and imports nothing but the standard library and pydantic |
All three are generated from the same src/openclaw_pipe_pkg/ source fragments. Contributing: Development.