CLAWeb is a client-facing OpenClaw channel for web-style chat entry, with a browser reference client and a reference access host.
It keeps routing, session flow, reply flow, and memory strategy inside OpenClaw, while exposing a client-facing surface that can be consumed by web, app, desktop, or other clients.
If you are evaluating the project for the first time, the shortest useful summary is:
- OpenClaw owns routing, prompts, memory, and agent behavior
- CLAWeb defines the client-facing contract
access/frontdoor/is the reference host for/login,/history, and/wsclients/browser/is the first reference client, not the full product boundary
CLAWeb is for the gap between:
- OpenClaw's internal runtime / agent world
- client applications that need login, history, realtime messaging, reply rendering, and media handoff
In other words:
- OpenClaw owns routing, prompts, memory, and agent behavior
- CLAWeb owns the client-facing channel contract and reference implementations
- Channel runtime in
src/ - Reference access layer in
access/frontdoor/ - Browser reference client in
clients/browser/ - Example configs / sample data in
examples/ - Architecture / contract / integration docs in
docs/
The current repository baseline already validates:
hello -> ready -> messagewebsocket flow- browser-side normalization and dedupe for realtime + history replay
- stable history replay ordering (
ts,_idx) - reply linking and compact reply preview fallback
- safe-subset rich text rendering in the browser client
- session persistence and automatic reconnect after refresh / background interruption
- image upload flow with “keep original by default” behavior and oversized-image compression fallback
- OpenClaw-standard media handoff compatibility (
MEDIA:/mediaUrl)
This repository does not currently own:
- persona / prompt logic
- memory injection strategy
- Telegram or other private adapters
- full production auth / ops hardening
- arbitrary raw HTML or executable rich content
- video-generation or business-logic orchestration inside CLAWeb itself
index.tssrc/
This is the actual CLAWeb channel layer inside OpenClaw.
access/frontdoor/
This is the reference host for /login, /history, and /ws.
It is not the channel runtime itself.
clients/browser/
This is the first browser reference client. It should not be treated as the whole boundary of CLAWeb.
examples/openclaw.config.example.jsoncexamples/claweb-login.example.json
This directory is for example configs and sample data only.
If you are new to CLAWeb, start here first:
- Step-by-step setup guide:
docs/setup-guide.md - Troubleshooting:
docs/troubleshooting.md
The shortest local path is:
- Install dependencies:
npm install npm run typecheck
- Install and enable the plugin in OpenClaw:
openclaw plugins install /path/to/claweb --link openclaw plugins enable claweb - Configure
channels.clawebusingexamples/openclaw.config.example.jsonc. - Start the reference access host in
access/frontdoor/. - Open the browser UI and verify the canonical routes:
GET /POST /loginGET /historyWS /ws
Compatibility aliases may also exist:
POST /claweb/loginGET /claweb/historyWS /claweb/ws
- Setup guide (step-by-step):
docs/setup-guide.md - Troubleshooting:
docs/troubleshooting.md - Architecture:
docs/channel-architecture.md - Channel contract:
docs/channel-contract.md - Browser client integration:
docs/browser-client-integration.md - Project scope:
docs/project-scope.md - Docs index:
docs/README.md - Regression checklist:
docs/regression-checklist.md - State model:
docs/state-model.md
If you want the best current high-level summary of where the project stands, read:
- The repository is public-source oriented and currently tracked at the
0.2.xmilestone. - GitHub releases/tags are appropriate.
- npm publishing is intentionally not enabled.
package.jsonkeeps"private": trueto prevent accidental npm publish.
- Never commit real passphrases, tokens, or user mapping files.
- Keep only placeholder/example values in Git.
- Prefer local binding (
127.0.0.1) until explicit network hardening is in place. - See
SECURITY.md.
Apache-2.0