--- name: task-board-realtime description: "Sync OpenClaw conversations to the task board in real time" homepage: https://docs.openclaw.ai/automation/hooks metadata: { "openclaw": { "events": ["message:received", "message:sent", "agent:bootstrap", "command:new", "command:reset", "command:stop"], "requires": { "config": ["workspace.dir"] }, }, } --- # Task Board Realtime Hook Automatically writes OpenClaw conversation activity into the local task board. ## Behavior - `message:received` - Creates (or reuses) one root node for the active conversation. - Adds each incoming message as a child node. - `agent:bootstrap` - Fallback path for direct `openclaw agent ...` turns. - Scans recent user messages in the session transcript and appends all unseen turns. - `message:sent` - Runs a post-response reconciliation pass for channels where direct incoming hooks are not emitted. - Resolves session id from `sessions.json` when needed, then backfills unseen user turns from transcript. - `command:new` and `command:reset` - Closes the current root node as completed. - Next message starts a new root node. - `command:stop` - End-of-turn reconciliation for CLI-style runs. - Backfills unseen user messages from transcript so the latest turn is not delayed. ## Config Configured under: `hooks.internal.entries.task-board-realtime` Supported fields: - `enabled` (boolean, default `true`) - `apiBaseUrl` (string, default `http://127.0.0.1:3001`) - `adminToken` (string, default `dev-task-board-token`) - `stateFile` (string, default `/task-board/.sync-state.json`) - `ignoreSlashCommands` (boolean, default `true`) - `maxRememberedMessages` (number, default `3000`)