Agent Daemon Rb banner
AlexanderShvaykin AlexanderShvaykin

Agent Daemon Rb

AI community

Description

Ruby daemon engine for orchestrating CLI AI agents (Claude Code, OpenCode) with triggers, prompt templates, and webhook notifications

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

AgentDaemon

A Ruby daemon engine for orchestrating CLI AI agents. It runs one thread per configured runner, each with its own trigger (Yandex Tracker queries or file polling), backend (Claude Code or OpenCode), and prompt template. A dedicated Messenger thread delivers webhook notifications to Loop, Slack, or any compatible endpoint. Zero external gems -- stdlib only.

Installation

Add to your Gemfile:

gem "agent_daemon"

Or install directly:

gem install agent_daemon

Quick Start

  1. Create a config.yml:
project_path: /path/to/your/agent/project
message_dir: to_message

tracker:
  token: YOUR_TRACKER_TOKEN
  org_id: "123456"

runners:
  - name: my-runner
    prompt_template: prompts/default.txt
    backend: claude
    trigger:
      type: tracker
      query: "Queue: MYQUEUE AND Status: Open"
      interval: 120

messenger:
  webhook_url: https://example.com/webhook
  1. Create a prompt template (prompts/default.txt):
Analyze task {{task_key}}.
Write results to {{message_dir}}/{{task_key}}.yml
  1. Run the daemon:
agent-daemon config.yml

Stop with `Ctrl+C` or `kill ` -- graceful shutdown waits for current iterations to finish.

Configuration Reference

Key Description
project_path Working directory where the agent CLI runs
message_dir Directory for outgoing message YAML files (relative to project_path)
tracker.token Yandex Tracker OAuth token
tracker.org_id Yandex Tracker organization ID
tracker.base_url API base URL (default: https://api.tracker.yandex.net)
runners List of runner configurations (see below)
messenger.webhook_url Webhook URL for notifications (optional; if omitted, the messenger thread is not started)
messenger.interval Polling interval for outgoing messages in seconds (default: 30)
logging.level Log level: debug, info, warn, error (default: info)
`loggi