worker
FlowWorkflowpublish_events → event table
StepRunnerfollows the agent's log (helper container tail -F) → live output table
write
myorch-data/events.dbSQLite WAL · event table · live output table
read
myorch serve (ui container)
channels/relay.pyevents · commands · content
Watchdogreads events, sends reminders
Slack adapterin-process follow · Socket Mode, outbound
channels/http.py · /channelSSE /events /output · JSON /events.json /runs · POST commands
HTTP · SSE
Browser consoleSSE + /api
Claude Code channelseparate process started by the session · approve, reject, request changes return 403
Host CLIGET /channel/events.json, never opens the file directly
Slack DM threadsprogress · questions · approval buttons
Commands: relay identifies the person via channels.yaml → engines/temporal/client.py → start, signal, cancel, resume
FlowWorkflow (Temporal)Content (files, diffs, logs) goes separately: relay → DockerVolumeStore's helper container → runs/<id>/
Events are sent only at the start, when a person is needed and at the end, plus detail events for drawing run state. Live output has its own table.