pub
Use this skill when the user asks about creating adaptive interfaces, publishing content, or running live sessions on pub.blue.
Required CLI Version
Use the latest pub CLI release.
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
Setup
# 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.jsonwhenPUB_HOMEis setXDG_CONFIG_HOME/pub/config.jsonwhenXDG_CONFIG_HOMEis set~/.config/pub/config.jsonby default
PUB_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.
Core Commands
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 is built for adaptive interfaces — agents generate real-time UIs tailored to the user's task.
- Pubs are private by default.
- Reuse existing pubs for regular or repeated tasks. Use
pub listto check if a relevant pub already exists, thenpub update <slug>instead of creating a new one. Each user is limited to 10 pubs. - Title and description come from OG meta tags in the HTML. Always include
og:titleandog:descriptionin your<head>. The server extracts them automatically — there are no CLI flags for title/description.When updating a pub's content, always keep the OG tags accurate.<head> <meta property="og:title" content="My Pub Title"> <meta property="og:description" content="A short description of what this pub does"> </head> createsupports--slug.updatesupports--file,--public/--private,--slug.- Content is optional: a pub can be live-only.
UI Components
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>
- Components: daisyUI classes for all UI elements (
btn,card,input,table,alert,tabs,modal,drawer, etc.) with color/size/variant modifiers - Colors: daisyUI semantic tokens only (
primary,secondary,accent,neutral,base-*,info,success,warning,error) - Layout: Tailwind utilities (
flex,grid,gap-*,p-*, responsive prefixes) - Never: inline styles, arbitrary values (
text-[...]),z-index, emojis, hardcoded colors, branding/marketing copy
Going Live
Live is browser-initiated: the user opens the pub page; owner live mode connects automatically once the daemon is online.
- Start the agent daemon:
pub start --agent-name "<agent-name>"
Notes:
- Bridge mode comes from saved config (
pub config --autoorpub config --set bridge.mode=...). - Supported bridge modes:
openclaw,claude-code,claude-sdk,claude-channel, andopenclaw-like. - Enable verbose live daemon logging with
pub config --set bridge.verbose=truewhen startup or bridge delivery is hard to diagnose. - Standalone binary installs fall back to
claude-codewhen the Claude Agent SDK package is not locally importable. bridge.mode=claude-sdkrequires@anthropic-ai/claude-agent-sdkto be available in the local JS environment.bridge.mode=claude-channelexpects a running relay socket. Start it withpub channel-serverand override the socket path withclaude-channel.socketPathorPUB_CHANNEL_SOCKET_PATHwhen needed.bridge.mode=openclaw-likeuses named command profiles fromopenclawLike.profilesandopenclawLike.defaultProfile; profile args are passed before the final prompt.- Canvas command-manifest
agentexecutors require a local agent runtime:provider: "claude-code"needsclaude-code.pathorCLAUDE_CODE_PATH;provider: "openclaw"needsopenclaw.pathandopenclaw.sessionIdor matching env vars. - On success,
pub startprints the daemon log path and current runtime status. - On failure, inspect the reported log path first; if logs are sparse, enable
bridge.verbose=trueand retry.
- Check runtime status:
pub status
- Reply in chat:
Bridge-owned chat is the live-session contract. Reply with normal assistant text; the bridge forwards that text to the chat channel. For longer live-session work, regularly send concise, specific progress updates through chat while continuing:
pub write "Working on it"
Use channel-specific pub write for canvas and other non-chat outputs:
pub write -c canvas -f /tmp/view.html
- Stop daemon:
pub stop
- Validate end-to-end:
pub doctor
pub doctor --skip-chat --skip-canvas
Important:
writewaits for delivery confirmation.
Advanced Details (On Demand)
Only when needed:
- Show effective saved config:
pub config - Inspect runtime and bridge state:
pub status - Toggle verbose daemon logging:
pub config --set bridge.verbose=true - See command-specific options:
pub <command> --help
微信扫一扫