setup

Prepare SSH hosts before go / drive.

julia --project=. -m DistSSHKit setup [options] HOST...

From Julia, use setup! for the same modes as this CLI (:delete, :rsync, :clone, :instantiate, :check, :runtest, …), or the shorter sync! / instantiate! aliases (API, First Steps · Prepare). setup!(session, :clone) requires an explicit repo= URL (clone runs on the remote).

Also: Requirements, setup --help. Flag vocabulary: User Guide.

rsync or git?

  • --rsync — just sends your local files as-is; no git needed on the remote. Good for a first try or a one-off run.
  • --clone then --sync — manages the remote as a git repository. Better if you're updating the code continuously, or you want drive --require-git to confirm the remote commit matches your local one for reproducibility.

Flags

Pick one mode per invocation (except shared options).

FlagMeaning
--checkVerify SSH, Julia, project files, deps; git commit parity when remotes have .git/
--clonegit clone onto each remote at an empty/missing path (confirm unless -y)
--rsyncRsync local tree onto missing/empty path (recommended first deploy; no remote .git/; confirm unless -y)
--syncLocal git push, then git pull on remotes (git workflows; confirm unless -y)
--pullgit pull on laptop first, then remotes (no push; confirm unless -y)
--instantiatePkg.instantiate on remotes after deploy
--runtestPkg.test() of the job project on remotes (not DistSSHKit's tests)
--cleanupKill stale Julia worker processes (local + remotes); DISTSSHKIT_SKIP_GLOBAL_WORKER_PKILL=1 skips the pkill
--deleteRemove remote project dirs (destructive; confirm unless -y)
--repo URLClone URL (default: local origin)
--remote-path PATHRemote repo root (alias --remote-dir; or DISTRIBUTED_REMOTE_PROJECT_ROOT)
--julia PATHJulia on remotes (default: auto / JULIA_DISTRIBUTED_EXE)
--ignore-julia-versionWarn instead of fail on major.minor mismatch
-q / --quietHide terminal detail; kit log under .distsshkit/setup/ still written
--progressLive status (TTY default)
--verboseFull detail (non-TTY default)
-y / --yesAccept confirmation prompts non-interactively
--hosts CSVComma-separated SSH hosts (host:N → host name only)
--hosts-file PATHAppend SSH hosts (host:N → host name only)
-v / --versionPrint DistSSHKit version and exit
-h / --helpFull help

--clone / --rsync never overwrite a nonempty remote path; use --delete first to replace. DISTSSHKIT_JOBS (default 1) may rsync several hosts at once.

Remote path

Default: ~/Parent/RepoName from the local tree. Override with --remote-path or DISTRIBUTED_REMOTE_PROJECT_ROOT (same ENV for go / drive).

~ is fine for setup shell ops (rsync / clone / check). Before controller-side collect / path math, DistSSHKit expands ~ on each SSH host to an absolute path. Prefer an absolute remote root when you can.

After --rsync

No remote .git/ — that is fine. go / drive do not pre-run sync or require git parity by default. Kit logs: {project}/.distsshkit/setup/. Ignore .distsshkit/ in the job project (User Guide).