Your lab already has a super­computer. It hasn’t been turned on.

Cycleswap packages your code, ships it to every idle workstation in your lab, and runs your jobs in parallel. No Docker, Slurm, or AWS invoices, just the GPUs you already paid for.

You stay in your shell. The cluster does the rest.

fig. 01 / your shell
~/research/llama-finetune
~/research/llama-finetune ❯
fig. 02 / your lab
chen-lab
0/8 running
  • mark-ubuntu1× 4090idle
  • jesse-work1× 4090idle
  • priya-desktop1× 3090idle
  • luca-archlinux1× 4080idle
  • becky-home2× 4090idle
  • lab-shared-014× a6000idle
  • lab-shared-024× a6000idle
  • kai-ubuntu1× 3080idle
running
0
jobs
queued
0
waiting
cloud bill
$0
this run

Cycleswap packages your repo against a base image, builds the container for you, and pushes it to a private registry. Your colleagues’ idle machines pull and run. Logs and artifacts come back to you.

The infrastructure you don’t write.

01
Dockerfile authoring
containerization is automatic
02
Slurm scripts
no scheduler to learn
03
AWS / GCP invoices
use the GPUs you bought
04
Port forwarding
we handle all the routing
05
Manual artifact wrangling
outputs sync home automatically
06
Reproducibility prayers
every job records its exact image hash

Nothing to manage.

i.

Idle-aware scheduling.

The daemon yields the moment a user touches the keyboard, mouse, or any GPU process they care about.

ii.

Container-native, but invisible.

Pick a base image, then cycle generates a Containerfile from a template and builds with podman.

iii.

Datasets on demand.

Volumes mount as ordinary filesystems inside the job, fetching files only when read and then caching for future reads. Open a TB-sized dataset the same way on every machine, without syncing or copying anything up front.

iv.

Live logs, live artifacts.

Tail stdout from any job in any terminal. Outputs upload to S3 as they're written.

What it looks like, in practice.

Start from an example

Clone a working starter project and run it locally before shipping it to the cluster.

cycle examples clone hello-world

Queue a job

Package your project directory into a container and run it on any idle workstation.

cycle project upload && cycle job queue

Share data across jobs

Upload a dataset once, then reference it from any project manifest.

cycle volume upload ./datasets

Watch it run

Tail logs and outputs from your terminal while the job runs on someone else's machine across the lab.

cycle job tail --latest

Put your lab’s
idle hardware to work.