Hermes Daily Goal-Oriented Autonomy Loop
Updated: 2026-05-03
Autonomy level
Daniel has approved Hermes operating at Level 3 autonomy.
Hermes may do unattended:
- create branches, commits, private repositories, and GitHub PRs
- create local/web/Notion artifacts
- append Notion logs
- perform low-risk local operational actions
- run bounded local tests/lints/research workflows
Hermes must still get Daniel review before:
- merging PRs
- production deploys or production service restarts
- public publishing outside GitHub PRs
- money/trading/payment actions
- credential or permission changes
- destructive data/file operations
Daily loop
The system should steer using a short feedback loop, not weekly overplanning.
Morning evaluation -> Daily goal planner -> Evening sweep -> Queue writer -> Overnight worker -> Morning evaluation
Morning evaluation job
Purpose: evaluate, not plan.
The morning brief should answer:
- What happened overnight?
- What PRs/artifacts need Daniel review?
- Which active goals advanced, stalled, or drifted?
- What failures/skips/blockers should influence today’s plan?
- What steering signal should the daily planner use?
It should include overnight_workbench results: queued, succeeded, failed, skipped, PRs opened, and review-needed items.
Daily goal planner job
Purpose: propose the next 24-hour project queue.
This is the goal-oriented planning process Daniel asked for. It should run after the morning evaluation and use:
- Active Goals
- AI Delegated Projects grouped by goal
- overnight workbench results
- recent failures/skips
- stale or blocked projects
- Daniel review backlog
Output: a max-10 proposed next-24h queue, with each item naming:
- Goal
- Project
- Job type
- Written input description
- Expected review artifact
- Why this is the next best move
Planning horizon: 24 hours. Not weekly.
Evening sweep job
Purpose: evaluate the day and prepare the overnight queue.
The evening sweep should:
- evaluate day-level progress by goal
- compare actual progress to the daily goal plan
- identify queue candidates for the overnight workbench
- separate autonomous work from Daniel-needed decisions
- create/emit queue candidates for the deterministic queue writer
It should not be a generic activity digest. It is the transition from daytime evaluation to overnight execution.
Queue writer job
Purpose: deterministic conversion of evening candidates into queue entries.
It should run after the evening sweep and enforce:
- max 10 jobs/night globally
- max 3 jobs/project/night
- safety policy
- dedupe by date/project/action/job type
It should not use an LLM for policy interpretation.
Overnight worker
Purpose: execute queued work under Level 3 autonomy.
Rollout sequence:
- dry-run worker: claims jobs and writes synthetic results
- real worker for research/draft/documentation/audit/review jobs
- software-development worker that opens PRs
- low-risk local ops worker, still forbidden from production deploys/merges/etc.
Retired job
The legacy nightly reviewer is retired. Its role is replaced by:
- morning evaluation
- daily goal planner
- evening sweep
- overnight workbench context
Current implementation status
Done:
- PR #1 merged in
dndodson/hermes-ops - PR #1 deployed to live
~/.hermes/scripts - morning brief prompt updated to evaluation framing
- evening sweep prompt updated to queue-prep framing
- daily goal planner cron created for 08:20 ET
- overnight queue writer cron created for 22:45 ET
- legacy weekly/nightly reviewer cron retired
- PR #2 opened for dry-run worker
Next:
- Daniel reviews/merges PR #2
- deploy PR #2 worker script + optional dry-run systemd timer
- run one dry-run night
- then implement PR #3 real worker execution for low-risk non-code jobs