Date: 2026-10-19 Status: Revised Again
QNTX interacts with a Node Agent; Claude Code in our case, until we support Pi more properly, this ADR should be just about the Claude Code Node Agent, at some point this ADR needs to be split (again), previously split off is: [[ADR-053-Namespace-Agents]]
by on what it writes is the agent."NODE agent, one persistent session agent that is QNTX itself as expressed to ROOT."
"we cant just have any ai be the ROOT agent"
[agent.root]: its model, its effort, and a reference to the Claude plan token. A node that names no model has no NODE agent, and nothing stands in for the model named.--resume continues it, and Claude Code compacts its own context.claude say says something to it and answers with what it said back."NODE is ROOT"
"i want to be able to do anything"
"anything that can talk to the NODE agent can say anything to it"
"make sure --permission-mode for Claude is configurable in the Agent Element"
bypassPermissions to a process run as root, which is how the node runs on the box. Its hands there are what allow names.The loop is Claude Code's, not the node's: "accepted." The node hosts the process. It starts it, resumes it and stops it.
Update: This Entire Section may be moved elsewhere, as a development doc, its not ADR ready yet. The Entire Pi story, everything Pi, move it to a separate Development doc under docs.
"IS BECAUSE I WANT TO EXPECT THAT IT WILL HAPPEN THAT I RUN OUT"
"AND HAVE A FALLBACK"
"NOT BE ENTIRELY DEPENDENT ON ONE HARNESS"
"IF PI DOESNT WORK, WE PAY MONEY FOR BEDROCK"
"IT MEANS WE ALSO NEED A PI ELEMENT"
It runs in Claude Code or in Pi (earendil-works/pi). What is said in the Claude element runs in Claude Code, and what is said in the Pi element runs in Pi. "WHY ISNT PI SEPARATE"
The one in Pi is an agent of its own: its own DID, its own token, its own session. Each element reads its own agent's session, and they answer at the same time.
Pi reaches the node's MCP with the agent's own token, and its model calls go
to the provider am.toml names under [agent.root.pi].
The node gets Pi as it gets Claude Code, pinned by the build and nothing installed by hand: a revision of Pi's flake, built by the box's Nix.
Pi asks before no tool call and has no sandbox, so on the box its hands are root's with nothing between.
Each agent keeps its own context. What was said to one is in its session, and is not in another's memory.
"LETS SAY FOR DEVELOPMENT WEE USE"
openai/gpt-oss-120b through OpenRouter. In Claude Code only
Claude can be it."an agent session for a particular namespace, different concept from the ROOT host agent"
"The shared namespace agent, opted into"
"The Namespace agent is a common Agent of the Namespace it’s opted into. That means the one who sets it up knows it’s shared amongst anyone who has REACH on it."
"The one who set’s it up does, they provide their own Subscription or API key"
"Namespaces shouldn’t be catalogued"
claude --bg on the operator's machine
(teranos/ground RITUAL.html): the same runner, on the box.As ROOT, I open the node and say something to it. It answers as the node, and when I ask it to do something it does it itself: a sigil, or a command on the box. Each turn is attested by the ROOT agent's own DID, and tomorrow it is the same session, readable as a transcript.
"for development purposes SUPER will be allowed temporarily, but SUPER needs to be removed before the work get's merged."
"remove SUPER"
Its reach line names ROOT and nobody else.
"another thing i want it to have is its own git user so it can develop and create branches and so on."
"QNTX has a lot of github related functionality that we arent properly utilizing"
github ask, with github operations
for what can be asked), as a plugin asks over gRPC. It is spent as the App's
installation where the repository is."I want to get into a position where i can use the Claude Element to prepare PR's againt QNTX"
Not there: the App reads contents and cannot write them, and where the agent runs has none of what building QNTX takes.
For the first story. It ends in something that can be checked.
agent:root) and gives it one session in each harness.The node does not see the model traffic of an agent Claude Code runs.
"for a later phase we make sure it always runs with ground"
Ground's last release is behind its main, so Ground on the box takes a Ground release.
"Upgrading the box is in scope"
A turn that Claude Code cannot answer because the plan is spent is not handed to Pi by itself: what Claude Code answers then has not been seen.
"to get ground setup for the ROOT agent"
"which is for A2A agents to receive a coment first, or be known that they run under ground before they do A2A shut"
"another thing i want is that rituals run on the box from now on, not locally on my machine per se."