Skip to content

Kanban database is profile-aware, breaking multi-agent orchestrator → worker workflows #19036

@pdonizete

Description

@pdonizete

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:

  1. An orchestrator profile (e.g. techlead) creates tasks in ~/.hermes/profiles/techlead/kanban.db
  2. Worker profiles (e.g. dev, devops, qa) are dispatched and look for tasks in ~/.hermes/profiles/dev/kanban.db (their own profile DB)
  3. 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

  1. Create a techlead profile with kanban toolset
  2. Create dev, devops, qa worker profiles
  3. Start gateways for all profiles
  4. Send a message to techlead asking it to create a Kanban task
  5. Techlead creates task in ~/.hermes/profiles/techlead/kanban.db
  6. Dispatcher spawns worker (e.g. dev) which looks in ~/.hermes/profiles/dev/kanban.db
  7. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — degraded but workaround existscomp/cliCLI entry point, hermes_cli/, setup wizardtype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions