Problem
The kanban_db_path() function in hermes_cli/kanban_db.py uses get_hermes_home() to resolve the path to kanban.db. However, get_hermes_home() is profile-aware — it returns ~/.hermes/profiles/<profile>/ when a profile is active.
This means each profile gets its own isolated kanban.db, which completely breaks the multi-agent Kanban workflow:
- An orchestrator profile (e.g.
techlead) creates tasks in ~/.hermes/profiles/techlead/kanban.db
- Worker profiles (e.g.
dev, devops, qa) are dispatched and look for tasks in ~/.hermes/profiles/dev/kanban.db (their own profile DB)
- Workers cannot find the tasks →
kanban_show fails → workers crash in an infinite retry loop
The docstring in kanban_db.py says the board is "profile-agnostic on purpose", but the implementation contradicts this.
Impact
- Multi-agent Kanban workflows are completely broken when using profiles
- Orchestrators create tasks that workers can never see
- Workers crash-loop with "task not found" errors
- The dispatcher keeps re-spawning workers that immediately fail
Reproduction
- Create a
techlead profile with kanban toolset
- Create
dev, devops, qa worker profiles
- Start gateways for all profiles
- Send a message to techlead asking it to create a Kanban task
- Techlead creates task in
~/.hermes/profiles/techlead/kanban.db
- Dispatcher spawns worker (e.g. dev) which looks in
~/.hermes/profiles/dev/kanban.db
- Worker crashes: task not found
Fix
Modified kanban_db_path() and workspaces_root() to always use the base HERMES_HOME (~/.hermes/) regardless of the active profile. Added a _base_hermes_home() helper that returns Path.home() / ".hermes" directly.
This ensures the Kanban board and workspaces are truly shared across all profiles, as the original docstring intended.
Testing
Tested in a real multi-agent setup with 4 profiles (techlead orchestrator + dev/devops/qa workers). Before the fix, workers crashed 10+ times per task because they could not find tasks created by the orchestrator. After the fix, all profiles share the same kanban.db and the full orchestrator → worker → QA pipeline works correctly.
Problem
The
kanban_db_path()function inhermes_cli/kanban_db.pyusesget_hermes_home()to resolve the path tokanban.db. However,get_hermes_home()is profile-aware — it returns~/.hermes/profiles/<profile>/when a profile is active.This means each profile gets its own isolated
kanban.db, which completely breaks the multi-agent Kanban workflow:techlead) creates tasks in~/.hermes/profiles/techlead/kanban.dbdev,devops,qa) are dispatched and look for tasks in~/.hermes/profiles/dev/kanban.db(their own profile DB)kanban_showfails → workers crash in an infinite retry loopThe docstring in
kanban_db.pysays the board is "profile-agnostic on purpose", but the implementation contradicts this.Impact
Reproduction
techleadprofile withkanbantoolsetdev,devops,qaworker profiles~/.hermes/profiles/techlead/kanban.db~/.hermes/profiles/dev/kanban.dbFix
Modified
kanban_db_path()andworkspaces_root()to always use the base HERMES_HOME (~/.hermes/) regardless of the active profile. Added a_base_hermes_home()helper that returnsPath.home() / ".hermes"directly.This ensures the Kanban board and workspaces are truly shared across all profiles, as the original docstring intended.
Testing
Tested in a real multi-agent setup with 4 profiles (techlead orchestrator + dev/devops/qa workers). Before the fix, workers crashed 10+ times per task because they could not find tasks created by the orchestrator. After the fix, all profiles share the same
kanban.dband the full orchestrator → worker → QA pipeline works correctly.