A visual control plane for OpenClaw automations
Design flows, manage channels, inspect runs, review approvals, and operate automations — all from a local-first workspace.
Note — This repository is the wrapper layer, not the OpenClaw runtime itself. OpenClaw remains the execution substrate and capability provider. This project adds the builder, persistence, workspace APIs, orchestration records, and operator-facing surfaces around it.
| Workspace Dashboard | Flow Builder |
![]() |
![]() |
| Feature | Description | |
|---|---|---|
| Canvas | Visual flow builder | React Flow canvas with node palette, config panels, publish, and run inspection |
| Durable | Control plane | Flows, versions, runs, approvals, workspace state, automation ledgers, and memory records |
| Operator | Multi-surface UI | Channels, automation, and ops views — the canvas isn't the whole product |
| OSS | Local-first mode | AUTH_MODE=disabled so contributors can run the app with zero sign-in friction |
| Typed | Shared schemas | TypeBox contracts across web and adapter keep builder and runtime aligned |
| Extensible | Plugin architecture | Node SDK, manifest-based extensions, and catalog-driven node metadata |
OpenClaw Wrapper is a three-tier TypeScript monorepo:
┌──────────────────┐
│ apps/web │ Next.js 15 · React 19 · React Flow
│ :3000 │ Workspace UI, builder, channels, ops
└────────┬─────────┘
│ tRPC
┌────────▼─────────┐
│ apps/adapter │ Fastify · tRPC · Drizzle · BullMQ
│ :4000 │ DB, runs, approvals, memory, triggers
└────────┬─────────┘
│ WebSocket
┌────────▼─────────┐
│ OpenClaw Gateway │ External runtime · agents · skills
│ :18789 │ (not included — runs separately)
└──────────────────┘
| Surface | What it does |
|---|---|
| Builder | Design, save, publish, and inspect automation flows |
| Channels | Manage wrapper-owned channel profiles (WhatsApp, Telegram, Slack, Discord) and view runtime state |
| Automation | Review task-flow progression, retries, children, and managed automation history |
| Ops | Gateway status, runtime inventory, approvals, activity, plugin diagnostics, and health signals |
- Node
22.16.0+ - pnpm via Corepack
- Docker for local Postgres + Redis
- A running OpenClaw gateway
# Enable pnpm through Corepack
corepack enable
# Install dependencies
pnpm install
# Copy environment templates
cp apps/adapter/.env.example apps/adapter/.env
cp apps/web/.env.example apps/web/.env.local
# Start local infrastructure (Postgres + Redis)
pnpm infra:up
# Apply database migrations
pnpm db:migrate
# Start the dev servers
pnpm devMake sure the OpenClaw gateway is running on
ws://127.0.0.1:18789before starting, or updateGATEWAY_WS_URLinapps/adapter/.env.
Open http://localhost:3000 — in local mode, the app drops you straight into the workspace.
| Service | Port |
|---|---|
| Web | 3000 |
| Adapter | 4000 |
| Postgres | 55433 |
| Redis | 56379 |
| Gateway WS | 18789 |
| Mode | Use case | Behaviour |
|---|---|---|
AUTH_MODE=disabled |
Local dev, OSS, single-user | Auto-creates a local owner, opens straight into workspace |
AUTH_MODE=required |
Team / hosted deployments | Sign-in, sessions, invites, and multi-user controls enabled |
The adapter defaults to disabled unless NODE_ENV=production.
apps/
web/ Next.js workspace UI
adapter/ Fastify + tRPC + Drizzle + BullMQ runtime layer
packages/
schemas/ Shared TypeBox wire schemas
memory-sdk/ Shared memory query + status helpers
openclaw-client/ WebSocket client wrapper with reconnect/backoff
node-sdk/ External plugin and node contract surface
tsconfig/ Shared tsconfig presets
infra/
docker-compose.yml
| Layer | Responsibility |
|---|---|
| Web | Renders workspace surfaces, talks only to the adapter, manages builder UI and operator workflows |
| Adapter | Owns database, tRPC APIs, trigger endpoints, flow execution, waits/resume, gateway connection |
| Gateway | Provides upstream runtime, agents, skills, and channel capabilities (external dependency) |
| Command | Description |
|---|---|
pnpm dev |
Run adapter + web in parallel |
pnpm build |
Build the full workspace |
pnpm test |
Run Vitest across packages |
pnpm typecheck |
TypeScript checks across the monorepo |
pnpm lint |
Biome lint + format check |
pnpm infra:up |
Start local Postgres and Redis |
pnpm infra:down |
Stop local Postgres and Redis |
pnpm db:migrate |
Apply checked-in adapter migrations |
pnpm db:generate |
Generate a new migration after schema changes |
pnpm db:push |
Push schema changes directly to a local database |
- The wrapper depends on an external OpenClaw gateway
- Some pairing and operational paths are still partial
- Published flow execution does not support cycles yet
- Browser and tool support is intentionally narrower than full browser automation
- Plugin management is stronger on discovery and diagnostics than on operator controls
- Keep shared contracts aligned through
packages/schemas - Treat runtime, workspace, and canvas concepts as distinct on purpose
- Prefer durable records over transient in-memory orchestration
- Keep new wrapper features conceptually close to upstream OpenClaw where possible
| Document | Description |
|---|---|
| Configuration & Security | Env vars, deployment settings, secret handling |
| Database Workflow | Migrations, schema changes, Drizzle workflow |
| Local Mode Guide | Running the wrapper in OSS / local-first mode |
| Plugin Development | Authoring extensions and validating manifests |
| End-to-End Guide | Full product and technical walkthrough |
| Contributing Guide | Architecture guidance for contributors |
| Release Process | Changelog and release-note expectations |
Contributing · Code of Conduct · Security · Changelog
MIT © OpenClaw Wrapper contributors

