Install And Profile Isolation
May 13, 2026 ยท View on GitHub
Brainstack is a Hermes memory plugin. It gives Hermes durable, inspectable, token-efficient memory. It is not an orchestrator, scheduler, Kanban owner, or company/workflow executor.
Pieces
brainstack/: the memory kernel plugin.scripts/install_into_hermes.py: the wizard that copies Brainstack into a Hermes checkout, patches supported Hermes seams, enables config, and can write profile-isolation paths.scripts/brainstack_doctor.py: checks that the active Hermes checkout and config match what Brainstack can actually run.extensions/hermes_proactive/: optional Hermes wake/pulse/surfacing runtime. It is not Brainstack core and does not install Evolver.
Basic Install
Dry run:
python install_into_hermes.py /path/to/hermes-agent --enable --doctor --dry-run --runtime docker
Install:
python install_into_hermes.py /path/to/hermes-agent --enable --doctor --runtime docker
Local non-Docker:
python install_into_hermes.py /path/to/hermes-agent --enable --doctor --runtime local --embedding-runtime none
Official Isolation Modes
Shared Backend, Scoped Profiles
Use one Brainstack backend and let Brainstack isolate by principal/workspace scope. This is for multiple Hermes profiles that may share one physical memory backend safely.
python install_into_hermes.py /path/to/hermes-agent \
--profile default \
--enable \
--isolate-brainstack \
--isolation-mode shared-scoped \
--doctor \
--dry-run
Full Home Isolation
Use a dedicated effective HERMES_HOME for the isolated profile. Brainstack and
the optional proactive extension both stay under that home:
python install_into_hermes.py /path/to/hermes-agent \
--profile titans-agent \
--enable \
--isolate-brainstack \
--isolation-mode full-home \
--doctor
This writes the normal flat defaults:
plugins:
brainstack:
db_path: "$HERMES_HOME/brainstack/brainstack.db"
graph_backend: kuzu
graph_db_path: "$HERMES_HOME/brainstack/brainstack.kuzu"
corpus_backend: chroma
corpus_db_path: "$HERMES_HOME/brainstack/brainstack.chroma"
extensions:
hermes_proactive:
state_base_dir: "$HERMES_HOME/home/brainstack"
Full-home mode is only truly full isolation if Hermes runs that profile with the
profile directory as its effective HERMES_HOME.
Path-Override Isolation
Use one Hermes install/home but point Brainstack and proactive runtime state to a profile-specific directory:
python install_into_hermes.py /path/to/hermes-agent \
--profile titans-agent \
--enable \
--isolate-brainstack \
--isolation-mode path-override \
--doctor
The wizard writes flat Brainstack paths plus:
extensions:
hermes_proactive:
state_base_dir: /path/to/profile/brainstack/proactive_runtime
Unsupported Config Shape
Do not use this as an official Brainstack config:
plugins:
brainstack:
stores:
sqlite:
db_path: /some/profile/brainstack.db
Those nested stores.* keys are not Brainstack runtime keys. The doctor now
reports them as ignored and tells you the supported flat replacement:
plugins.brainstack.db_pathplugins.brainstack.graph_db_pathplugins.brainstack.corpus_db_pathextensions.hermes_proactive.state_base_dir
Verification
Run the doctor:
python scripts/brainstack_doctor.py /path/to/hermes-agent --config /path/to/config.yaml --runtime docker --check-docker
For a named Hermes profile, use --profile instead of manually resolving the
profile config path:
python scripts/brainstack_doctor.py /path/to/hermes-agent --profile titans-agent --runtime local
Run the multi-profile shared-backend verifier:
python scripts/verify_multi_profile_shared_backend.py
Run proactive extension checks:
python -m pytest -q tests/test_hermes_proactive_doctor_runtime.py
Answer For The Common Question
If default and coder may share Brainstack but titans-agent must be fully
separate, do not copy a giant nested stores.* block by hand.
Use one of these:
- best: run
titans-agentwith a dedicated effectiveHERMES_HOME, then use--profile titans-agent --isolate-brainstack --isolation-mode full-home; - or: use
--isolation-mode path-override, which writes flat Brainstack paths and a proactive extensionstate_base_dirunder the profile directory.
Afterward, run the doctor. If it reports ignored nested keys or shared proactive runtime state, the profile is not fully isolated yet.