{"id":51043910,"url":"https://github.com/btnalit/hermes-memory-os","last_synced_at":"2026-06-28T10:00:23.011Z","repository":{"id":359076129,"uuid":"1244363969","full_name":"btnalit/Hermes-Memory-OS","owner":"btnalit","description":"An engineering-focused Agent OS runtime for Hermes Agent. Features dual-engine memory (SQLite + Flat files), deterministic state machine locks to prevent model drift, and temporal-decay weighted retrieval for long-term autonomous operations.","archived":false,"fork":false,"pushed_at":"2026-06-21T14:47:54.000Z","size":2553,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-22T12:37:15.736Z","etag":null,"topics":["autonomous-agents","hermes-agent-plugin","llm-memory","long-term-memory","state-machine"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btnalit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-20T07:41:14.000Z","updated_at":"2026-06-21T14:47:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/btnalit/Hermes-Memory-OS","commit_stats":null,"previous_names":["btnalit/hermes-memory-os"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/btnalit/Hermes-Memory-OS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btnalit%2FHermes-Memory-OS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btnalit%2FHermes-Memory-OS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btnalit%2FHermes-Memory-OS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btnalit%2FHermes-Memory-OS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btnalit","download_url":"https://codeload.github.com/btnalit/Hermes-Memory-OS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btnalit%2FHermes-Memory-OS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34884278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autonomous-agents","hermes-agent-plugin","llm-memory","long-term-memory","state-machine"],"created_at":"2026-06-22T12:32:26.218Z","updated_at":"2026-06-28T10:00:23.004Z","avatar_url":"https://github.com/btnalit.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hermes Memory-OS\n\u003cimg width=\"1491\" height=\"1055\" alt=\"ChatGPT Image 2026年6月28日 16_14_27\" src=\"https://github.com/user-attachments/assets/e923d0df-5f2c-4ea8-b0b5-7569fab5d6d8\" /\u003e\n\n\nHermes Memory-OS is a file-first memory and governance runtime for long-running\nHermes agents.\n\nIt gives a Hermes profile durable memory, bounded cognition modules, owner\nreview, right-brain expression feedback, and operational monitor evidence\nwithout making Memory-OS the owner of conversation, transport, or scheduling.\nHermes remains the host agent. Memory-OS provides bounded state, stable action\ntokens, helper scripts, audit, and monitor evidence.\n\n## What This Project Is\n\nMemory-OS is for operators who want an inspectable memory substrate for Hermes:\n\n- profile-local canonical files instead of opaque hosted storage;\n- rebuildable SQLite indexes for search and prefetch;\n- hybrid retrieval: FTS5 full-text search, vector similarity via local embeddings,\n  and graph-layer edge traversal — composable, knob-gated, and degradable to\n  pure FTS5;\n- working memory separated from owner-approved crystallized memory;\n- attribution and feedback ledgers for memory-source quality;\n- owner-visible approval and feedback loops through Hermes;\n- module cadence, proposal follow-up, and right-brain expression evidence;\n- safe bounded apply paths for explicitly supported proposal kinds.\n\nIt is not a standalone chat server, a SaaS memory service, or a generic\nexecutor. External sends, user conversation, cron delivery, channel selection,\norigin/local routing, and natural-language interaction belong to Hermes.\n\n## Quick Start\n\nInstall into an existing Hermes profile:\n\n```bash\ngit clone \u003cthis-repo-url\u003e\ncd Hermes-Memory-OS\nHERMES_HOME=/root/.hermes bash scripts/install_memory_os.sh --yes --operational \\\n  --hindsight auto\n```\n\n`--operational` is the normal open-source install path. It installs and enables:\n\n- the `memory_os` Hermes memory provider;\n- the `memory-os-agent-os` Hermes shell plugin;\n- portable Memory-OS runtime modules (including `deep_reflection` and `speak_gate`, both default-enabled);\n- heartbeat runtime;\n- the cognitive-loop integration harness (default-enabled per D1);\n- active-closure Hermes cron onboarding (9 jobs: owner review digest, proposal\n  follow-up, index sync, working cleanup, L3 probe, candidate aggregation,\n  fact judge, expression feedback, memory sources feedback).\n\nThe installer auto-detects the owner-facing Hermes channel from\n`$HERMES_HOME/channel_directory.json`. Telegram is used only when Telegram is\nthe configured owner channel. Other installs can resolve to Discord, Signal,\nSlack, Matrix, or another configured platform. Background jobs use\n`deliver=local` with no agent where appropriate; right-brain expression uses\nHermes `deliver=origin`.\n\nHindsight is optional and governed by Memory-OS, not by selecting Hermes'\ndirect `memory.provider=hindsight` path. `--hindsight auto` adopts a new\nHermes Hindsight config into Memory-OS shadow mode, preserves an already-active\nMemory-OS Hindsight adoption for the same provider bank, and stays disabled on\na fresh profile with no Hindsight config. Use `--hindsight active` only for a\ncontrolled live cutover where retain, advisory active recall, and reflect\ncandidate generation should all be enabled.\n\nInteractive install is also available:\n\n```bash\nHERMES_HOME=/root/.hermes bash scripts/install_memory_os.sh\n```\n\nConservative install with the same core defaults but non-interactive:\n\n```bash\nHERMES_HOME=/root/.hermes bash scripts/install_memory_os.sh --yes --production-safe \\\n  --hindsight off\n```\n\n`--production-safe` uses the same core defaults as `--operational` (all three\ncore components enabled: heartbeat, cognitive_loop, index-sync onboarding) but\nis non-interactive. Use `--no-enable-*` flags to selectively disable components.\n\nInstall helpers but do not enable recurring cron jobs:\n\n```bash\nHERMES_HOME=/root/.hermes bash scripts/install_memory_os.sh --yes --operational \\\n  --no-enable-owner-cron-onboarding\n```\n\nThe installer does not restart `hermes-gateway.service`.\n\nFor automated host rollout, use the deployment wrapper in phases. `plan`,\n`preflight`, and `dry-run` are safe gates; `apply` writes installer changes and\nstill does not restart Hermes unless `--allow-restart` and an explicit restart\ncommand are provided. Automated installs default `--llm-judge-preset` to\n`active`, which reuses the current Hermes provider/model in bounded-vote mode\nand is checked by a post-install low-clue judge probe. Use\n`--llm-judge-preset report-only` for report-only probes, or\n`--llm-judge-preset none` to keep the LLM judge disabled.\n\n```bash\n# Fresh open-source profile, local execution on the target.\npython scripts/deploy_memory_os.py \\\n  --hermes-home /root/.hermes \\\n  --profile fresh \\\n  --phase apply \\\n  --mode production-safe \\\n  --hindsight off\n\n# Existing Hermes + Hindsight profile, remote dry-run before apply.\npython scripts/deploy_memory_os.py \\\n  --host hermes-media \\\n  --remote-repo-root /opt/Hermes-Memory-OS \\\n  --hermes-home /root/.hermes \\\n  --profile upgrade \\\n  --phase dry-run \\\n  --mode operational \\\n  --hindsight auto\n```\n\n## What Gets Scheduled\n\nThe installer defaults to the `active-closure` Hermes cron profile (9 jobs).\nThese are the jobs required for the full automatic governance closure loop:\n\n| Job | Deliver | Agent | Purpose |\n| --- | --- | --- | --- |\n| `memory-os-owner-review-digest` | owner channel | yes | sends approval items and real alerts to the owner |\n| `memory-os-proposal-followups-opsgate` | `local` | no | routes approved proposals through OpsGate/report-only follow-up |\n| `memory-os-index-sync` | `local` | no | keeps the SQLite search index in sync with canonical files |\n| `memory-os-working-cleanup` | `local` | no | expires aged working-memory items |\n| `memory-os-l3-probe-verification` | `local` | no | verifies L3 code provenance and module integrity |\n| `memory-os-candidate-aggregation` | `local` | no | clusters related working-memory events into reviewable candidates |\n| `memory-os-fact-judge` | `local` | no | durable-fact LLM judge for candidate quality screening |\n| `memory-os-expression-feedback-request` | owner channel | yes | asks owner for tokenized right-brain expression quality ratings |\n| `memory-os-memory-sources-feedback-request` | owner channel | yes | asks owner for tokenized memory recall quality ratings |\n\nThe `full` cron profile adds 3 optional expression/cadence jobs on top of\nactive-closure:\n\n| Job | Deliver | Agent | Purpose |\n| --- | --- | --- | --- |\n| `memory-os-right-brain-expression` | `origin` | yes | low-frequency right-brain expression through Hermes |\n| `memory-os-module-cadence-report` | `local` | no | records module generated/skipped/error/duplicate counters |\n| `memory-os-right-brain-expression-outcome` | `local` | no | records expression outcomes for feedback linkage |\n\nSwitch to the full profile:\n\n```bash\nHERMES_HOME=/root/.hermes python scripts/install_memory_os_plugin.py \\\n  --run-owner-cron-onboarding \\\n  --owner-cron-owner-approved \\\n  --owner-cron-profile full\n```\n\nHermes owns the scheduler, transport, retry behavior, origin/local routing, and\nagent wording. Memory-OS owns the helper outputs, tokens, state transitions,\naudit, and monitor fields.\n\nOn upgraded hosts, active-closure onboarding pauses legacy optional Memory-OS\ncron jobs that are known in the registry but no longer part of the active\nprofile. They are not deleted, and they can be restored by explicitly running\nthe `full` cron profile. The monitor classifies paused optional jobs as known\noptional rather than unregistered drift.\n\n## Read-Only Monitor Dashboard\n\nThe repository includes a static monitor dashboard on the open-source frontend\ncontract `0.0.0.0:3693`. It is a presentation surface only: it reads bounded\nsnapshot evidence and has no approve/apply/send controls.\n\nGenerate and serve a live snapshot:\n\n```bash\npython scripts/memory_os_monitor_dashboard_snapshot.py \\\n  --hermes-home /root/.hermes \\\n  --profile main \\\n  --output monitor_dashboard/snapshot.generated.js\n\npython scripts/serve_memory_os_monitor_dashboard.py \\\n  --host 0.0.0.0 \\\n  --port 3693 \\\n  --snapshot-hermes-home /root/.hermes \\\n  --snapshot-profile main \\\n  --snapshot-interval-seconds 60\n```\n\nInstall it as a system service:\n\n```bash\nsudo python scripts/install_memory_os_monitor_dashboard_service.py \\\n  --repo-root /opt/Hermes-Memory-OS \\\n  --hermes-home /root/.hermes \\\n  --profile main \\\n  --host 0.0.0.0 \\\n  --port 3693 \\\n  --python-bin /usr/bin/python3 \\\n  --enable\n```\n\n## Verify\n\nAfter install:\n\n```bash\nHERMES_HOME=/root/.hermes hermes memory\nHERMES_HOME=/root/.hermes hermes plugins list\nHERMES_HOME=/root/.hermes hermes memory-os-agent-os status\nHERMES_HOME=/root/.hermes hermes memory-os-agent-os doctor\nHERMES_HOME=/root/.hermes hermes memory-os-agent-os modules status\n```\n\nExpected relationship:\n\n```text\nmemory.provider = memory_os\nplugins.enabled includes memory-os-agent-os\nplugins.enabled does not include memory_os\n```\n\n`memory_os` is selected through `memory.provider`. It should not be enabled as a\ngeneral Hermes plugin.\n\nUseful operator checks:\n\n```bash\nHERMES_HOME=/root/.hermes hermes memory-os-agent-os memory-sources stats --hours 24\nHERMES_HOME=/root/.hermes hermes memory-os-agent-os modules validate-no-send\npython scripts/memory_os_cron_adapter_probe.py --host hermes-media --output json\npython scripts/memory_os_boundary_runtime_probe.py --host hermes-media --output json\npython scripts/memory_os_3_200_monitor.py --host hermes-media --monitor-profile live --output summary\n```\n\n## Owner Interaction\n\nOwner review and feedback happen in the normal Hermes conversation channel. The\nowner should not need a root shell to approve Memory-OS items.\n\nDigest labels such as `A1`, `R1`, and `F1` are display-only list numbers. The\ndurable identity is the printed `oa_` action token.\n\nExamples of owner utterances:\n\n```text\nmemory approve oa_\u003ctoken\u003e\nmemory reject oa_\u003ctoken\u003e\nmemory apply oa_\u003ctoken\u003e\nmemory feedback oa_\u003ctoken\u003e too_mechanistic\nmemory feedback oa_\u003ctoken\u003e like_expression\n```\n\nHermes interprets the owner utterance, asks follow-up questions when ambiguous,\nand calls the structured Memory-OS review tool. Memory-OS applies only stable\ntokens through the owner action state machine.\n\nApproving a proposal does not execute work. It moves the proposal into\nhuman-controlled follow-up. Only proposal kinds with a bounded runtime target,\nrollback, monitor fields, and an explicit apply token can be applied.\n\n## Safety Model\n\nMemory-OS keeps these boundaries by default:\n\n- no direct platform sends from Memory-OS;\n- no external execution;\n- no identity writes without explicit owner-approved path;\n- no unapproved crystallized memory writes;\n- no ungoverned Hindsight export or raw-turn retain;\n- no cleanup or shadow-journal apply without a separate gate;\n- source gate (deterministic fragment detection) at the candidate-entry boundary:\n  process fragments blocked, user knowledge preserved — fail-safe by default\n  (ambiguous cases pass through to downstream gates).\n\nCanonical data lives under the Hermes profile. SQLite indexes are rebuildable.\nReview, feedback, and apply operations are audited.\n\nOptional Hindsight support is a derived projection from governed canonical\nmemory. It can retain only crystallized, owner-approved, or explicitly distilled\nrecords, tracks retain/retract in an append-only projection ledger, and returns\nrecall facts as advisory `derived_projection` evidence. Local canonical\nartifacts remain the primary authority.\n\n## Install-Time Environment Checks\n\nThe installer automatically detects and adapts to the host environment:\n\n**LLM package auto-install.** When `--install-system-modules` is used, the\ninstaller checks whether `openai` and `anthropic` Python packages are\nimportable. If either is missing, it auto-installs it via `pip`. On dry-run\nmode the installer reports `would_install` without making changes. If\nauto-install fails (network, permissions), a warning is printed to stderr and\nthe install report records `install_failed` per package so the operator can\nfollow up.\n\n**Embedder package auto-install.** The installer checks whether\n`sentence-transformers` is importable. If missing, it attempts `pip install\nsentence-transformers` (~420MB download, `paraphrase-multilingual-MiniLM-L12-v2`\nmodel). The model is downloaded once on first use. If the install or model\ndownload fails, the installer prints a clear warning and records\n`embedder_package: install_failed` in the report — the vector retrieval lane\nstays at pure FTS5 (the deterministic floor). Vector retrieval and vector edge\nproposer are both knob-gated (default off) and are safe to leave disabled on\ndisk-constrained or air-gapped hosts.\n\n**systemctl availability guard.** When `--enable-runtime` or\n`--enable-cognitive-loop` is requested, the installer probes `systemctl --user`\nbefore attempting `daemon-reload` or `enable --now`. If systemctl is\nunreachable, the systemd steps are skipped gracefully (files are still copied),\na notice is printed to stderr, and the install report records\n`start_method: systemctl_unavailable_skipped`. On such hosts Hermes agent\nfalls back to cron-based heartbeat scheduling.\n\n**Cron registry snapshot.** Every `--install-system-modules` run regenerates\nthe `memory_os_cron_registry.json` snapshot from the current `cron_registry.py`.\nThis ensures newly-added cron lanes (such as `fact_judge`) are visible to the\ngate runner after an update install, without requiring a full cron onboarding\nre-run.\n\nEnvironment adaptation checks (LLM packages, embedder, systemctl availability)\nare non-fatal — the install completes and the report carries enough detail for\nfollow-up. **Post-install core component verification (D2) is fatal by default:**\nif heartbeat or cognitive-loop timers are not active after install, the script\nexits non-zero with a boxed failure summary. Use `--skip-verify` to bypass.\n\n## Architecture\n\n```text\nHermes agent\n  owns conversation, LLM interaction, cron, delivery, origin/local routing,\n  clarification, transport, retry, and channel adapters\n\nMemory-OS provider\n  owns profile-local canonical memory, indexes, prefetch, sync_turn,\n  working memory, crystallized candidates, and audit\n\nMemory-OS inner drive (source gate)\n  deterministic fragment detection at conversation-turn boundary —\n  process fragments blocked, user knowledge preserved with user-segment primacy\n  → passive trust auto-promotion: surviving provisional records graduate to\n    permanent memory after the owner review window\n\nMemory-OS retrieval (prefetch)\n  FTS5 full-text search (deterministic floor)\n  → vector similarity via local sentence-transformers embedder (optional,\n    knob-gated; degrades to FTS5 when unavailable)\n  → graph-layer edge traversal from search anchors (optional, knob-gated)\n  → Reciprocal Rank Fusion union over all active lanes\n\nMemory-OS edge proposers\n  structural (deterministic heuristics), LLM (Hermes runtime), and vector\n  (cosine similarity over embeddings) — three independent edge sources\n  feeding the graph layer\n\nMemory-OS substrate providers\n  optionally expose governed derived projections such as Hindsight, with\n  LocalArtifact as primary authority and external facts always advisory\n\nMemory-OS Agent OS shell\n  exposes operator status, doctor, module, feedback, and review tools\n\nPortable modules\n  produce bounded artifacts: evidence scores, proposals, expression drafts,\n  cadence reports, feedback signals, and OpsGate reports\n  (deep_reflection and speak_gate are default-enabled)\n\nOwnerActionProcessor\n  is the state-changing entry point for approve, reject, feedback, allow,\n  and bounded apply actions\n```\n\n## Repository Layout\n\n```text\nmemory_os_agent/               Minimal Hermes compatibility surface\nplugins/memory/memory_os/      Memory-OS provider and core services\n  ├── inner_drive.py           Source gate: deterministic fragment detection,\n  │                            passive trust auto-promotion\n  ├── crystallized.py          Owner-approved canonical memory, candidate triage\n  ├── embedder.py              Local sentence-transformers embedder (CPU, ~420MB)\n  ├── index.py                 SQLite index, FTS5 search, vector search\n  ├── prefetch.py              Context assembly: FTS5 + vector + graph lanes,\n  │                            deterministic recall floor\n  ├── structural_edge_proposer.py  Deterministic edge heuristics\n  ├── llm_edge_proposer.py     LLM-class edge proposer (Hermes runtime)\n  └── vector_edge_proposer.py  Embedding-similarity edge proposer\nplugins/memory-os-agent-os/    Hermes shell plugin and review tools\nplugins/system/                Module contracts and coordination primitives\nplugins/modules/               Portable cognition/governance/expression modules\nscripts/                       Installer, monitor, cron helpers, validation\ntests/                         Provider, module, installer, and monitor tests\ndocs/                          Public operator docs\n```\n\nNormal users should start with [docs/quickstart.md](docs/quickstart.md) and\n[docs/configuration.md](docs/configuration.md). Internal development notes and\nvalidation history are intentionally excluded from the public upload.\n\n## Development\n\nInstall development dependencies:\n\n```bash\npython -m pip install -e \".[dev]\"\n```\n\nRun the main test suite:\n\n```bash\npython -m pytest -q\n```\n\nRun a single test:\n\n```bash\npython -m pytest -q tests/plugins/memory/test_memory_os_owner_actions.py\npython -m pytest -q -k \"test_approve_candidate\"\n```\n\nInstaller and closure checks:\n\n```bash\npython -m pytest tests/scripts/test_memory_os_plugin_install.py \\\n  tests/scripts/test_memory_os_owner_cron_onboarding.py -q\npython scripts/memory_os_public_checkout_probe.py --source head --strict\npython scripts/memory_os_public_checkout_probe.py --source working-tree --strict\ngit diff --check\n```\n\nStatic analysis (run before committing):\n\n```bash\npython scripts/memory_os_import_cycle_check.py --repo-root .\npython scripts/memory_os_write_surface_check.py\npython scripts/memory_os_static_hygiene_check.py\ngit diff --check\n```\n\nBefore changing scheduler, owner review, feedback, installer, module closure,\nor live monitor behavior, verify the owning interface and run the relevant\nchecks. Internal closure-matrix documents are not part of the public upload.\nDo not rely on conversation history as the source of truth.\n\n## Current Maturity\n\nThe operational baseline has live validation evidence:\n\n- operational installer path completed;\n- active-closure Hermes cron profile (9 jobs) present and verified;\n- deployment core guarantee (D1/D2): cognitive_loop default-on, post-install\n  core component verification fail-loud;\n- source gate (F.2): deterministic fragment detection prevents conversation\n  noise from entering the candidate queue — process fragments blocked, user\n  knowledge preserved with user-segment primacy;\n- passive trust auto-promotion (F.3): provisional records that survive the\n  owner review window are automatically promoted to permanent memory;\n- fast cron and boundary/runtime probes available for lightweight\n  deploy/audit checks before the full monitor, wired into\n  `deploy_memory_os.py` postcheck/apply sequencing;\n- neutral monitor entrypoint `scripts/memory_os_monitor.py` is available, while\n  `scripts/memory_os_3_200_monitor.py` remains the compatibility entrypoint;\n- deterministic recall floor (v4): when FTS5 and vector return zero hits,\n  Unicode-boundary floor matching + permanent baseline keeps core memory\n  accessible;\n- owner channel auto-detected from `channel_directory.json`;\n- current 3.200 full monitor status is PASS with `WARN=[]`, `FAIL=[]`, and\n  `evidence_labels=['live_monitor_pass']`; the index catch-up contract now\n  enforces `event_backlog \u003c= max_event_backlog` and a hard 900 second age cap\n  that remote `max_age_seconds` cannot widen; owner-boundary proposal auto-route\n  stops are visible as guard evidence rather than production WARN;\n- owner-approved crystallized memory, feedback ledger, proposal follow-up, and\n  bounded expression policy apply have live evidence.\n\nFull test suite: 1584 passed, 0 failed, 3 skipped. Static checks (write surface,\nimport cycle, static hygiene) all pass.\n\nThis does not mean Memory-OS is a generic autonomous executor. New proposal\nkinds require their own bounded apply contract, rollback, monitor fields, and\nowner-visible workflow.\n\n## License\n\nMIT License. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtnalit%2Fhermes-memory-os","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtnalit%2Fhermes-memory-os","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtnalit%2Fhermes-memory-os/lists"}