Agent execution in JARVIS is deliberately boring: a human posts in the agent channel, the monitor delivers the message into pane 1, the runtime does scoped work on the host, and the agent replies in the same channel. No hidden side channel, no mystery DMs.
Dispatch
Pane 2 runs the Rocket.Chat monitor. Inbound messages are tagged and appended to logs/dispatch.log before the agent sees them. That ordering matters when you are debugging “did the monitor fire?” versus “did the model stall?”.
Work
The runtime reads context.md, respects sandbox rules, and uses utilities for repeatable tasks — deploy scripts, inbox checks, SSH to the agent’s own host. Execution is allowed to be slow; it is not allowed to be unscoped.
Reply
Outbound messages go through rocketchat.py send with the channel name explicit. Every send is another JSON line in the dispatch log. The loop closes when the human sees the answer where they asked the question.