Skip to main content
Feynman supports three compute environments for running research code and experiments: Docker for local isolated execution, Modal for serverless burst GPU workloads, and RunPod for persistent GPU pods with SSH access.

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 /replicate or /autoresearch

Running commands in a container

For Python research code:
For projects with a Dockerfile:
For GPU workloads (requires NVIDIA Container Toolkit):

Choosing a base image

Persistent containers

For iterative experiments, create a named container rather than using --rm:
This preserves installed packages across iterations. Clean up after:
Containers are network-enabled by default. Add --network none for full isolation. The mounted workspace syncs results back to the host automatically.

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

Set credentials as environment variables (or via 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

Run it:

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

Commands

SSH access

Get the IP and port from 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
Always stop or remove RunPod pods after experiments. Running pods continue to incur charges even when idle.

Choosing between Modal and RunPod