Pulse Board

v1.1.3

Universal operational digest for agent skill stacks. Every scheduled skill logs its outcome with log-append.sh. Twice daily, digest-agent.sh reads the log, c...

0· 411· 6 versions· 0 current· 0 all-time· Updated 11h ago· MIT-0

Install

openclaw skills install pulse-board

Pulse Board 📋

Operational heartbeat for your agent stack. Every cron job, one digest.


How it works

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

What this skill touches

Filesystem

PathAction
~/.pulse-board/Created by install.sh — config, logs, registry, locks
~/.pulse-board/config/pulse.yamlWritten once by install.sh, never overwritten on re-run
~/.pulse-board/logs/pending.logAppended by skill cron wrappers, cleared after each digest
~/.pulse-board/logs/last-digest.mdRaw pending.log snapshot — written by digest-agent.sh, never overwritten
~/.pulse-board/logs/last-delivered.mdThe composed/LLM message actually sent to the channel — written by deliver.sh
~/.pulse-board/registry/<skill>.confWritten by plug.sh, removed by unplug.sh

Crontab

ScriptAction
install.shAdds two digest cron entries (pulse-board-morning, pulse-board-evening)
plug.shAdds one wrapped cron entry per skill (# pulse-board:<skill>)
unplug.shRemoves the matching cron entry for a skill

All crontab writes are done via python3 subprocess. Existing entries are never modified.

Secrets env file

install.sh will ask for explicit confirmation before appending anything. It may add LLM_API_KEY=ollama and OPENCLAW_WORKSPACE=<path> if missing.

Network

  • Telegram: POST https://api.telegram.org/bot<token>/sendMessage
  • Discord: POST <your webhook URL>
  • OpenClaw agent: 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.
  • Log only: no network calls

Credentials

  • Bot token / webhook URL read from pulse.yaml or env vars
  • Secrets env sourced at runtime by digest-agent.sh, deliver.sh, and cron wrappers
  • Credentials never written to logs or included in digest output

Install

chmod +x ~/.openclaw/skills/pulse-board/*.sh
bash ~/.openclaw/skills/pulse-board/install.sh

Plug in a skill

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.


Remove a skill

bash ~/.openclaw/skills/pulse-board/unplug.sh --skill my-skill

Test

bash ~/.openclaw/skills/pulse-board/log-append.sh \
  --skill test --status OK --message "Hello Pulse Board"

bash ~/.openclaw/skills/pulse-board/digest-agent.sh

Log files

FileContains
~/.pulse-board/logs/last-digest.mdFull raw log from pending.log — preserved every run
~/.pulse-board/logs/last-delivered.mdThe 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.


Files

FilePurpose
install.shOne-time interactive setup
plug.shRegister a skill + wire cron
unplug.shRemove a skill + cron entry
log-append.shCalled by skill cron wrappers
digest-agent.shRuns on schedule, composes + delivers digest
deliver.shInternal delivery handler (Telegram/Discord/log)

Updating

cd ~/.openclaw/skills/pulse-board && git pull && chmod +x *.sh

Requirements

  • bash 4+, curl, python3 — standard on any modern Linux/macOS
  • openclaw CLI in PATH (for LLM digest; falls back to mechanical if absent)
  • No sudo. No root. No system path writes outside ~/.pulse-board/

Version tags

latestvk9744gz2syhsf4ramzj97b06x982ja08