Releases: asimons81/hermes-dreaming
v0.4.0
Hermes Dreaming v0.4.0 — Release Notes
Headline: The trust loop and the friction-killer.
v0.4.0 makes Dreaming safe to use in anger (revert, dry-run, selective apply) and removes the harvest-to-create two-step (one command, real sessions, redacted).
What's new
Trust loop
dreaming revert <artifact>restores live files from the recorded backups and rolls anappliedartifact back to arevertedstate. Requires the artifact to be inappliedstatus; anything else fails loud.- Drift detection: if the live file changed after apply, a
drift_detectedaudit event is recorded, but the restore still runs from backup. - On a missing backup file, revert aborts, leaves live state untouched, and records a
revert_failedaudit event. - Writes a
REVERT.mdnext to the artifact summarizing what was restored, what was rolled back, what drifted, and what failed. - Non-interactive callers (cron, pipe) must pass
--yes. The CLI exits with code 2 when a confirmation prompt is needed, so scripts can distinguish "needs confirmation" from a real failure.
- Drift detection: if the live file changed after apply, a
dreaming apply --dry-runpreviews the apply path without writing live state or creating backups. The result includes a structureddry_run_report(would-apply / would-skip / would-backup lists, and per-filter exclusions).dreaming apply --priority {low,normal,high}and--target-kind {memory,user,skill,fact}filter which approved proposals land. Filters compose. Filtered-out proposals stayapprovedso a later apply with a different filter can still land them.
Friction-killer
dreaming create --from-sessions Nauto-harvests N recent local Hermes sessions from the SessionDB, feeds the resulting redacted bundle as a source, and stages the artifact in one step. Always printsharvest:,sessions:, andredactions:to stdout before staging.dreaming create --from-since 7d(also12h,2w) is a time-window alternative. The count is derived from the window and capped at 50 sessions.--recent Nis preserved as a back-compat alias for--from-sessions N.--no-llmis a shorthand for--provider offline-markeroncreateandreview. Useful for cron jobs that should never reach an external LLM by accident.
Discovery and inbox
dreaming providers listprints a table withNAME,KIND,STATUS(always | optional | missing), andNOTESfor the three built-in providers. No external services are pinged.dreaming inbox --apply-readyfilters to artifacts where every non-rejected proposal is approved (or already applied) and the artifact is instaged,approved, orappliedstatus. Composes with--stateand--priority.- The inbox digest (
dreaming digest --inbox) now surfaces a "Ready to apply" section and anApply-ready countfield at the top.
Hardening
reject --reasonis enforced at the command layer (commands/review.py:reject_artifact()), not just the CLI parser. Any caller (CLI, library, plugin) is constrained by the same rule.ReviewErroris raised on missing, empty, or whitespace-only reasons.
Data model
Two additive fields on DreamArtifact:
reverted_at: str | None— ISO timestamp of the last revert, if anyrevert_audit_events: list[dict]— the revert audit trail (drift events, restore summary, partial-failure summary)
A third field, dry_run_report, is attached in-memory only during a single apply dry-run call and excluded from manifest.json so the on-disk contract stays stable across the dry-run feature.
Migration / compatibility
- The
recentflag is unchanged in behavior;--from-sessionsis the new preferred name. Both work. - The
rejectenforcement is stricter than v0.3.0. Library callers that previously passedreason=Nonetoreject_artifactwill now raiseReviewError. applygained three optional flags (--dry-run,--priority,--target-kind). Existing invocations are unchanged.
Verification
pytest -qpasses (112 tests across 25 files, +31 from v0.3.0).python -m build --wheelsucceeds.git diff --checkclean.- Smoke-tested on temp fixtures for:
revert(roundtrip, drift, missing backup, partial failure),apply --dry-run(preview without writes),apply --priorityand--target-kind(filters),inbox --apply-ready,providers list,--from-sessionswith redaction stats, and--no-llmtranslation.
Known limitations
- Revert does not re-run validation. It is a restore from backup, not a re-apply. If a reverted proposal is reapplied, validation runs normally as part of the apply path.
- Drift detection compares the live file's pre-restore content to the recorded backup snapshot, but does not currently track per-write post-apply shas. Adding a per-write post-apply sha is a v0.5.0 candidate.
- The
--from-sincewindow-to-count heuristic is conservative (4 sessions per day, capped at 50). If you want a more aggressive count, use--from-sessions Ndirectly.
Bottom line
This release delivers the two things that turn Dreaming from "demo-able" to "operator's default nightly loop":
- You can undo an apply. Revert is the trust headline.
- You can stage from real sessions in one command.
--from-sessionsis the friction-killer.
Direction A (operator trust) and Direction B (friction-killer) from the brainstorm — both shipped, both tested, both documented.
Hermes Dreaming v0.3.0
Hermes Dreaming v0.3.0 Release Notes
Status: approved and shipped as v0.3.0 on 2026-06-02.
What changed since v0.2.0
- Added
dreaming inboxso staged artifacts can be reviewed as a queue, with both text and JSON output. - Added
dreaming harvest --recentand wiredcreate/reviewto the local session-reader fallback path. - Surfaced proposal
risk,priority,reason,source_quote, andpolicy_flagsin summarize, digest, report-card, and inbox views. - Added
digest --inboxplus the inbox-digest cron mode for stdout-only operator reporting. - Tightened writeback path policy so memory, user, fact, and skill proposals can only target their approved destination shapes.
- Added source preflight secret checks so provider calls are blocked before source content can leave the local process.
- Preserved existing uppercase
MEMORY.md/USER.mdfiles during apply instead of creating duplicate lowercase files. - Bumped the plugin version to
0.3.0.
Release verdict
This is the first Hermes Dreaming line that treats the inbox as a real operator surface instead of a one-off artifact view.
It is the shipped Dream Inbox release.
v0.2.0
Hermes Dreaming v0.2.0 Release Notes
Status: approved for release and shipped as v0.2.0 on 2026-05-28.
What changed since v0.1.1
- Review UX got a real decision loop:
dreaming summarize <artifact>,dreaming approve <artifact> <proposal-id|all>,dreaming reject <artifact> <proposal-id> --reason ..., anddreaming review --opennow make the artifact easier to inspect and act on. - Approvals and rejections persist in artifact metadata and audit history. They do not touch live roots until
applyruns. - Provider output is now stricter and safer. Proposal blobs must validate before they become real proposals, and provenance has to point back to the source bundle instead of some made-up path.
- The digest flow is now local and deterministic. It can rank artifacts and proposals, show what changed since the last dream, and render a weekly rollup without sending anything to Telegram by default.
- Onboarding is finally honest and usable. The repo now includes install/update docs, an offline quickstart, persona examples, and a safety page that spells out what Dreaming can and cannot mutate.
- The first phase-7 slice landed as a real dogfoodable feature:
dreaming report-cardnow renders a redacted shareable report card from an artifact and can emit a JSON companion. - Live-memory policy work added idempotence and capacity guardrails, plus test coverage that keeps the real
~/.hermesstate out of the way during verification.
Verification run
Commands run during integration:
python -m pytest -qpython -m buildgit diff --check- docs grep for stale PyPI claims and false release text
Results:
- full test suite passed
- build passed
- diff check passed
- docs stayed honest about the PyPI namespace collision and did not claim a PyPI release
Packaging and distribution notes
- PyPI is still skipped. The
hermes-dreamingnamespace is already taken by someone else, so do not publish under that name. - If distribution is revisited, it probably needs a new package name, likely
hermes-agent-dreaming. - GitHub release/tag creation is handled in this shipping step for
v0.2.0.
Release verdict
This is the next obvious release after v0.1.1.
It is materially better for both Tony and external users, and it is now the shipped v0.2.0 line.
Hermes Dreaming v0.1.1
Hermes Dreaming v0.1.1 Release Notes
Status: approved for release by Tony and shipped as v0.1.1.
What changed since v0.1.0
- Real review diffs:
dreaming diffnow shows unified diffs against--live-rootor the artifact workspace root instead of only dumping the staged report. - Safer apply: artifact apply now preflights selected proposals, snapshots touched files up front, rolls back on write or verification failure, and persists audit fields.
- Better audit trail: artifacts now record apply start and finish timestamps, applied proposal ids, backup paths, validation errors, and apply errors.
- Offline quickstart:
examples/quickstart/plusdocs/quickstart.mdgives users a no-API-key review -> diff -> validate -> apply -> status demo. - Cleaner tests and demos: pytest isolates Dreaming state, and
HERMES_DREAMING_STATE_ROOTlets quickstart/demo runs avoid the real~/.hermes/dreamingrun ledger. - Safe updates:
dreaming updatesupports fast-forward plugin updates with dirty-tree protection and optional pytest verification. - Plugin packaging: the repo installs as the
hermes-dreamingHermes plugin and bundles the Dreaming skill.
Packaging and versioning
- Package version:
0.1.1 src/hermes_dreaming/__init__.pyexports__version__ = "0.1.1"pyproject.tomlpinsversion = "0.1.1"CHANGELOG.mdhas a dedicated0.1.1section
Verification run
Commands executed during release prep:
git diff --checkpython -m pytest -qpython -m build- fresh GitHub install smoke from
main
Results:
git diff --checkpassed cleanlypytestpassed: 60 tests- source distribution and wheel build passed
- GitHub install smoke passed
Release verdict
v0.1.1 is the first usable release candidate for external users who want a staged, reviewable Dreaming loop instead of silent memory mutation.
Post-publish verification
- Annotated tag object:
33fa08002731ec8d8e1ef84b959aced47a566011 - Peeled tag commit:
9a9c73f4c5a3a99cda95601f13b512ebb125030e - Exact-tag install smoke passed from
git+https://github.com/asimons81/hermes-dreaming.git@v0.1.1 - Console entrypoint
dreamingresolved version0.1.1 - Temp-root review -> diff -> validate -> apply -> status flow passed
v0.1.0
Hermes Dreaming v0.1.0
First public release of the staged self-improvement engine.
What's New
- Artifact-first MVP for Hermes-style memory, user, skill, and fact updates
- Explicit
create,diff,validate,apply,discard, andstatuscommands - Directory-based dream artifacts with
manifest.json,REPORT.md,sources.jsonl, andproposals.jsonl - Validation, backups, and discard/archive semantics
- Offline marker parsing with an optional OpenAI-compatible provider
- Test coverage for the core model, validation, CLI flow, and apply/discard behavior