Repository navigation
docs: name the sandbox and the egress beside the memory server - #33
Conversation
The README and the reference stack showed the memory server as the whole system. The sandbox and the egress also keep the system safe. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bhj4Ck4y5iwZUsjpgQx8A2
There was a problem hiding this comment.
🟢 Approval recommended
The change is a self-consistent, documentation-only edit with preserved diagram alignment, intact table formatting, and no factual or grammatical issues.
No open issues 🎉
What changed in this PR
This PR updates prose and diagrams in README.md and docs/reference-stack.md to name the sandbox and the egress as distinct safety parts alongside the memory server, rather than describing the memory server as the whole safety boundary. It clarifies that no single component is the safety boundary, and that the memory server and the egress enforce the same grants while the sandbox confines the harness's network. The change is documentation-only and does not touch any crate code.
Changes:
- README: reworks the "What it is" paragraph to name the sandbox, label the diagram's confined box as "sandbox", and add a note explaining what "unconfined" stdio use means.
- reference-stack.md: adds "Launcher and sandbox" and "Egress" rows to the stack table, moves the per-call ceiling check from the memory server to the egress, and adds a paragraph describing which part does which check.
- reference-stack.md: names the launcher, sandbox and egress in sections 4, 6 and 7, including two new crate-table rows.
| File | Description |
|---|---|
| README.md | Names the sandbox as a safety part, relabels the diagram box, clarifies unconfined stdio semantics. |
| docs/reference-stack.md | Adds launcher/sandbox and egress rows, relocates the ceiling check to egress, and names these parts across sections 4, 6, 7. |
I verified the ASCII diagram alignment is preserved (the old label "confined harness, no network" and the new "sandbox: harness, no network" are the same length, so the box borders still align), the markdown table rows keep the correct column counts, and the relocated "ceiling check per outbound call" claim is consistent between the README prose, the reference-stack table, and the new explanatory paragraph. No code is touched, consistent with the docs-only claim.
Review effort: Balanced
The egress forwards the harness's model calls only. A tool runs in the launcher, outside the sandbox. A hosted tool's call goes out through the egress. A reader test and a check against the code found the error, and five smaller errors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bhj4Ck4y5iwZUsjpgQx8A2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bhj4Ck4y5iwZUsjpgQx8A2
A second reader test and check against the code found these errors. The egress does not meter a tunnelled call. A browser tool does not go through the egress. The sandbox mounts more than the text said. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bhj4Ck4y5iwZUsjpgQx8A2
A third reader test and check against the code found two incomplete lists and five sentences with two readings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bhj4Ck4y5iwZUsjpgQx8A2
…unts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bhj4Ck4y5iwZUsjpgQx8A2
Summary
The README and the reference stack described the memory server as the system. The memory server is one part. The sandbox, the egress and the tools also keep the system safe. The README did not name the sandbox, and the reference stack did not name the sandbox or the egress.
This change does these things:
amemprocess, on a tool server, or in the owner's browser.amem servekeeps and loses, and howamem launch --unconfinedis different.Reader test
This change touches only Markdown outside
crates/andtaps/, somake checkdoes not apply. In place of the adversarial pass, two fresh agents tested the text: a reader, and a check against the code. The procedure is in a separate PR.I wrote these questions first:
amemtries to connect to a website. Which part stops it? Which part decides whether a model call may go out?amem serveover stdio. What protection do you keep, and what do you lose?The reader read only the two changed files and the diff. The results for each round:
amem servestill uses an egress for a hosted tool.The reader also found problems in text that this change does not touch. Examples: "the compose file above" refers to no compose file, and the crate table in the reference stack names binaries that do not exist. These stay open.
Posted by Claude on behalf of @sstriker