Docker
Docker runs research code inside isolated containers while Feynman stays on the host. The container receives the project files, runs the commands, and results sync back to the mounted directory. When to use Docker:- Running untrusted code from a paper’s repository
- Experiments that install packages or modify system state
- Any time you need safe, isolated local execution
- Replication workflows in
/replicateor/autoresearch
Running commands in a container
For Python research code:Choosing a base image
Persistent containers
For iterative experiments, create a named container rather than using--rm:
Containers are network-enabled by default. Add
--network none for full isolation. The mounted workspace syncs results back to the host automatically.Modal
Modal provides serverless GPU compute. You write a decorated Python script and run it — no pod lifecycle to manage. Modal is the right choice for stateless burst workloads like training runs, inference jobs, and benchmarks. When to use Modal:- Burst GPU jobs (training, inference, benchmarks)
- Stateless work where no persistent state is needed between runs
- Jobs where you want to avoid managing instance lifecycle
Setup
modal setup):
Commands
GPU types
T4, L4, A10G, L40S, A100, A100-80GB, H100, H200, B200
For multi-GPU jobs, use "H100:4" for 4× H100s.
Script pattern
RunPod
RunPod provides persistent GPU pods with SSH access. It is suited for long-running experiments, large dataset processing, and multi-step work where you need to SSH in between iterations. When to use RunPod:- Long-running experiments that need persistent state
- Large dataset processing
- Multi-step work where SSH access between iterations is needed
- Experiments that cannot fit into a stateless function model
Setup
- macOS
- Environment variable
Commands
SSH access
runpodctl get pod <id>. Pods must expose port 22/tcp.
Available GPU types
NVIDIA GeForce RTX 4090, NVIDIA RTX A6000, NVIDIA A40, NVIDIA A100 80GB PCIe, NVIDIA H100 80GB HBM3