Install
openclaw skills install pulse-boardUniversal operational digest for agent skill stacks. Every scheduled skill logs its outcome with log-append.sh. Twice daily, digest-agent.sh reads the log, composes a human-readable summary via your configured OpenClaw agent, delivers it to Telegram/Discord/log, and clears. Falls back to mechanical format if the agent call fails. install.sh handles everything interactively in one run. plug.sh wires any skill's cron job in one command.
openclaw skills install pulse-boardOperational heartbeat for your agent stack. Every cron job, one digest.
skill cron runs
→ log-append.sh appends one line to pending.log
→ digest-agent.sh (twice daily)
reads pending.log
writes full raw log to last-digest.md
calls openclaw agent to compose human-readable summary
(falls back to mechanical format if agent call fails)
delivers to Telegram / Discord / log
clears pending.log
prunes old detail logs
| Path | Action |
|---|---|
~/.pulse-board/ | Created by install.sh — config, logs, registry, locks |
~/.pulse-board/config/pulse.yaml | Written once by install.sh, never overwritten on re-run |
~/.pulse-board/logs/pending.log | Appended by skill cron wrappers, cleared after each digest |
~/.pulse-board/logs/last-digest.md | Raw pending.log snapshot — written by digest-agent.sh, never overwritten |
~/.pulse-board/logs/last-delivered.md | The composed/LLM message actually sent to the channel — written by deliver.sh |
~/.pulse-board/registry/<skill>.conf | Written by plug.sh, removed by unplug.sh |
| Script | Action |
|---|---|
install.sh | Adds two digest cron entries (pulse-board-morning, pulse-board-evening) |
plug.sh | Adds one wrapped cron entry per skill (# pulse-board:<skill>) |
unplug.sh | Removes the matching cron entry for a skill |
All crontab writes are done via python3 subprocess. Existing entries are never modified.
install.sh will ask for explicit confirmation before appending anything.
It may add LLM_API_KEY=ollama and OPENCLAW_WORKSPACE=<path> if missing.
POST https://api.telegram.org/bot<token>/sendMessagePOST <your webhook URL>openclaw agent --agent <id> --message <prompt> --json (local gateway call)
⚠️ The raw log is included in the prompt. If your agent uses a remote/cloud LLM, log content will be transmitted off-host. Use a local-only agent if log privacy is required.pulse.yaml or env varsdigest-agent.sh, deliver.sh, and cron wrapperschmod +x ~/.openclaw/skills/pulse-board/*.sh
bash ~/.openclaw/skills/pulse-board/install.sh
bash ~/.openclaw/skills/pulse-board/plug.sh \
--skill my-skill \
--cron "*/15 * * * *" \
--cmd "bash ~/.openclaw/skills/my-skill/run.sh"
Optional flags: --label, --ok, --error, --log
Or run plug.sh with no arguments for interactive discovery mode.
bash ~/.openclaw/skills/pulse-board/unplug.sh --skill my-skill
bash ~/.openclaw/skills/pulse-board/log-append.sh \
--skill test --status OK --message "Hello Pulse Board"
bash ~/.openclaw/skills/pulse-board/digest-agent.sh
| File | Contains |
|---|---|
~/.pulse-board/logs/last-digest.md | Full raw log from pending.log — preserved every run |
~/.pulse-board/logs/last-delivered.md | The composed message that was sent to the channel |
The raw log is written first, before the agent call and before delivery.
deliver.sh writes only to last-delivered.md and never touches last-digest.md.
To review the raw log on demand, ask your agent:
"show me last night's full digest log" — it will read last-digest.md.
⚠️ Privacy note: when LLM composition is enabled, the raw log is passed to your OpenClaw agent as prompt context. If that agent uses a remote/cloud LLM, log content will leave this host. Use a local-only agent (Ollama) if log privacy is required.
| File | Purpose |
|---|---|
install.sh | One-time interactive setup |
plug.sh | Register a skill + wire cron |
unplug.sh | Remove a skill + cron entry |
log-append.sh | Called by skill cron wrappers |
digest-agent.sh | Runs on schedule, composes + delivers digest |
deliver.sh | Internal delivery handler (Telegram/Discord/log) |
cd ~/.openclaw/skills/pulse-board && git pull && chmod +x *.sh
openclaw CLI in PATH (for LLM digest; falls back to mechanical if absent)~/.pulse-board/