[ANN] DistSSHKit.jl: run a Julia project on multiple machines over SSH

Hi everyone,

I’d like to announce DistSSHKit.jl, recently added to the General registry.

 pkg> add DistSSHKit

DistSSHKit runs the same Julia project locally and over SSH, then collects the results. Uses Distributed.jl processes, not threads. Supported on macOS, Linux, and WSL2 Ubuntu (not native Windows), Julia 1.12+.

It handles the whole loop: deploys your project to each remote (via --rsync or --git), installs dependencies, runs your script, and collects the results — no scheduler and no manual per-machine setup. Two ways to run: go treats each machine as an independent, complete job; drive has a single master farm work out to all of them.

# Prepare a remote
julia --project=. -m DistSSHKit setup --rsync user@host1
julia --project=. -m DistSSHKit setup --instantiate user@host1

# go: run script.jl as-is on each host
julia --project=. -m DistSSHKit go user@host1:1 path/to/script.jl

# drive: one master farms work to local and remote workers
julia --project=. -m DistSSHKit drive local:2 user@host1:4 path/to/driver.jl

Assumes SSH access to each remote is already set up, and that Julia is installed on every machine (local and remote) beforehand — DistSSHKit deploys your project and dependencies, not Julia itself. Also needs ssh, rsync, and (git deploy only) git — pkg> add won’t install these.

Docs: Introduction · DistSSHKit.jl

The v0.3 CLI and API aren’t changing for now — we’re just fixing bugs. Separately, we’re also working on DistSSHKitQueue.jl (not yet in General), a lightweight scheduler that should make your SSH machines feel even more like real compute nodes.

Built this to make use of our lab’s Mini PCs that sit idle most of the time, and more broadly, to make Julia’s computing environment feel more integrated and approachable for small labs.

We’re also looking for help with maintenance — feedback and contributions welcome.

3 Likes