Voice, Cron, and Notification Channels

8 min read Module 6 of 9 Topic 17 of 25

What you'll learn

  • Enable voice mode for CLI, messaging platforms, and Discord voice channels
  • Schedule a recurring cron job and understand how the gateway delivers its results
  • Combine skills, memory, and cron to build a proactive (not just reactive) agent behavior
  • Route notification-only channels like ntfy or webhooks for lightweight alerts
Building this at your company? For enterprise and company teams taking this to production: book a 30-minute session with our AI engineers for architecture guidance, code review, and a rollout plan for your use case.
Book a Team Session

Two New Capabilities: Speaking and Initiating

Modules so far cover an agent that responds when spoken to, by text. This lesson adds two things: voice, so interaction doesn’t require typing, and cron, so the agent can act on a schedule without being asked in the moment.

Voice Mode

Voice works across three surfaces:

CLI microphone mode, for talking to Hermes directly in your terminal:

hermes --voice

Spoken replies in messaging, using the TTS tools from Lesson 8 (Tool Gateway or a direct ELEVENLABS_API_KEY/VOICE_TOOLS_OPENAI_KEY connection) to have the gateway (Lesson 16) reply with audio instead of, or alongside, text.

Discord voice-channel conversations, where the bot joins an actual voice channel:

gateway:
  discord:
    enabled: true
    voice:
      enabled: true

Voice adds latency (transcription in, synthesis out) on top of the model call itself, worth keeping in mind if you’re also running against a self-hosted model (Lesson 5) with its own latency characteristics, the two compound.

Cron: Making the Agent Proactive

Everything up to this point in the course has been reactive. Cron flips that: schedule a task to run automatically, with full agent capability, memory, skills, tools, and have the result delivered through the gateway.

# ~/.hermes/config.yaml
cron:
  - name: "morning-status"
    schedule: "0 8 * * *"        # standard cron syntax: 8am daily
    prompt: "/daily-status-check"   # the skill from Lesson 11
    deliver_to:
      platform: telegram
      chat_id: "your-chat-id"

or from the CLI:

hermes cron add --name morning-status --schedule "0 8 * * *" \
  --prompt "/daily-status-check" --deliver telegram:your-chat-id

This is where Module 4’s skills system and Module 6’s gateway compose into something neither delivers alone: the daily-status-check skill you taught Hermes in Lesson 11 was useful when you remembered to invoke it manually. Cron-scheduled, it becomes genuinely proactive, checking staging health every morning and messaging you a summary whether or not you thought to ask.

hermes cron list       # see scheduled jobs
hermes cron logs morning-status   # check recent run history

Lightweight Notification Channels

Not every automated output needs a full conversational platform. For simple, one-directional alerts, ntfy (a lightweight push-notification service) or a generic webhook are a better fit than standing up a Discord or Slack integration just to receive a single status line:

cron:
  - name: "error-rate-alert"
    schedule: "*/15 * * * *"     # every 15 minutes
    prompt: "Check the error dashboard; if error rate exceeds 2%, report it, otherwise say nothing"
    deliver_to:
      platform: ntfy
      topic: "prod-alerts"
gateway:
  webhooks:
    - name: "internal-alerts"
      url: "https://hooks.internal.corp/agent-alerts"

Matching integration weight to the actual need matters: a full Slack bot for a task that’s really just “ping me if X happens” is more surface area (and more to secure, Module 7) than the task warrants.

Exercise: schedule a cron job that runs a skill or a simple prompt on a short interval (every few minutes, for testing) and delivers to whichever platform you connected in Lesson 16. Confirm it fires without you initiating anything, then check hermes cron logs to see the run history. Once confirmed working, adjust the schedule to something realistic and remove the test-interval version.

Knowledge Check

3 questions to test your understanding

1 What's the architectural difference between everything covered up through Lesson 16 and a cron-scheduled task?

2 You schedule the daily-status-check skill from Lesson 11 to run every morning via cron, with delivery to Telegram. What does the gateway architecture from Lesson 16 let this task do that a plain OS-level cron job calling a script could not as easily?

3 For a use case that only needs a simple push notification (not a conversational reply), what does this lesson suggest reaching for instead of a full chat-platform adapter like Slack or Discord?

Go further with expert guidance

Ready to build production AI?
Talk to our R&D team.

These courses give you the foundation. Our embedded AI teams take you from prototype to production in 30–90 days, with your team, your codebase, your goals. Book a free strategy call to see how we can accelerate your AI initiative.

30 minutes · No obligation · Expert AI engineers, not sales reps

AI Architecture Review

Audit your current stack and identify high-impact improvements

Project Review

Get expert feedback on your AI implementation and codebase

Team Mentoring

Upskill your engineers with hands-on AI coaching sessions

AI Strategy

Define your AI roadmap, prioritization, and implementation plan