Skip to content

[RFC] A coordination substrate for multi-agent OpenJarvis (messaging, dispatch, shared memory) #474

Description

@gilbert-barajas

(Discussion issue — per CONTRIBUTING, opening for discussion before any PR, since this proposes a new primitive touching BaseAgent / Tools & Memory. Deferential by design: this defers to your operator-composition direction and invites co-design.)

Motivation

OpenJarvis today is strongest at single, composable agents. The roadmap names the next frontier but marks it open:

  • Operator composition / chainingDesign Needed ("operator A feeds results to operator B").
  • Agent-to-agent coordination — no explicit messaging/dispatch layer today.
  • Federated memory — synchronizing memory across devices — in focus.

As local-first personal AI grows past one agent, these converge into one missing piece: a coordination substrate — a place for agents to message each other, dispatch and track work, and share persistent memory + identity across sessions and devices. Building this well (durable queues, addressing, persistence, observability) is a real systems project on its own.

Proposal

Adopt a small coordination interface — in the spirit of how InferenceEngine abstracts serving across Ollama/MLX/vLLM — with Mycelium as the first pluggable implementation. Mycelium (SoftBacon-Software/mycelium, Apache-2.0, matching OpenJarvis) is an existing open coordination platform built for exactly this: tasks, memory, messaging, dispatch, savepoints, designed to run on hardware you own.

Mapping to the roadmap:

roadmap item Mycelium primitive
operator composition / chaining tasks + declared dependencies (A → B)
agent-to-agent coordination channels / direct messaging + addressing
federated / persistent memory memory backends + savepoints (cross-session identity)

Integration shape (respecting your constraints)

Per CONTRIBUTING's "may-not-be-accepted" list (no breaking changes, no heavy deps, no UX friction), this lands as an optional extra, not a core requirement:

  • A CoordinationBackend interface registered via your existing registry pattern; NullCoordination (single-agent, today's behavior) is the default. Zero impact unless a user opts into multi-agent.
  • The Mycelium backend is an optional install that talks to a Mycelium instance over its API (loose coupling) — no new heavy dependency in the core, and it keeps the license boundary clean (separate service).
  • Start minimal: messaging + task dispatch first; memory/federation second, aligned with your federated-memory work.

What we bring

Open questions (for co-design)

  1. Should coordination be a core primitive or strictly an optional extra? (We lean optional-first.)
  2. How should the interface relate to your planned operator-composition design — does composition sit above a coordination backend, or are they the same layer?
  3. Where does this meet federated memory — one backend, or memory-as-a-Mycelium-capability?

Honest notes

  • This is a proposal to fill a gap, shaped to your architecture — not a finished design. We'll build to your interfaces.
  • Scope discipline: ship the smallest useful slice (messaging + dispatch behind a default-off backend) and earn the rest.

Metadata

Metadata

Assignees

No one assigned

    Fields

    Priority

    P2

    Effort

    L

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions