agentsclimarketplace

Hermes

Skill Pushary/pushary-skill/skills/hermes

Push notifications and human-in-the-loop for Hermes Agent. Send alerts when tasks finish, ask questions (yes/no, multiple choice, or free text) via web push, and get answers from the user's lock screen. Use these tools proactively when the user is not actively in a chat session. Works alongside Hermes's built-in messaging platforms (Telegram, Discord, etc.) as a universal fallback channel.From its SKILL.md

Install
npx -y skills add Pushary/pushary-skill --skill hermes

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.3 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it

Pushary - Push Notifications for Hermes Agent

Pushary adds web push notifications as a delivery channel for Hermes. Use it when the user is not actively monitoring a chat platform, or when you need to reach them on their phone's lock screen for a time-sensitive decision.

When to Use Pushary vs Hermes Platforms

Use Pushary when:

  • The user has no active chat session (Telegram, Discord, etc.)
  • You need to reach the user's phone lock screen for a quick decision
  • A background task finishes and the user may have walked away
  • Permission escalation - a dangerous command needs approval
  • The user explicitly asked for push notifications

Use the active Hermes platform when:

  • The user is currently in a Telegram/Discord/Slack conversation with you
  • The question is part of an ongoing dialog
  • The user prefers responses in their current platform

Use both when:

  • A critical error occurs - notify via push AND the active platform
  • A long-running task completes - push ensures they see it even if they closed the chat

Setup

Add Pushary as an MCP server in your Hermes config.yaml:

mcp:
  servers:
    pushary:
      url: https://pushary.com/api/mcp/sse
      headers:
        Authorization: "Bearer ${PUSHARY_API_KEY}"

Set your API key as an environment variable:

export PUSHARY_API_KEY="pk_xxx.sk_xxx"

Sign up at https://pushary.com/sign-up?from=hermes to get your API key.

Tools

send_notification

(Over MCP this tool is named send_notification; the native Hermes plugin exposes the same capability as pushary_notify.)

Send a one-way push notification. Optionally include structured context for a rich detail page.

Parameters:

NameTypeRequiredDescription
titlestringYesNotification title (max 100 chars, aim for under 60)
bodystringYesNotification body (max 500 chars, aim for under 200)
agentNamestringNoIdentifies this Hermes instance (e.g., "Hermes - daily-briefing")
contextobjectNoRich context with type, summary, details, filesChanged, errorMessage, nextSteps

Example - cron task completed:

{
  "title": "Daily briefing ready",
  "body": "Compiled 12 news items and 3 calendar events",
  "agentName": "Hermes - daily-briefing",
  "context": {
    "type": "task_complete",
    "summary": "Morning briefing compiled from RSS feeds and Google Calendar",
    "details": ["12 tech news items", "3 meetings today", "2 PRs awaiting review"],
    "nextSteps": "Say 'read briefing' in Telegram to hear the full summary"
  }
}

ask_user

Ask a question via push notification and wait for the answer (blocks by default). Three question types: confirm (yes/no), select (multiple choice), input (free text).

Parameters:

NameTypeRequiredDescription
questionstringYesThe question to ask (max 500 chars)
type"confirm" / "select" / "input"NoQuestion type (default: confirm)
optionsstring[]NoChoices for select type (2-6 options)
placeholderstringNoPlaceholder text for input type
contextstringNoWhat you're working on, shown above the question
agentNamestringNoIdentifies this Hermes instance
waitbooleanNoWait for answer before returning (default: true)
timeoutMsintegerNoMax wait in ms (max 55000). Uses the site policy timeout if omitted.

Returns:

  • { "answered": true, "value": "yes" } - user responded
  • { "answered": false, "timedOut": true } - no response within timeout

Example - dangerous command approval:

{
  "question": "Allow: rm -rf /tmp/build-artifacts/*",
  "type": "confirm",
  "context": "Cleaning up 2.3GB of stale build artifacts from last week",
  "agentName": "Hermes - server-maintenance"
}

wait_for_answer

Poll for a response when ask_user was called with wait: false. Not needed with default blocking mode.

NameTypeRequiredDescription
correlationIdstringYesThe correlationId from ask_user
timeoutMsintegerNoHow long to wait (default 30000, max 55000)

cancel_question

Cancel a pending question that's no longer relevant.

NameTypeRequiredDescription
correlationIdstringYesThe correlationId to cancel

Human-in-the-Loop Flow

One call - ask_user blocks and returns the answer:

result = ask_user({
  question: "Deploy the updated config to production?",
  type: "confirm",
  context: "nginx config updated with new rate limits",
  agentName: "Hermes - devops"
})

if result.answered:
    if result.value == "yes":
        // proceed with deployment
    else:
        // abort and notify via active platform
else:
    // fall back to asking in the active chat platform

Identifying Your Instance

Always pass agentName so the user knows which Hermes profile or task is asking.

Format: "Hermes - {profile or task}"

Examples:

  • "Hermes - daily-briefing"
  • "Hermes - server-maintenance"
  • "Hermes - code-review"
  • "Hermes - personal-assistant"

Notification Etiquette

  • Titles under 60 characters. Phone lock screens truncate aggressively.
  • Bodies under 200 characters. Put detail in the context object.
  • Max 3 push notifications per task. If the user is in an active chat, prefer that channel.
  • Don't duplicate. If you already sent the message via Telegram/Discord, only send a push if the user hasn't read it within a reasonable time.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,512. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.