First job
Submit from a client after the queue host is up (Prepare). Commands in order: Walkthrough. Also see User Guide · submit, status, fetch, Where files live, and Artifacts and paths.
Point at the queue host
Run from a directory where Queue is loadable (julia --project=.). That --project=. stays on the client. qhost: defaults to --project=~/.distsshqueue/env on the queue host (--queue-env DIR / --queue-env @). Create that dir if clients use qhost: (see Prepare). qhost: rsyncs the client job tree (cwd / DISTRIBUTED_PROJECT_ROOT) to ~/.distsshqueue/stage/<uuid> on the queue host. After submit, this job tree has .distsshqueue/tickets/<uuid> (not the result leaf; every submit stays). SCRIPT.jl must exist on the client in that tree. Omit qhost:: no rsync; the script is on this machine. The job still copies from the queue host to the workers.
julia --project=. -m DistSSHKit qhost:HOST list-host
julia --project=. -m DistSSHKit qhost:HOST size
julia --project=. -m DistSSHKit qhost:HOST plan SCRIPT.jl
julia --project=. -m DistSSHKit qhost:HOST poolOne queue host: still pass qhost:HOST (or status qhost:HOST). DISTSSHQUEUE_HOST is not enough. Local trial without qhost:: DISTSSHQUEUE_LOCAL=1. Several clusters: pass qhost: each time.
list-host is not --hosts. One row: NAME / TOKEN / MAX / JULIA / SSH (user@hostname, :port when not 22). ssh -G runs on the queue host. size / plan / pool are DistSSHKit inspect verbs there (do not enqueue).
Submit
One line, nested the same way as User Guide · submit:
julia -m DistSSHKit [qhost:HOST] submit drive parent:4 SCRIPT.jl
└── Julia ──┘ └── queue host ──┘ └─ submit ┘ └──────── go / ride / drive ────────┘The tail is go / ride / drive. Same compute, now, on this machine:
julia --project=. -m DistSSHKit drive parent:4 SCRIPT.jlLonger argv, still one command (\ at the end of the line):
julia --project=. -m DistSSHKit qhost:HOST submit \
drive parent:4 child:host1:4 SCRIPT.jlsubmit only enqueues that argv for serve on the queue host.
The argv is go child:NAME:N SCRIPT.jl, or parent:N when workers are on the queue host. Flags: go, ride, drive.
julia --project=. -m DistSSHKit qhost:HOST submit go child:host1:4 SCRIPT.jl
julia --project=. -m DistSSHKit qhost:HOST status
julia --project=. -m DistSSHKit qhost:HOST watch
julia --project=. -m DistSSHKit qhost:HOST cancel <id>
julia --project=. -m DistSSHKit qhost:HOST fetch <id> # 8-char prefix or full UUID
julia --project=. -m DistSSHKit qhost:HOST fetch .distsshqueue/tickets/<uuid>submit starts serve if none is running. serve instantiates the job project on the queue host and runs setup! on child: hosts before execute!. :check always runs on child: hosts (warns if a qhost: stage has no .git/). status / watch print qhost (or local (hostname) when you omitted it). watch is status --interval until Ctrl-C; it does not stop serve. Job ids print as a bare stdout line. submit also prints Queued N (no running) on stderr unless DISTSSHKIT_QUIET is set. A qhost: rsync prints rsync → HOST:… when it starts (fetch: rsync ←). After qhost: submit, .distsshqueue/tickets/<uuid> marks the job on this client. fetch copies the finished result to .distsshqueue/<kind>/<stem>_<id8>/. Run it from the same directory as submit. Drive CSV (square_file.jl) is in that .distsshqueue/drive/<stem>_<id8>/ leaf, not output/.
A .jl with no queue verb is not implicit go (same as go / ride / drive on this machine). Top-level go / ride / drive are DistSSHKit; enqueue with submit. ride is experimental.
There is no --via. Do not pass qhost: to setup / serve / enable / disable / add-host / remove-host.
Next: Walkthrough, or User Guide.