This is the default debugging order for jido_hive.
Use it when:
- a room looks stale
- a mutation appears to hang
- a worker is not registering
- a run operation is blocked
- the TUI shows something that looks wrong
- the web UI shows something that looks wrong
The governing rule is:
- server truth first
- headless operator client second
- shared operator surface third
- worker runtime fourth if the bug involves targets, room channels, or assignment execution
- TUI or web UI last
If a behavior reproduces from the headless client or shared surface, it is not a UI-only bug.
Today the system uses two transport styles:
- operator surfaces use the HTTP API
- workers use websocket room channels
That means:
setup/hiveis an HTTP-oriented operator/tooling surfacejido_hive_client room ...commands are HTTP-backedjido_hive_surfaceis the shared UI-neutral workflow layer over those operator seams- the Switchyard-backed console is HTTP-backed for room inspection and human actions
jido_hive_webis HTTP-backed for room inspection and human actionsbin/clientandbin/client-workerlaunch websocket room workers throughjido_hive_worker_runtime
jido_hive_serverauthoritative room truth, room-event truth, reduction, and connector statejido_hive_clientreusable operator workflows, room-scoped local session behavior, headless CLIjido_hive_surfaceshared room workflows for TUI and web packagesjido_hive_publicationsexplicit publication planning, execution, persistence, and publication UI modelsjido_hive_worker_runtimerelay worker registration, assignment delivery, local execution, worker-local runtime statejido_hive_switchyard_tui,jido_hive_web, andexamples/jido_hive_consolepresentation, routing, local screen state, and key handling
Use one bug, one room, one sequence.
Start here before touching the client or TUI.
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 | jqQuestions this answers:
- does the server think the room is
waiting,active,completed,closed, orfailed? - does the room already contain the contribution or context object you expect?
- is the room event feed moving even if the console looks stale?
If server truth is wrong, stop blaming the client, surface, or UI.
This is the main seam test.
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> | jq
./jido_hive_client room workflow \
--api-base-url http://127.0.0.1:4000/api \
--room-id <room-id> | jq
./jido_hive_client room tail \
--api-base-url http://127.0.0.1:4000/api \
--room-id <room-id> | jqQuestions this answers:
- can the client see the same truth as raw HTTP?
- is the bug already present before the TUI is involved?
- is the issue in operator/session semantics rather than rendering?
Use the shared surface next when the issue seems UI-adjacent but should still be reproducible without Phoenix or terminal state.
Typical examples:
- room list does not match saved rooms
- publication workspace looks wrong in an extension-mounted surface
- provenance flow or room create/run validation looks inconsistent
Then use the headless client with trace for submit, accept, or resolve bugs.
Use this for submit, accept, or resolve bugs.
JIDO_HIVE_CLIENT_LOG_LEVEL=debug \
./jido_hive_client room submit \
--api-base-url http://127.0.0.1:4000/api \
--room-id <room-id> \
--participant-id alice \
--participant-role coordinator \
--authority-level binding \
--text "debug probe" \
> submit.json \
2> submit_trace.ndjsonRules:
- JSON stays on stdout
- trace stays on stderr
- capture this before adding more logging
This is the right layer for:
- target never appears in
/api/targets - worker never joins the room channel
- assignments never arrive
- provider execution fails before the contribution is published
Useful checks:
setup/hive targets
curl -sS http://127.0.0.1:4000/api/targets | jq
bin/client-worker --worker-index 1If you need to run the worker package directly:
cd jido_hive_worker_runtime
mix escript.build
./jido_hive_worker --helpWeb:
cd jido_hive_web
mix phx.serverTUI:
cd examples/jido_hive_console
mix escript.build
./hive console --local --participant-id alice --debug --room-id <room-id>At this point you are testing:
- browser or terminal render state
- focus and selection
- local editor state
- overlays and presentation
- composition between presentation layer and the shared operator surface
If the bug is already visible headlessly or from jido_hive_surface, do not
stay here.
For bash-first debugging, prefer:
cd jido_hive_client
JIDO_HIVE_CLIENT_LOG_LEVEL=debug \
./jido_hive_client room show --api-base-url http://127.0.0.1:4000/api --room-id <room-id> \
> room.json \
2> trace.ndjsonThat keeps machine-readable output and trace output separate.
Use local iex only when bash-level reproduction is not enough.
Server:
cd jido_hive_server
iex -S mix phx.serverClient:
cd jido_hive_client
iex -S mixWorker runtime:
cd jido_hive_worker_runtime
iex -S mixDo not assume production remote shell attach exists as a supported workflow. For production, prefer HTTP, headless client commands, and platform logs.