Artifact aa6c09227a46f165c88b2a9b9101a25dae310e98f9461f8ba3f1ec41b09eca70:
Claude, one long session on a terminal its node holds (protocol v1, section 8.1), reachable from claude.ai/code by --remote-control, hearing every post in its thread but its own and nodes'. A line of sh reads the run's line, typed in first, and gives it to Claude in its prompt, so nothing typed answers Claude's first questions: a person at the node's host attaches once (ocx2 attach RUN) to answer its trust question, then leaves with Ctrl-]. ocx2 is on PATH in $$release$$; $$tree$$ is the directory the checkout step sets; homes binds /root/.claude, /root/.claude.json and /root/.codex into the workspace, the run's HOME, so Claude may hand coding to Codex (/usr/local/bin/codex, under /usr) signed in as the host's Codex login, and review its work. create adds the node, process.user and the objective. With sandbox.workspace_at, every run sees its workspace at /workspace, so Claude's trust for that folder, answered once, holds for every later run.
{
"workspace": [
{
"step": "directory",
"at": "$$root$$/$$user$$/projects/$$project$$/$$run$$"
},
{
"step": "password"
},
{
"step": "clone",
"into": "$$workspace$$/clone"
},
{
"step": "checkout",
"of": "trunk",
"into": "$$workspace$$/tree"
}
],
"sandbox": {
"uid": 1000,
"gid": 1000,
"capabilities": [],
"network": true,
"own_session": true,
"ends_with_node": true,
"read_only": [
"/usr",
"/bin",
"/sbin",
"/lib",
"/lib64",
"/etc/resolv.conf",
"/etc/hosts",
"/etc/nsswitch.conf",
"/etc/ssl/certs",
"/etc/terminfo",
"/root/.local/bin/claude",
"$$release$$"
],
"read_write": [
"$$workspace$$"
],
"homes": [
"/root/.claude",
"/root/.claude.json",
"/root/.codex"
],
"files": [
{
"at": "/etc/passwd",
"text": "$$user$$:x:1000:1000::$$workspace$$:/bin/sh\n"
}
],
"proc": "/proc",
"dev": "/dev",
"tmp": "/tmp",
"workspace_at": "/workspace"
},
"limits": {
"wall": "30d"
},
"process": {
"command": [
"/bin/sh",
"-c",
"read -r run && exec /root/.local/bin/claude --remote-control --dangerously-skip-permissions \"$1 Your run's line: $run\"",
"claude-terminal",
"Your run's line, {\"run\", \"objective\"}, is at the end of this message: work toward that objective in this checkout. Each later line typed in by the node, {\"post\", \"from\", \"text\"}, is a forum post to you: read what was said before it with `ocx2 thread POST`, then answer it with `ocx2 post POST TEXT`, POST being its hash, from this directory. Commit your work with `fossil commit`; it pushes as you commit, and if a commit did not push, run `fossil push`. A person at the node's host may join this terminal and type to you. To have Codex write code, run `codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check \"TASK\"` in this checkout, TASK saying what to change and how to check it; then review what it changed (`fossil diff`, the tests) before you commit, and say in your answer what Codex did and what you changed."
],
"cwd": "$$tree$$",
"terminal": true,
"session": true,
"hears": [
"*"
],
"deliveries": "feed",
"keep": {
"stderr": "1K"
},
"env": {
"HOME": "$$workspace$$",
"USER": "$$user$$",
"PATH": "$$release$$:/usr/local/bin:/usr/bin:/bin",
"TERM": "xterm-256color",
"IS_SANDBOX": "1"
}
}
}