Prepare
First-time remotes before the Demo. Local-only demos can skip this page.
Also see Requirements, User Guide · setup, Home.
First-time remotes
Every machine that runs jobs needs the project and its dependencies. Deploy the tree, then instantiate on each remote before go / drive:
# Local (once): deps for this project
julia --project=. -e 'using Pkg; Pkg.instantiate()'
# Remotes: deploy the tree, then install deps from the Manifest Pkg reads.
# For a workspace member that lock may sit next to the parent Project.toml,
# not beside the member. setup --rsync sends that parent directory.
# Pick one first deploy (rsync: no remote .git/):
julia --project=. -m DistSSHKit setup --rsync child:YourHost1 child:YourHost2
# or: julia --project=. -m DistSSHKit setup --clone child:YourHost1 child:YourHost2
julia --project=. -m DistSSHKit setup --instantiate child:YourHost1 child:YourHost2
# optional: job Pkg.test() on remotes (not DistSSHKit's tests)
# julia --project=. -m DistSSHKit setup --runtest child:YourHost1 child:YourHost2--rsync is the usual first deploy; --clone is the git path (later updates: setup --sync). After setup --rsync or --clone, run --instantiate. Not sure which to pick? See setup · rsync or git?. Skipping instantiate is a common cause of remote failures such as failed to find source of parent package: "…". Default go / drive and setup --check probe remotes first and fail fast with an --instantiate hint when deps are missing. go --rsync / drive --rsync copy first, instantiate if Manifest deps are still missing, then check — only onto a missing/empty remote path (or setup --delete first).
Same steps from Julia:
session = KitSession(workers=["child:YourHost1", "child:YourHost2"], yes=true)
setup!(session, :rsync, :instantiate)
# optional: setup!(session, :check); setup!(session, :runtest)
# Julia channel: `up` / `up parent` / `up update` (CLI below)
# git remotes: setup!(session, :clone; repo="https://…") then :instantiate
# later updates: setup!(session, :sync)CLI and API share the default remote root (~/Parent/RepoName). If you override it (setup --remote-path / KitSession(; remote=…)), pass the same path to go / drive / go! / drive! / pipeline!.
After setup, just run go / drive — neither pre-runs sync nor requires git parity by default. Optional one-shot onto an empty/missing remote: go --rsync / drive --rsync (instantiates if needed). Later git updates (go --sync / drive --sync) need a --clone / git-managed remote, not an rsync tree. Commit parity is drive-only: drive --require-git on git-managed remotes. Setup logs land under {project}/.distsshkit/setup/. Put .distsshkit/ in the job .gitignore (User Guide).
Verify when ready:
julia --project=. -m DistSSHKit setup --check child:YourHost1 child:YourHost2If check fails on Julia major.minor (and hosts already have juliaup):
julia --project=. -m DistSSHKit up child:YourHost1 child:YourHost2
julia --project=. -m DistSSHKit up parent # this machine too
# refresh installed channels only (no default):
# julia --project=. -m DistSSHKit up update child:YourHost1Clean slate. The first command asks you to type delete and does not delete until you do. -y still skips that prompt until DistSSHKit 0.11 (DistSSHRun 0.2). Pass the path as --confirm-path to delete without the prompt:
julia --project=. -m DistSSHKit setup --delete child:YourHost1 child:YourHost2
julia --project=. -m DistSSHKit setup --delete --confirm-path '~/Parent/Repo' child:YourHost1 child:YourHost2Next: Demo.