Mission Control for OpenClaw โ a project-based web interface for managing your AI agent.
Clawdify gives your OpenClaw agent a proper workspace: project-based chats with persistent memory, kanban boards, a file browser, and multi-device access. Think of it as the UI layer your agent deserves.
- Project organization โ separate workspaces with their own conversations, files, tasks, and context memory
- Chat โ talk to your agent with full project awareness (CONTEXT.md, file manifest, sub-project inheritance)
- Kanban โ drag-and-drop task management, sub-tasks, sort ordering
- File browser โ browse, edit, create files in the OpenClaw workspace. Hidden files toggle, inline rename
- Docs tab โ rendered markdown viewer for project documentation
- Voice messages โ record and send audio, transcribed via local Whisper STT
- PWA โ installs as a native app on mobile and desktop
- Multi-device sync โ SSE-based real-time sync across all connected devices
- Instance naming โ custom name per install (useful when running multiple Clawdify instances)
- Any model โ works with any model provider supported by OpenClaw (Anthropic, OpenAI, Google, local models via Ollama, etc.)
| Requirement | Why |
|---|---|
| OpenClaw | The AI agent runtime. Clawdify is its frontend. Must be running on the same machine. |
| Node.js 18+ | Build and run Clawdify. v22+ recommended. |
| Tailscale (recommended) | Secure remote access from phone/laptop without exposing ports. Required for PWA install (needs HTTPS). |
You just installed OpenClaw and want a project workspace.
# 1. Clone and install
git clone https://github.com/rcostica/clawdify.git ~/clawdify
cd ~/clawdify && npm install
# 2. Run setup wizard (auto-detects gateway token, workspace path, enables chat endpoint)
npm run setup
# 3. Restart gateway to apply the config change
openclaw gateway restart
# 4. Build and start
npm run build
npm startOpen http://localhost:3000. A General project is created automatically โ click it and start chatting.
Your agent has been running via Telegram, Slack, or CLI. There are workspace files and project folders.
# 1โ4: Same as above
git clone https://github.com/rcostica/clawdify.git ~/clawdify
cd ~/clawdify && npm install
npm run setup
openclaw gateway restart
npm run build
npm startThen in the browser:
- Go to Settings โ Discover Projects โ Scan Workspace
- Clawdify finds all folders in your OpenClaw workspace
- Check which folders should become projects
- Drag folders onto other folders to set up parent/child hierarchy
- Click Create Projects โ done
๐ก Sub-project tip: If your agent created
project1/seo/,project1/content/, andproject1/ads/as separate folders, drag seo/content/ads onto project1 to import them as sub-projects.
git clone https://github.com/rcostica/clawdify.git
cd clawdify
cp .env.example .env
# Edit .env with your gateway token
docker compose up -dSet
OPENCLAW_GATEWAY_URL=http://host.docker.internal:18789to reach the host's gateway.
Manual Setup (if you want full control)
git clone https://github.com/rcostica/clawdify.git ~/clawdify
cd ~/clawdify && npm installCreate .env:
OPENCLAW_GATEWAY_URL=http://localhost:18789
OPENCLAW_GATEWAY_TOKEN=your-token-here # find in ~/.openclaw/openclaw.json โ gateway.auth.token
OPENCLAW_WORKSPACE_PATH=/home/you/.openclaw/workspace
CLAWDIFY_SESSION_SECRET=$(openssl rand -hex 32)
CLAWDIFY_PIN=1234 # optional
PORT=3000Enable the chat endpoint in ~/.openclaw/openclaw.json (add to the gateway object):
{
"gateway": {
"http": {
"endpoints": {
"chatCompletions": {
"enabled": true
}
}
}
}
}openclaw gateway restart
npm run build && npm startnpm run setup is a zero-dependency Node.js script that:
- Detects your gateway token from
~/.openclaw/openclaw.json - Detects your workspace path and sessions path
- Enables the
chatCompletionsendpoint in the gateway config (disabled by default in OpenClaw) - Generates a session secret
- Asks for PIN and port (only 3 prompts)
- Writes a complete
.envfile - Optionally creates a systemd user service
After setup, you must run openclaw gateway restart to apply the config change.
Clawdify binds to localhost:3000 by default. Tailscale extends access to your other devices securely:
- Install Tailscale on the server and your phone/laptop
- Both devices join the same Tailscale network
- Access Clawdify at
http://your-server:3000from any device
PWA installation requires HTTPS. Tailscale Serve provides free auto-renewing certificates:
sudo tailscale serve --bg --https 8443 http://localhost:3000Clawdify is now at: https://your-machine.tailnet-name.ts.net:8443
With HTTPS set up:
- Android: Chrome โ Menu (โฎ) โ "Install app" (not "Add to Home Screen")
- iOS: Safari โ Share โ "Add to Home Screen"
โ ๏ธ On Android, "Add to Home Screen" creates a browser bookmark. "Install app" creates a real PWA (fullscreen, no address bar). You need HTTPS for the PWA option.
The setup wizard can create this for you, or do it manually:
# ~/.config/systemd/user/clawdify.service
[Unit]
Description=Clawdify
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/you/clawdify
ExecStart=/usr/bin/npm start
Restart=always
RestartSec=3
Environment=NODE_ENV=production
[Install]
WantedBy=default.targetsystemctl --user daemon-reload
systemctl --user enable --now clawdify.serviceโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Any Device โโโโโโถโ Tailscale โโโโโโถโ Your Machine โ
โ (Phone, โHTTPSโ (encrypted โ โ โ
โ Laptop) โ โ tunnel) โ โ โโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ Clawdify โ โ
โ โ :3000 โ โ
โ โโโโโโโฌโโโโโโ โ
โ โ HTTP โ
โ โโโโโโโผโโโโโโ โ
โ โ OpenClaw โ โ
โ โ Gateway โ โ
โ โ :18789 โ โ
โ โโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโ
- Clawdify = Next.js app on the same machine as OpenClaw
- Gateway token stays server-side (
.env) โ never sent to the browser - Tailscale handles encryption and access control
- SQLite stores projects, tasks, messages, and settings locally
The gateway's chatCompletions endpoint is disabled (this is the default in OpenClaw).
Fix: Run npm run setup again (it auto-enables it), then openclaw gateway restart. Or manually edit ~/.openclaw/openclaw.json โ set gateway.http.endpoints.chatCompletions.enabled to true.
Check Settings in Clawdify โ it shows the endpoint status with a green/red indicator.
Database tables auto-create on startup. Restart Clawdify. If it persists, delete the DB and restart:
rm ~/.clawdify/clawdify.db
# restart clawdifyTest the gateway directly:
curl -X POST http://localhost:18789/v1/chat/completions \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":"openclaw:main","messages":[{"role":"user","content":"hi"}]}'If this returns 405 โ endpoint disabled (see above). If it hangs โ gateway may not have an active agent session yet.
- Both devices must be on the same network (or Tailscale)
- Check the PIN is correct
- Clear browser cache if you recently updated
| Variable | Required | Default | Description |
|---|---|---|---|
OPENCLAW_GATEWAY_URL |
Yes | http://localhost:18789 |
Gateway URL |
OPENCLAW_GATEWAY_TOKEN |
Yes | โ | Gateway auth token |
OPENCLAW_WORKSPACE_PATH |
Yes* | โ | OpenClaw workspace directory |
CLAWDIFY_SESSION_SECRET |
Yes | โ | Session encryption key (32+ chars) |
CLAWDIFY_PIN |
No | โ | Login PIN (empty = no auth) |
CLAWDIFY_DB_PATH |
No | ~/.clawdify/clawdify.db |
SQLite database path |
OPENCLAW_SESSIONS_PATH |
No | โ | Session transcripts (for activity feed) |
PORT |
No | 3000 |
Server port |
* Auto-detected by setup wizard. Required for file browser and project discovery.
- Next.js 16 + TypeScript
- Tailwind CSS v4 + shadcn/ui
- better-sqlite3 + Drizzle ORM
- iron-session for encrypted cookies
MIT