Skip to content

[Bug]: Kanban DB is profile-scoped instead of shared across profiles, so workers cannot see root tasks #18442

@jijamik

Description

@jijamik

Bug Description

Kanban DB is profile-scoped instead of shared across profiles, so workers cannot see root tasks

Summary

The Kanban documentation says the board is shared across all Hermes profiles and that tasks live in ~/.hermes/kanban.db.

However, when using multiple profiles, Kanban appears to resolve kanban.db relative to the active profile HERMES_HOME. This creates separate boards per profile, for example:

  • default/root profile: ~/.hermes/kanban.db
  • frontend-coder profile: ~/.hermes/profiles/frontend-coder/kanban.db

As a result, tasks created from the default profile are visible with:

hermes profile use default
hermes kanban list

but not visible from another profile:

hermes profile use frontend-coder
hermes kanban list

This also breaks Kanban workers: the dispatcher can spawn a worker for a task, but the worker profile looks in its own profile-local DB and reports that the task does not exist.

Example error from worker

Query: work kanban task t_c2cea64d
Initializing agent...
────────────────────────────────────────

  ┊ ⚡ kanban_sh   0.0s [error]
  ┊ ⚡ kanban_sh   0.0s [error]
 ─  ⚕ Hermes  ───────────────────────────────────────────────────────────────── 

     The task t_c2cea64d doesn't exist in the kanban board. It may have
     been archived, deleted, or the ID could be incorrect.

     Can you double-check the task ID? Or if you meant a different task,
     point me to it and I'll pick it up.

Environment / setup

  • OS: WSL Ubuntu

  • Hermes installed under: ~/.hermes/hermes-agent

  • Profiles used:

    • default
    • frontend-coder
  • Observed DB files:

    • \\wsl.localhost\Ubuntu\home\user\.hermes\kanban.db
    • \\wsl.localhost\Ubuntu\home\user\.hermes\profiles\frontend-coder\kanban.db

Relevant commit I was looking at:

c868425

Suspected cause

The Kanban DB path appears to be resolved from the active HERMES_HOME.

Current behavior seems equivalent to:

get_hermes_home() / "kanban.db"

Since profiles set HERMES_HOME to:

~/.hermes/profiles/<profile>

this makes Kanban profile-scoped instead of shared.

Proposed fix

Use the default Hermes root for Kanban storage instead of the active profile home.

For example, in hermes_cli/kanban_db.py:

def kanban_db_path() -> Path:
    """Return the path to the shared host-level kanban.db, independent of active profile."""
    from hermes_constants import get_default_hermes_root
    return get_default_hermes_root() / "kanban.db"


def workspaces_root() -> Path:
    """Return the shared directory under which scratch workspaces are created."""
    from hermes_constants import get_default_hermes_root
    return get_default_hermes_root() / "kanban" / "workspaces"

There may also be other Kanban-related paths that should be shared rather than profile-local, for example:

  • worker logs
  • Kanban workspaces
  • dispatcher/gateway Kanban paths
  • any code path used by worker tools like kanban_show, kanban_complete, etc.

Why this matters

The docs describe Kanban as the primitive for multi-agent, multi-profile collaboration:

shared across all your Hermes profiles

But with the current behavior, each profile can silently get its own isolated board. This makes cross-profile task assignment unreliable and causes spawned workers to fail even when the task exists in the root board.

Extra note

After patching kanban_db_path() and workspaces_root() locally to use get_default_hermes_root(), I then hit a separate gateway service issue when running from the frontend-coder profile:

Failed to start hermes-gateway-frontend-coder.service: Unit hermes-gateway-frontend-coder.service not found.

That seems separate from the Kanban DB issue, but it may be related to profile-specific gateway/service behavior. My main concern in this issue is that Kanban storage appears profile-scoped despite the docs saying it should be shared.



### Steps to Reproduce

```bash
# 1. Use default/root profile
hermes profile use default

# 2. Initialize/create a Kanban task
hermes kanban init
hermes kanban create "test task for frontend coder" --assignee frontend-coder

# 3. Confirm task exists in default profile
hermes kanban list

# 4. Switch to another profile
hermes profile use frontend-coder

# 5. Try to list/show the same task
hermes kanban list
hermes kanban show <task_id>

Expected Behavior

Kanban should be host-level and profile-agnostic, as described in the docs.

All profiles on the same host should read/write the same board:

~/.hermes/kanban.db

So the following should show the same tasks:

hermes profile use default
hermes kanban list

hermes profile use frontend-coder
hermes kanban list

And a worker spawned as frontend-coder should be able to call Kanban tools against a task created from the default/root profile.

Actual Behavior

The frontend-coder profile does not see the task.

A separate DB exists at:

~/.hermes/profiles/frontend-coder/kanban.db

The worker also fails with “task does not exist” because it appears to look up the task in the profile-local DB instead of the shared root DB.

Affected Component

Tools (terminal, file ops, web, code execution, etc.)

Messaging Platform (if gateway-related)

No response

Debug Report

*

Operating System

Windows 11

Python Version

No response

Hermes Version

No response

Additional Logs / Traceback (optional)

Root Cause Analysis (optional)

No response

Proposed Fix (optional)

No response

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

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