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 pool

One 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.jl

Longer argv, still one command (\ at the end of the line):

julia --project=. -m DistSSHKit qhost:HOST submit \
    drive parent:4 child:host1:4 SCRIPT.jl

submit 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.