Files

40 lines
4.3 KiB
YAML

name: heartbeat2
title: HeartBeat 2.0
repo: https://github.com/electricsheephq/heartbeat2
sha: 8a1fc6efe9ad340941d92d7bf39583e8dc2dc8bc
description: "Your agent follows up on its own: timed check-ins, recurring checks and watchers that wake it in the same chat when something changes. You (with /pulse) or your agent (with the pulse tool) arm follow-ups at a time, recurring checks, a check-in after a long silence, or deterministic watchers on a file, process, URL, read-only command or Hermes event (kanban, subagent, API error, reactions). A wake is a turn in the same messaging DM that armed it, on that chat's own model: no side model, cron session or subagent. Watchers decide without a model call; the agent answers each wake with a structured verdict (notify or stay silent, never a typed sentinel); a no-op governor slows, then pauses pointless wakes and asks once. Every guardrail is a user setting (quiet hours, daily caps, unanswered mute, floors, lifetimes) that the agent works inside and can never widen. A one-time reminder you ask for in chat bypasses the unanswered mute and daily caps; HeartBeat 2.0 grants that only in a turn that carries your message. Arming returns a one-line receipt saying when the wake will really fire, and a wake that could never fire before it expires is refused. It delivers to messaging-gateway DMs only and needs plugins.entries.heartbeat2.allow_gateway_injection: true. Ships the plugin skill `heartbeat2:heartbeat2-report-problem`, which drafts a bug report and files it with the GitHub CLI only after the user approves the exact text. Disclosure — wakes and watchers run full turns on the conversation's own model, billed like any message, at your conversation's context size, with the conversation's normal tools and approval prompts; the agent can arm wakes and watchers itself unless you set agent_can_create to ask_first or no; command watchers run allowlisted read-only commands (default gh pr view/checks, gh run view/list, git ls-remote/status/log) without an approval prompt, with no shell, a sanitized environment (no provider keys, GH_TOKEN or GITHUB_TOKEN) and the process group killed after 30 s, can use your stored git/gh credentials, and `git ls-remote <url>` / `gh -R` can contact any host your machine can reach; URL watchers make the GET requests you or the agent configured, without URL credentials, cookies, auth headers or proxies, always refuse cloud-metadata addresses and refuse private or local addresses unless url_allow_private is on; file watchers refuse paths Hermes blocks from reading; notes, summaries and event payloads are stored in plaintext in the profile's plugin-data; no telemetry."
maintainer: 100yenadmin
tier: community
category: automation
requires_hermes: ">=0.21.6"
docs_url: https://github.com/electricsheephq/heartbeat2#readme
version: "0.2.2"
image: https://raw.githubusercontent.com/electricsheephq/heartbeat2/8a1fc6efe9ad340941d92d7bf39583e8dc2dc8bc/docs/media/banner.png
readme: true
platforms: [linux, macos]
known_issues:
- "A wake turn that fails at the provider shows Hermes's own failure notice; the plugin cannot suppress it (NousResearch/hermes-agent#136749). HeartBeat 2.0 backs all wakes off until a model call on the profile succeeds."
- "notify=false silences the final reply; platforms that show tool progress by default (Discord, WhatsApp, Matrix) still show a progress bubble per wake turn unless display.platforms.<p>.tool_progress is off (quiet injection requested upstream: NousResearch/hermes-agent#136825)."
- "Delivers only to messaging-gateway DMs by default (dm_only); CLI, TUI, Desktop, API-server and cron arming are refused until Hermes core supports silent injected turns there."
- "When Hermes falls back to another model during a wake turn, its model-fallback notice is posted to the chat, even for a wake that stays silent (NousResearch/hermes-agent#137738)."
capabilities:
provides_tools:
- pulse
provides_hooks:
- pre_gateway_dispatch
- gateway_platform_event
- pre_llm_call
- pre_api_request
- post_api_request
- transform_llm_output
- on_session_end
- agent_loop_stopped
- on_session_reset
- kanban_task_completed
- kanban_task_blocked
- on_kanban_worker_exited
- subagent_stop
- api_request_error
provides_middleware: []
requires_env: []