Skip to content

tlemmons/junto-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Junto

Persistent coordination infrastructure for multi-agent LLM workflows.

Junto lets multiple Claude Code (and other LLM) agents share state, message each other, and stay coherent across sessions, machines, and projects. It is the layer below orchestration: where agents remember and find each other, not who speaks next.

This repo (junto-stack) is the adopter entry point. One git clone, one docker-compose up, working stack on your machine.

What's in the system

Component Repo Role
junto-memory tlemmons/mcp-shared-memory MCP server. MongoDB + ChromaDB-backed shared state: messages, specs, function registry, learnings, audit logs, agent directory, locks, backlog. Speaks standard MCP — works with any compliant client (Claude Code, Cursor, Windsurf, custom).
junto-inbox tlemmons/junto-inbox (forthcoming) Push-delivery plugin: subscribes to a junto-memory inbox resource and surfaces new messages into the host agent's live session. Current implementation is a Claude Code channel plugin; the role generalizes to any agent harness with a wake-on-notification primitive.
junto-control tlemmons/junto-control PWA + FastAPI dashboard for a human operator: see all agents, browse threads, send messages, approve destructive operations.
junto-stack tlemmons/junto-stack This repo. Wires the above with docker-compose; the adopter entry point.

The components ship as separate repos because they have different runtimes (Python/Docker server, TypeScript/Bun plugin, TypeScript/Svelte dashboard) and different release cadences. This repo brings them together for adopters who just want the working system.

Cross-agent by design. junto-memory is MCP-native, so any MCP-compliant agent can participate. junto-inbox is currently a Claude Code adapter; future adapters for other agent harnesses can plug into the same junto-memory backend without changing the data model.

Quickstart

Today the stack is junto-memory + your existing Claude Code agentsjunto-inbox and junto-control are forthcoming and will plug in via this same compose file when published.

# 1. Clone this repo and the memory server side-by-side
git clone https://github.com/tlemmons/junto-stack
git clone https://github.com/tlemmons/mcp-shared-memory junto-stack/components/junto-memory

# 2. Configure
cd junto-stack
cp .env.example .env
# Edit .env — the MONGO_PASSWORD line at minimum.

# 3. Bring up MongoDB + ChromaDB + memory server
docker compose up -d

# 4. Verify
curl http://localhost:8080/health
# {"status":"ok"}

Your Claude Code agents now have a shared memory MCP server at http://localhost:8080/mcp. Add it to your .mcp.json:

{
  "mcpServers": {
    "shared-memory": {
      "type": "http",
      "url": "http://localhost:8080/mcp"
    }
  }
}

Then the tools (memory_start_session, memory_send_message, memory_define_spec, ...) are available to your agents.

Adding junto-inbox (push delivery to live sessions)

When tlemmons/junto-inbox publishes, sideload instructions land here. The plugin runs as a Bun script per Claude Code session; it subscribes to your agent's inbox resource on junto-memory and surfaces new peer-agent messages into the live session as <channel> blocks.

Adding junto-control (human dashboard)

Clone alongside the other components:

git clone https://github.com/tlemmons/junto-control components/junto-control

Uncomment the junto-control service block in docker-compose.yml, set its env vars in .env (tom-web API key, SESSION_SECRET, LOGIN_PASSPHRASE), then docker compose up -d junto-control. The dashboard talks to junto-memory like any other MCP client and renders agent activity, message threads, and approval flows for a human operator.

Why three repos, not one?

Decided 2026-05-06. Three reasons separated repos win over a monorepo:

  1. Different runtimes — Python/Docker server, Bun/TS plugin, TS/Svelte dashboard. Combined CI means contributors of any one need toolchains for all.
  2. Plugin marketplace expectation — Anthropic's official plugin tree (claude-plugins-official/external_plugins/*) has zero precedent for plugin + non-plugin code in one repo. Mixing risks Phase E review friction.
  3. Contract-as-boundary — same-repo invites "while we're in here" patches that skip the spec/notify discipline. We already paid for muddy contracts (case-sensitivity bug, learning_5c447278).

This repo (junto-stack) gives adopters the one-clone experience without the costs.

License

MIT. See LICENSE.

The component repos may use different licenses (junto-memory is MIT; junto-inbox is Apache-2.0). Check each.

Status

  • 2026-05-06 — repo created, namespace claimed, walkthrough lands. junto-memory already public and operational. junto-inbox and junto-control forthcoming.

About

Docker-compose bootstrap for the Junto multi-agent coordination system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors