New request
#3460: Improve scheduled job output UX: surface cron runs in Chat
We'll provision a sandbox, run an agent against the issue, and open a draft PR. You can pull the branch and iterate from there.
Summary
Scheduled job / cron outputs are currently too hidden in Hermes WebUI. The main place to review them appears to be under Tasks → Runs, which works as an audit/debug view but does not match how users naturally consume and act on scheduled outputs.
For user-facing jobs such as morning briefings, reminders, deal alerts, or email/calendar summaries, the output should appear directly in the Chat workflow where the user can immediately respond, create tasks, ask follow-up questions, or continue the conversation from the scheduled output.
This issue proposes making scheduled outputs first-class Chat items while keeping Tasks → Runs as the audit/debug/history surface.
Problem
Current workflow:
- User creates a scheduled job / cron task.
- Job runs in the background.
- Output is primarily discoverable under Tasks → Runs.
- To action the output, the user has to leave the normal chat flow.
- The run feels like a log entry rather than a message from Hermes.
This makes user-facing scheduled jobs less useful than they should be.
A morning briefing or reminder should feel like a message arriving from Hermes, not like a log entry hidden in a task history panel.
Example:
A weekday morning briefing includes calendar items, daycare/school/YMCA reminders, and a few tasks to complete. The natural next action is to reply, create a task, draft a message, or ask a follow-up question — all of which are chat-like interactions.
Proposed solution: Scheduled outputs appear in Chat
Concept
Treat user-facing scheduled outputs as first-class Chat items.
A cron run would create or update a chat-style thread/message, for example:
- Morning Briefing appears in the Chat sidebar as a new/attention-marked item.
- The latest run appears as a Hermes message in the main chat pane.
- The message includes action buttons such as:
Draft replyCreate taskMark doneView raw runRun again
- The right-side panel can show cron job context:
- schedule
- last run
- delivery target
- recent runs
Why this is better
This matches the user’s mental model: scheduled briefings and alerts are messages from Hermes. The Chat area is already where users ask follow-up questions and take action.
Tasks → Runs should remain available, but as the audit/debug/history view rather than the primary consumption surface.
Suggested behavior
When a scheduled job runs:
- Save the normal run record under Tasks → Runs.
- If the job has user-facing delivery enabled, also surface the output in Chat.
- Mark the chat item as unread/new if the user has not seen it.
- Let the user reply directly to the output.
- Attach job metadata to that chat context so Hermes knows the user is acting on a specific scheduled run/job.
Example UI state
Chat sidebar:
Chat
├─ Morning Briefing Scheduled output · new
├─ Deal Watchlist Scheduled output
├─ Tom ↔ Hermes Normal chat
└─ Calendar MCP Fix Normal chat
Main chat:
Hermes · scheduled run
Scheduled output · Morning Briefing · ran 6:30am
Good morning, Tom
Today
- 9:00am — Client follow-up block.
- 3:30pm — Daycare pickup; bring labelled spare hat.
Suggested actions
- Draft reply to YMCA form before Friday.
- Create task to confirm tomorrow’s meeting agenda.
- Check Harmony daycare note about missing labelled item.
[Draft reply] [Create task] [Mark done] [View raw run]
Right panel:
Morning Briefing
Tabs: Files | Cron job
Job status
- Schedule: Weekdays 6:30am
- Last run: completed
- Delivery: Chats inbox
Recent runs
- Today 6:30am · completed
- Yesterday 6:30am · completed
Acceptance criteria
A good implementation should satisfy most or all of the following:
- User-facing scheduled outputs can be surfaced in Chat, not only under Tasks → Runs.
- Tasks → Runs remains available as the audit/debug/history surface.
- New scheduled outputs are visually obvious, e.g. unread badge, attention marker, or sidebar item state.
- User can reply to a scheduled output in context.
- Hermes can tell which scheduled job/run the user is responding to.
- User can open the raw run log from the chat output.
- User can run the job again from the output context.
- Existing scheduled job management/history remains accessible from Tasks → Runs.
Recommendation
Scheduled outputs should appear where users already interact with Hermes: Chat.
The important product distinction is:
- Tasks → Runs = audit trail, raw logs, debugging, job management.
- Chat = user-facing output, follow-up, and action.
Cross-cutting change to inject scheduled job outputs into chat sessions requires new backend message plumbing and frontend rendering.
- api/routes.py
- api/jobs.py
- static/js/chatCanvas.js
- static/js/sessionsSidebar.js
- static/js/composer.js
- tests/test_jobs.py
- tests/test_chat_smoke.py