This is the shortest path for installing and verifying Memory-OS on an existing Hermes profile.
Use the Hermes profile you want Memory-OS to manage:
export HERMES_HOME=/root/.hermesThe installer can discover common homes, but setting HERMES_HOME keeps the
target explicit.
One-command operational install for an existing Hermes profile:
HERMES_HOME=/root/.hermes bash scripts/install_memory_os.sh --yes --operational \
--hindsight autoThis installs and enables the Memory-OS provider, the Hermes Agent OS shell,
the portable runtime, heartbeat, the current cognitive loop harness, and the
active-closure Hermes cron operational set. Owner-facing cron jobs use Hermes
channel_directory.json autodiscovery, so Telegram is selected only when it is
the configured owner channel. The default active-closure cron set contains
the owner review digest, proposal follow-up OpsGate, index sync, working
cleanup, L3 probe verification, candidate aggregation, fact judge, event
stats refresh, expression feedback, and memory sources feedback jobs.
Runtime heartbeat and the cognitive-loop timer own the main
sensing/projection/advisor loop.
Interactive install:
bash scripts/install_memory_os.shUse --no-enable-owner-cron-onboarding if you want helper scripts installed
but no recurring jobs. Hermes owns scheduled delivery, platform transport, and
final owner-facing wording in agent mode; Memory-OS only renders bounded briefs,
tokens, state transitions, audit, and monitor evidence.
Production-safe install:
HERMES_HOME=/root/.hermes bash scripts/install_memory_os.sh --yes --production-safe \
--hindsight offHindsight adoption is explicit. Use --hindsight off for a fresh open-source
install. Use --hindsight auto when an existing Hermes profile already has a
Hindsight config and you want Memory-OS to adopt it into governed shadow mode,
or to preserve an already-active adoption for the same provider bank during
later upgrades. Use --hindsight active only for a controlled live cutover.
The direct Hermes memory.provider=hindsight path is not used by Memory-OS.
Hindsight, when enabled, is a Memory-OS governed substrate with raw-turn retain
disabled and recall kept advisory.
Automated deployment wrapper examples:
The wrapper defaults --llm-judge-preset to active, reusing the current
Hermes provider/model in bounded-vote mode and running a post-install judge
probe. Pass --llm-judge-preset report-only for report-only probes, or
--llm-judge-preset none when the target should keep the judge disabled.
# Fresh host, local execution on the target:
python scripts/deploy_memory_os.py \
--hermes-home /root/.hermes \
--profile fresh \
--phase apply \
--mode production-safe \
--hindsight off
# Existing Hermes + Hindsight host, remote orchestration:
python scripts/deploy_memory_os.py \
--host hermes-media \
--remote-repo-root /opt/Hermes-Memory-OS \
--hermes-home /root/.hermes \
--profile upgrade \
--phase dry-run \
--mode operational \
--hindsight autoThe installer does not restart hermes-gateway.service.
Memory-OS includes a read-only monitor dashboard on the open-source frontend
contract 0.0.0.0:3693. The dashboard reads bounded snapshot evidence and has
no approve/apply/send controls.
Run locally:
python scripts/memory_os_monitor_dashboard_snapshot.py \
--hermes-home /root/.hermes \
--profile main \
--output monitor_dashboard/snapshot.generated.js
python scripts/serve_memory_os_monitor_dashboard.py \
--host 0.0.0.0 \
--port 3693 \
--snapshot-hermes-home /root/.hermes \
--snapshot-profile main \
--snapshot-interval-seconds 60Install as a system service:
sudo python scripts/install_memory_os_monitor_dashboard_service.py \
--repo-root /opt/Hermes-Memory-OS \
--hermes-home /root/.hermes \
--profile main \
--host 0.0.0.0 \
--port 3693 \
--python-bin /usr/bin/python3 \
--enableHERMES_HOME=/root/.hermes hermes memory
HERMES_HOME=/root/.hermes hermes plugins list
HERMES_HOME=/root/.hermes hermes memory-os-agent-os status
HERMES_HOME=/root/.hermes hermes memory-os-agent-os doctor
HERMES_HOME=/root/.hermes hermes memory-os-agent-os modules statusExpected state:
memory.provider = memory_os
memory-os-agent-os = enabled general plugin
memory_os = not enabled as a general plugin
doctor.status = ok
Current Hermes builds select Memory-OS through memory.provider=memory_os.
They do not need to expose hermes memory_os ... as a top-level command.
Optional repo/operator validation:
python scripts/memory_os_public_checkout_probe.py --source head --strict
python scripts/memory_os_public_checkout_probe.py --source working-tree --strict
python scripts/memory_os_cron_adapter_probe.py --host hermes-media --output json
python scripts/memory_os_boundary_runtime_probe.py --host hermes-media --output json
python scripts/memory_os_3_200_monitor.py --host hermes-media --monitor-profile live --output summaryTreat these as separate evidence levels. Fast probe PASS is not a substitute for a full live monitor PASS.
memory_osprovider under$HERMES_HOME/plugins/memory_os/- optional
memory-os-agent-osshell plugin under$HERMES_HOME/plugins/memory-os-agent-os/ - optional portable module runtime under
$HERMES_HOME/memory-os/runtime/python/ - optional heartbeat and cognitive-loop systemd user units under
$HERMES_HOME/memory-os/systemd/ - optional Memory-OS Hermes cron onboarding under
$HERMES_HOME/scripts/; the operational preset creates the active-closure cron set unless explicitly disabled
Backups belong under $HERMES_HOME/plugin-backups/, not under
$HERMES_HOME/plugins/.
The default cron profile is active-closure (10 jobs):
| Job | Purpose |
|---|---|
memory-os-owner-review-digest |
sends approval items and real alerts through the owner channel |
memory-os-proposal-followups-opsgate |
moves safe proposal follow-ups through OpsGate/report-only review |
memory-os-index-sync |
keeps SQLite FTS5 index in sync with canonical files |
memory-os-working-cleanup |
prunes expired working memory items |
memory-os-l3-probe-verification |
verifies L3 boundary probe integrity |
memory-os-candidate-aggregation |
aggregates candidate clusters |
memory-os-fact-judge |
reversible fact-judge lane for crystallized records |
memory-os-event-stats-refresh |
rebuilds O(1) event stats cache every 15 min |
memory-os-expression-feedback-request |
requests owner feedback on right-brain expressions |
memory-os-memory-sources-feedback-request |
requests owner feedback on memory source recall quality |
The full registry also contains optional jobs for right-brain expression, module cadence reports, expression outcome capture, and owner feedback prompts. They are intentionally not part of the default install. Enable them only when that user-facing product surface is desired:
HERMES_HOME=/root/.hermes python scripts/install_memory_os_plugin.py \
--run-owner-cron-onboarding \
--owner-cron-owner-approved \
--owner-cron-profile fullOn upgraded hosts, active-closure onboarding pauses known optional Memory-OS
cron jobs instead of deleting them. Running the full profile restores the
optional cron surface when it is intentionally needed.
Memory-OS does not automatically send messages, execute external actions, write identity, approve crystallized memory, export to Hindsight, apply cleanup, or apply shadow journals.
The operational preset enables runtime loops and Hermes cron jobs, but it does not enable direct Memory-OS sends, external execution, identity writes, or unapproved crystallized approvals.
Owner review digests use short display anchors such as A1, R1, and F1 to
make the list readable. Those anchors are not durable approval identities.
The normal path is conversational: reply in the same Hermes channel where the
digest appears. Hermes interprets your intent, asks when ambiguous, and calls
Memory-OS with structured memory_os_review_reply arguments. Memory-OS does
not require a root shell command for owner approval.
Stable-token owner utterance examples:
memory approve oa_<token>
memory reject oa_<token>
memory allow oa_<token>
memory feedback oa_<token> too_mechanistic
The corresponding agent tool call is structured, for example:
tool: memory_os_review_reply
arguments:
action: feedback
action_token: oa_<token>
rating: too_mechanisticHermes is the interactive agent. If you reply with natural phrasing such as
approve A1, Hermes may resolve A1 from the current visible digest and call
the Memory-OS review tool with the matching stable oa_ token. If the target
is not unambiguous, Hermes should ask you to clarify instead of guessing.
Memory-OS itself does not execute display anchors. A1/R1/F1 are UI labels
only; the plugin/state-machine layer applies only stable oa_ action tokens.
Owner approval is reserved for trust-boundary actions, not every workflow step.
Proposal follow-up routing is report-only process motion: it may move a proposal
into OpsGate review, but it does not execute work, write policy, mutate routing,
send messages, or write crystallized memory. The actual boundary action
(apply_proposal, crystallized write, revoke/demote/delete, route/score
authority, identity/relationship write, external send, or unbounded autonomous
acting) remains owner-gated unless that specific low-risk lane has been
explicitly graduated.
For proposal_followup_auto_route, limited_auto may be active and idle when
there are no currently eligible proposals. Graduation is based on real prior
bounded routes plus continuing boundary checks; an empty current queue must not
be filled with synthetic proposal samples just to produce activity.
Shell/CLI paths are operator/debug fallbacks only. They are not the owner-facing approval workflow.
For SessionMirror, the approval is a lane-graduation decision. Once the owner
approves the approve_session_mirror_apply item from the owner-home digest,
Memory-OS can let heartbeat auto-import one bounded session per run inside the
approved platform allowlist. This reduces repeat approvals while keeping the
hard boundary intact: the lane does not write crystallized memory, mutate
policy, change route/score authority, write identity/relationships, or send
external messages.