jido_hive is a human-plus-AI collaboration system built as a non-umbrella
Elixir monorepo.
The governing rule is simple:
jido_hive_serverowns room truthjido_hive_clientowns reusable operator and room-session behaviorjido_hive_surfaceowns the UI-neutral operator surface over the client seamjido_hive_worker_runtimeowns relay workers and local assignment execution- Switchyard packages and the Phoenix web app consume that shared surface; they do not redefine it
If a room behavior cannot be reproduced from the headless client surface, the seam is still wrong.
This repo currently contains:
core/skill_contractsref-only skill manifest, capability binding, composition, version, and invocation contracts for governed AI skill bundlescore/skill_enginememory-default skill admission, versioning, bounded composition, and invocation gate logiccore/agent_coordinatorworkflow-scoped spawn, handoff, cancel, and supervise contracts for governed agentscore/inter_agent_messagingbounded inter-agent message contracts with tenant, authority, budget, and trace gatescore/shared_memory_facadeexplicit shared-memory grants over governed memory scopescore/coordination_patternsbounded orchestrator-worker, debate, consensus, and hierarchical decomposition pattern contractsconformance_contracts/skill_conformance_contractsexternal-author ExUnit helpers that validate safe skill manifests without importing runtime internalsjido_hive_serverauthoritative room engine, REST API, websocket room transport, persistence, and connector statejido_hive_clientheadless operator API, JSON CLI, and room-scoped local session boundaryjido_hive_surfaceUI-neutral operator workflows for room CRUD, room workspace, provenance, and run-control flows overjido_hive_clientjido_hive_publicationsexplicit publication planning, execution, persistence, and publication UI models over canonical room resourcesjido_hive_worker_runtimelong-lived relay worker runtime, local executor stack, worker CLI, and worker control APIjido_hive_switchyard_siteJido Hive resource/action mapping over generic Switchyard contractsjido_hive_switchyard_tuiJido Hive operator workflow integrated through the generic Switchyard component runtimejido_hive_webPhoenix LiveView browser UI over the same shared operator surfaceexamples/jido_hive_consolerunnable composition layer and smoke helper over the Switchyard-backed Jido Hive TUI- the root workspace project shared quality gates and monorepo tooling
Start with this file, then the package READMEs.
bin/setupStart the server:
bin/live-demo-serverStart at least two workers in separate shells:
bin/client-worker --worker-index 1
bin/client-worker --worker-index 2Or use the helper menus:
bin/hive-control
bin/hive-clientscd examples/jido_hive_console
mix deps.get
mix escript.build
./hive console --local --participant-id alice --debugcd jido_hive_web
mix setup
mix phx.serverThen open http://127.0.0.1:4100/rooms.
cd jido_hive_client
mix deps.get
mix escript.build
./jido_hive_client room list --api-base-url http://127.0.0.1:4000/api
./jido_hive_client room show --api-base-url http://127.0.0.1:4000/api --room-id <room-id>
./jido_hive_client room workflow --api-base-url http://127.0.0.1:4000/api --room-id <room-id>
./jido_hive_client room focus --api-base-url http://127.0.0.1:4000/api --room-id <room-id>
./jido_hive_client room inspect --api-base-url http://127.0.0.1:4000/api --room-id <room-id>
./jido_hive_client room provenance --api-base-url http://127.0.0.1:4000/api --room-id <room-id> --context-id <context-id>
./jido_hive_client room submit --api-base-url http://127.0.0.1:4000/api --room-id <room-id> --participant-id alice --text "hello"bin/hive-control --prod
bin/hive-clients --prodflowchart LR
subgraph Operator[Operator surfaces]
Headless[Headless CLI]
Session[RoomSession consumers]
TUI[Switchyard-backed TUI]
Web[Phoenix LiveView UI]
Setup[setup/hive and helper scripts]
end
subgraph Client[jido_hive_client]
OperatorAPI[JidoHiveClient.Operator]
RoomSession[JidoHiveClient.RoomSession]
Embedded[JidoHiveClient.Embedded]
end
subgraph Surface[jido_hive_surface]
SurfaceRooms[JidoHiveSurface room workflows]
end
subgraph Publications[jido_hive_publications]
PublishSurface[JidoHivePublications publication workflows]
end
subgraph Workers[jido_hive_worker_runtime]
WorkerCLI[worker CLI]
RelayWorker[relay worker]
Executor[executor stack]
end
subgraph Server[jido_hive_server]
API[REST API]
Relay[websocket relay]
Rooms[room reducer and snapshots]
Connectors[connector state]
end
Headless --> OperatorAPI
Headless --> RoomSession
Session --> RoomSession
TUI --> SurfaceRooms
TUI --> PublishSurface
Web --> SurfaceRooms
Web --> PublishSurface
Setup --> API
SurfaceRooms --> OperatorAPI
PublishSurface --> OperatorAPI
PublishSurface --> Connectors
Web --> RoomSession
RoomSession --> Embedded
OperatorAPI --> API
Embedded --> API
WorkerCLI --> RelayWorker
RelayWorker --> Relay
Relay --> Rooms
API --> Rooms
RelayWorker --> Executor
- the server decides what the room is
- the client reads and mutates that truth through reusable operator/session seams
- the shared surface turns that seam into UI-neutral room workflows
- optional extensions such as
jido_hive_publicationslayer publication behavior on top of canonical room resources - the worker runtime executes assignments and publishes structured results
- the Switchyard-backed TUI and the Phoenix web UI both render those seams interactively
- the example console is only a runnable composition layer
Standalone helpers and local demos can keep using explicit CLI flags, local config, and documented operator tokens at boot boundaries. Governed worker and connector paths do not use those inputs as authority. A governed worker launch must provide a governed authority ref, worker ref, and credential ref; provider selection, model selection, control endpoint settings, and credential refs are materialized from that packet and direct singleton/default fields are rejected.
Server connector endpoints accept a governed connector authority packet for install and completion flows. In governed mode raw secrets, direct secret sources, manual token fields, OAuth state fields, and direct identity overrides are rejected at the HTTP boundary. Connector completion stores external secret refs and opaque credential refs only; raw materialized values are not projected into responses, logs, snapshots, or docs.
What is unique here is not the transcript or the websocket transport. It is the combination of:
- server-owned workflow truth
- a typed shared context graph with provenance, contradiction, and canonical signals
- the same room model exposed through API, headless CLI, and TUI
- explicit extension packages for graph projection and publication workflows
- core/agent_coordinator/README.md workflow-scoped spawn, handoff, cancel, and supervision contracts
- core/inter_agent_messaging/README.md bounded inter-agent message routing contracts
- core/shared_memory_facade/README.md explicit shared-memory grants over governed memory scopes
- core/coordination_patterns/README.md bounded reusable multi-agent pattern contracts
- core/skill_contracts/README.md ref-only skill manifest and invocation contracts
- core/skill_engine/README.md memory-default skill admission and invocation gate logic
docs/persistence.mdrepo-level persistence tiers, owner scopes, and restart claimsdocs/product_no_bypass.mdproduct-surface scan scope and store-owner package exclusions- conformance_contracts/skill_conformance_contracts/README.md external-author skill conformance helpers
- jido_hive_server/README.md server truth, routes, publications, deployment
- jido_hive_client/README.md operator API, room session boundary, headless CLI
- jido_hive_surface/README.md UI-neutral operator surface for TUI and web presentation packages
- jido_hive_publications/README.md explicit publication extension over canonical room resources
- jido_hive_worker_runtime/README.md relay workers, executor stack, worker CLI
- jido_hive_switchyard_site/README.md Jido Hive site adapter for Switchyard
- jido_hive_switchyard_tui/README.md Jido Hive operator workflow on the Switchyard component runtime
- jido_hive_web/README.md Phoenix LiveView browser UI over the shared operator surface
- examples/jido_hive_console/README.md runnable console composition layer
Run repo-wide quality gates from the repo root:
mix ciUseful workspace shortcuts:
mix mr.deps.get
mix mr.format
mix mr.compile
mix mr.test
mix mr.credo
mix mr.dialyzer
mix mr.docsAlways debug in this order:
- server truth
- headless
jido_hive_client - worker runtime only if the bug is assignment delivery or local execution
- Switchyard-backed TUI
- example composition layer
Representative first checks:
setup/hive server-info
curl -sS http://127.0.0.1:4000/api/rooms/<room-id> | jq
curl -sS http://127.0.0.1:4000/api/rooms/<room-id>/events | jqThen reproduce headlessly:
cd jido_hive_client
mix escript.build
./jido_hive_client room show --api-base-url http://127.0.0.1:4000/api --room-id <room-id>
./jido_hive_client room tail --api-base-url http://127.0.0.1:4000/api --room-id <room-id>
./jido_hive_client room submit --api-base-url http://127.0.0.1:4000/api --room-id <room-id> --participant-id alice --text "debug probe"Only after that should you open the TUI:
cd examples/jido_hive_console
mix escript.build
./hive console --local --participant-id alice --debug --room-id <room-id>For the detailed triage sequence, read docs/debugging_guide.md.
- docs/architecture.md
- docs/debugging_guide.md
- setup/README.md
- docs/developer/multi_agent_round_robin.md
See docs/persistence.md for tiers, defaults, adapters, unsupported selections, config examples, restart claims, durability claims, debug sidecar behavior, redaction guarantees, migration or preflight behavior, and no-bypass scope when applicable.