feat: implement ssh_remote and colab_drive experiment modes#17
Open
Pseudoataraxia wants to merge 4 commits intoaiming-lab:mainfrom
Open
feat: implement ssh_remote and colab_drive experiment modes#17Pseudoataraxia wants to merge 4 commits intoaiming-lab:mainfrom
Pseudoataraxia wants to merge 4 commits intoaiming-lab:mainfrom
Conversation
Add two new experiment execution backends: - ssh_remote: execute experiments on remote GPU servers via SSH, with optional Docker-over-SSH for full container isolation. Includes basic sandboxing (HOME override + unshare --net). - colab_drive: async execution via Google Drive sync. A Colab notebook polls a shared Drive folder for tasks, executes them, and writes results back. No SSH tunnel needed. Also fixes a bug where llm.acp.timeout_sec was parsed from config but never passed to ACPClient, causing all ACP calls to use the hardcoded 600s default. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Covers command building, connectivity checks, mocked execution flows, Google Drive async submit-poll-collect, factory integration, and the ACP timeout_sec passthrough fix. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…mode Previously, if unshare was not available on the remote host (e.g. macOS), the sandbox silently fell back to running without network isolation. Now it checks for unshare first and prints a clear WARNING to stderr, so users know their experiment code has network access. Verified end-to-end on macOS localhost SSH. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Document the execution flow, protocol, and result schema for _execute(), _submit_and_wait(), and _collect_result(). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ssh_remoteexperiment mode: execute experiments on remote GPU servers via SSH, with optional Docker-over-SSH for full container isolationcolab_driveexperiment mode: async execution via Google Drive sync with a Colab worker notebook — no SSH tunnel neededllm.acp.timeout_secwas parsed from config but never passed toACPClient, causing all ACP calls to use the hardcoded 600s defaultDetails
ssh_remote mode
SshRemoteSandboxclass implementingSandboxProtocolHOMEoverride +unshare --netsandboxing) or Docker-over-SSH (full container isolation)SshRemoteConfigwithuser,port,key_path,remote_python,setup_commands, and Docker optionsunshareis unavailable instead of silent fallbackcolab_drive mode
ColabDriveSandboxclass implementingSandboxProtocolpending/, Colab worker polls and executes, results written todone/ACP timeout fix
ACPClient.from_rc_config()was not passingtimeout_secfrom config, so all ACP calls used the hardcoded 600s default regardless of configTest plan
ssh+scpConfig examples
🤖 Generated with Claude Code