Install
openclaw skills install pubCreate adaptive interfaces and real-time experiences via the pub CLI, with live P2P browser sessions.
openclaw skills install pubUse this skill when the user asks about creating adaptive interfaces, publishing content, or running live sessions on pub.blue.
Use pub CLI 0.11.17+.
Source: https://github.com/xmanatee/pub (MIT license)
pub --version
# Install from GitHub Releases:
# https://github.com/xmanatee/pub/releases/latest
# Or via install script:
curl -fsSL https://pub.blue/install.sh | bash
# Or self-update an existing install:
pub upgrade
# One-time auth
pub config --api-key pub_KEY
# or
echo "pub_KEY" | pub config --api-key-stdin
Key source: https://pub.blue/agents
Pub resolves config from:
PUB_HOME/config/config.json when PUB_HOME is setXDG_CONFIG_HOME/pub/config.json when XDG_CONFIG_HOME is set~/.config/pub/config.json by defaultPUB_HOME must be an absolute path. It also roots Pub data, state, runtime sockets, and workspaces.
For OpenClaw bridge mode, set an explicit workspace before pub config --auto, for example OPENCLAW_WORKSPACE=/absolute/path/to/workspace.
pub create page.html
pub create --slug demo page.html
cat page.html | pub create
pub get <slug>
pub get <slug> --content
pub update <slug> --file next.html
pub update <slug> --public
pub list
pub delete <slug>
Notes:
pub list to check if a relevant pub already exists, then pub update <slug> instead of creating a new one. Each user is limited to 10 pubs.og:title and og:description in your <head>. The server extracts them automatically — there are no CLI flags for title/description.
<head>
<meta property="og:title" content="My Pub Title">
<meta property="og:description" content="A short description of what this pub does">
</head>
When updating a pub's content, always keep the OG tags accurate.create supports --slug.update supports --file, --public/--private, --slug.DaisyUI 5 + Tailwind CSS 4 via CDN:
<link href="https://cdn.jsdelivr.net/npm/daisyui@5" rel="stylesheet" type="text/css" />
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
btn, card, input, table, alert, tabs, modal, drawer, etc.) with color/size/variant modifiersprimary, secondary, accent, neutral, base-*, info, success, warning, error)flex, grid, gap-*, p-*, responsive prefixes)text-[...]), z-index, emojis, hardcoded colors, branding/marketing copyLive is browser-initiated: the user opens the pub page; owner live mode connects automatically once the daemon is online.
pub start --agent-name "<agent-name>"
Notes:
pub config --auto or pub config --set bridge.mode=...).openclaw, claude-code, claude-sdk, claude-channel, and openclaw-like.pub config --set bridge.verbose=true when startup or bridge delivery is hard to diagnose.claude-code when the Claude Agent SDK package is not locally importable.bridge.mode=claude-sdk requires @anthropic-ai/claude-agent-sdk to be available in the local JS environment.bridge.mode=claude-channel expects a running relay socket. Start it with pub channel-server and override the socket path with claude-channel.socketPath or PUB_CHANNEL_SOCKET_PATH when needed.agent executors require a local agent runtime:
provider: "claude-code" needs claude-code.path or CLAUDE_CODE_PATH;
provider: "openclaw" needs openclaw.path and openclaw.sessionId or matching env vars.pub start prints the daemon log path and current runtime status.bridge.verbose=true and retry.pub status
Bridge-owned chat is the live-session contract. Reply with normal assistant text; the bridge forwards that text to the chat channel.
Do not use pub write for chat messages.
Use pub write only for non-chat outputs:
pub write -c canvas -f /tmp/view.html
pub stop
pub doctor
pub doctor --skip-chat --skip-canvas
Important:
write waits for delivery confirmation.Only when needed:
pub configpub statuspub config --set bridge.verbose=truepub <command> --help