You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -131,7 +131,7 @@ The design bet: agents already know how to run experiments. What they need is a
131
131
|||
132
132
|---|---|
133
133
|**Sandbox scaffolding**|`/aexp-new-sandbox` (or `aexp new-sandbox --slug ...`) creates `notebooks/_sandbox/<YYYY-MM-DD>_<slug>/` with a directional-experiment README template, a `helpers.py` skeleton, and (on first use) a sandbox-root README + `.gitignore` for large outputs. Sandbox subdirs are deliberately **outside** the H→E→F enforcement chain — agent-autonomous-write territory for free-form exploration that hasn't yet earned a tracked artifact. The `aexp.sandbox.setup_sandbox_notebook` first-cell helper closes the kernel-cwd-vs-repo-root trap on remote Jupyter setups. See [docs/sandbox.md](docs/sandbox.md). |
134
-
|**Airgapped relay** (opt-in import) |`from aexp.airgapped import RelayClient` exposes a file-queue bridge between a no-internet compute node and an internet-having login node sharing `$HOME`. Designed for secure HPC sites where SSH from the agent's runtime is forbidden. The daemon (under `tmux`on the login node) services a closed whitelist — `git_pull / push / fetch / status / rebase` auto-approved, `wandb_sync` consent-gated — via atomic-rename JSON requests. `RelayClient` exposes the git verbs as semantic methods (`.pull()`, `.push(branch=...)`, etc.) so consumers don't hand-construct args. See [docs/airgapped.md](docs/airgapped.md). |
134
+
|**Airgapped relay** (opt-in; **skip unless your compute machine has no internet**) |If `git pull` works where you run Jupyter, you don't need this — it's not imported at package init and zero-cost to ignore. Otherwise (network-isolated compute with a sibling node that has internet and shares `$HOME` — common at HPC sites, also some clinical / government / research-lab setups): `from aexp.airgapped import RelayClient` runs whitelisted git/wandb commands on that sibling node over SSH from the laptop, against the shared-`$HOME` repo. Closed whitelist (`git_pull / push / fetch / status / rebase` auto-approved, `wandb_sync` consent-gated). One-shot setup via `aexp airgapped init`. Three surfaces: Python `RelayClient`, `aexp airgapped` CLI, and `mcp__aexp__airgapped_*` MCP tools. See [docs/airgapped.md](docs/airgapped.md). |
135
135
136
136
---
137
137
@@ -246,7 +246,7 @@ So a session can end cleanly with a broken `supporting_runs` citation still pres
|[docs/threads.md](docs/threads.md)| Threads (`T###`) — forward-looking research concerns broader than a hypothesis: lifecycle, linkage to H/E/F, required template sections |
248
248
|[docs/sandbox.md](docs/sandbox.md)| Sandbox scaffolding — `notebooks/_sandbox/` layout, the `/aexp-new-sandbox` slash command, the notebook first-cell convention, promotion path to tracked artifacts |
249
-
|[docs/airgapped.md](docs/airgapped.md)| Airgapped relay — file-queue bridge between a no-internet compute node and an internet-having login node sharing `$HOME`; daemon bootstrap, client API, whitelist, hardening|
249
+
|[docs/airgapped.md](docs/airgapped.md)| Airgapped relay — per-call SSH bridge that runs whitelisted git/wandb commands on an internet-having login node; SSH/ControlMaster setup, client API, CLI, MCP tools, whitelist, consent|
250
250
251
251
---
252
252
@@ -266,7 +266,7 @@ src/aexp/
266
266
schema.py # pydantic + dataclass types
267
267
mcp_server.py # FastMCP server — optional [mcp] extra
0 commit comments