Visual, dependency-aware orchestration timeline on top of Hermes cron.
A unified Hermes plugin (Python tools/hooks + desktop/plugin.js + dashboard/plugin_api.py) that lets the agent create multi-step automations that respect dependency chains and optional calendar constraints. The user sees the chain on a Desktop timeline pane.
Manual chain-runner design (honest): There is no cron-completion hook in Hermes. Chains advance only when orchestrator_trigger_chain is called after verified success. post_tool_call is observer-only.
orchestrator_create— create a chain + steps (cycle detection)orchestrator_status— list jobs / statusorchestrator_graph— nodes + edges for renderingorchestrator_trigger_chain— advance a job after verified success (validates deps + calendar)
post_tool_call— observer logging of cron tool calls (fail-open)on_session_start— ensure DB exists
- Timeline pane (read-only)
- Status-bar chip
- Backend:
GET /api/plugins/smart-automation/statusand/graph— read-only. All mutations go through agent tools so Hermes approvals fire.
SQLite in ctx.state.data_dir (plugin-data/smart-automation/smart_automation.db), WAL mode, schema v1.
- Reads a user-selected local
.icsfile if configured (never network calendars) - Stores chain metadata locally in plugin data dir
- Creates metadata for underlying cron jobs via the agent (cron jobs themselves are managed by Hermes cron; this plugin only stores dependency metadata); no core Hermes files are modified
- No external network calls required. Slack/Calendar in demo are stubbed/mock and labelled as such.
- Nearest catalog neighbour:
cron-bulletin(cron report inbox). Differentiation: this plugin ships a visual dependency graph + manual chain advancement, not a report inbox.
python3 tests/test_smart_automation.py
hermes plugins validate --json .- Prompt: "Create a weekday morning automation that only runs when my calendar shows a free block after 8am. First summarize overnight AI news, then post a short digest to Slack (mocked). Make the second job depend on the first succeeding. Show me the timeline."
- Agent creates chain; Desktop timeline appears.
- Manually trigger first job via
orchestrator_trigger_chain; it completes. - Second job unlocks (status
ready). - Status chip reflects state.
MIT