Heartbeat-gateway: Event-driven replacement for cron polling in OpenClaw

✍️ OpenClawRadar📅 Published: March 28, 2026🔗 Source
Heartbeat-gateway: Event-driven replacement for cron polling in OpenClaw
Ad

What heartbeat-gateway does

Heartbeat-gateway is an event-driven replacement for cron-based heartbeat polling in OpenClaw. Instead of polling every 30 minutes to check if anything changed, it receives webhooks from external tools and processes them immediately.

Key details from the source

The tool was built to address high API costs from OpenClaw's default heartbeat polling. At default settings, polling every 30 minutes costs approximately $86/month. The author notes that while OpenClaw has added lightContext and isolatedSession optimizations, these still involve polling rather than event-driven architecture.

Heartbeat-gateway works by:

  • Receiving webhooks from GitHub, Linear, and PostHog
  • Running a zero-cost pre-filter with repo/project/branch scoping and always-drop lists
  • Classifying qualifying events against your SOUL.md with a lightweight LLM call (~200 tokens)
  • Writing actionable items directly to HEARTBEAT.md for your agent to read

Performance improvements:

  • Cost reduction: ~$4.50/month vs ~$86/month
  • Latency improvement: under 2 seconds vs up to 30 minutes

Technical specifications:

  • Version: v0.1.1
  • License: Apache-2.0
  • Language: Python 3.11+
  • Status: Live in production with 134 tests passing
Ad

Limitations and future plans

The tool is not a complete replacement for cron - temporal tasks like daily digests and scheduled synthesis still need cron. It specifically handles reactive events that tools can push via webhooks.

Current limitations include manual setup and rough onboarding. The author plans to build a "gateway doctor" config validator and easier deploy options if adoption grows.

Areas for feedback

The author is seeking feedback on:

  • The SOUL.md classifier interface - whether reading the first 500 characters makes sense or if a different context strategy would be better
  • Pre-filter scoping - whether repo/project/branch level control is sufficient or if event-type level control is needed
  • Additional webhook sources - currently supports GitHub, Linear, PostHog; considering Slack, Sentry, Jira next

Architecture notes: The author is a PM, not a software engineer, and built this with Claude Code. The code is functional and tested but may have patterns that experienced Python developers could improve.

📖 Read the full source: r/openclaw

Ad

👀 See Also