| sidebar_position | 10 |
|---|
Manage the cluster binary store: download, push, and update tool binaries used by Nomad jobs and Wave layers.
~/.abc/assets/ Distribution artifacts: arch-suffixed binaries, JARs, tools.toml.
Everything here is pushed to cluster S3.
~/.abc/binaries/ Host executables: eget, mc, nomad, … Safe to add to $PATH.
Not pushed.
Remote path pattern: <endpoint>/<bucket>/<prefix>/<tool>-<os>-<arch>
Write ~/.abc/assets/tools.toml from the bundled default. Run once after installing the CLI.
abc admin tools init # create (no-op if already exists)
abc admin tools init --reset # overwrite with the bundled default
abc admin tools init --show # print the bundled default without writingOpen ~/.abc/assets/tools.toml in $EDITOR.
abc admin tools editDownload all tool binaries for all configured architectures into ~/.abc/assets/.
abc admin tools fetch # all tools, all arches
abc admin tools fetch --tool s5cmd # single tool
abc admin tools fetch --arch amd64 # single archTarget architectures are read from admin.tools.architectures in the active context (default: linux/amd64, linux/arm64).
Upload cached binaries, tools.toml, and Wave layer archives to cluster S3.
abc admin tools push # push everything
abc admin tools push --tool s5cmd # push one tool
abc admin tools push --dry-run # preview without uploadingWhat gets pushed:
- All arch-suffixed binaries in
~/.abc/assets/ tools.tomlas<prefix>/tools.toml(version reference for the cluster job that rebuilds wave layers)- Wave layer archives for every tool with
wave_inject = true:
| Archive | Contents |
|---|---|
wave-layer-linux-<arch>.tar.gz |
All wave_inject tools combined |
wave-layer-linux-<arch>-<tool>.tar.gz |
Single tool |
These archives are used by --wave-inject-tools at job submit time (see abc job run).
Show the local cache alongside remote state.
abc admin tools list
abc admin tools list --tool s5cmdQuick health check. Exits 1 if any configured binary is missing locally or remotely.
abc admin tools statusUseful in CI to verify the binary store is complete before submitting jobs.
Print the Nomad artifact stanza URL for a tool. Useful when writing custom Nomad job HCL.
abc admin tools artifact-url s5cmd
# → http://<endpoint>/abc-reserved/binary_tools/s5cmd-linux-${attr.cpu.arch}Build and push Wave layer archives to cluster S3 by submitting a one-off Nomad batch job. Useful when the binary cache was updated remotely (e.g. a new tool version was fetched on the cluster) and you want to rebuild layers without a full local push.
abc admin tools wave-layer # amd64 + arm64
abc admin tools wave-layer amd64 # single arch
abc admin tools wave-layer amd64 --wait # block until the job completes
abc admin tools wave-layer --tools s5cmd # rebuild only the s5cmd layer
abc admin tools wave-layer --dry-run # print generated HCL without submittingThe submitted Nomad job:
- Fetches
s5cmdfrom cluster S3 via anartifactstanza (public-read, no credentials) - Downloads
tools.tomlfrom<endpoint>/abc-reserved/binary_tools/tools.toml - Downloads each
wave_injectbinary for the target arch - Packs them as
usr/local/bin/<tool>in a.tar.gz - Uploads both the combined and per-tool layer archives to
s3://abc-reserved/wave_lite_layers/
Credentials for the S3 upload are read from the nomad/jobs/abc-nodes-storage Nomad Variable (set once with abc admin services nomad cli -- var put ...).
# ── Fetch engine ───────────────────────────────────────────────────────────
[engine]
repo = "zyedidia/eget"
version = "v1.3.3"
# ── Push settings ──────────────────────────────────────────────────────────
[push]
bucket = "abc-reserved"
prefix = "binary_tools"
# ── Tools ──────────────────────────────────────────────────────────────────
[tools.s5cmd]
repo = "peak/s5cmd"
version = "v2.3.0"
wave_inject = true # include in wave layer archives
[tools.rclone]
repo = "rclone/rclone"
version = "v1.73.5"
wave_inject = true
[tools.pixi]
repo = "prefix-dev/pixi"
version = "v0.67.2"
[tools.micromamba]
repo = "mamba-org/micromamba-releases"
version = "2.6.0-0"
[tools.wave]
repo = "seqeralabs/wave-cli"
version = "v1.8.2"
[tools.restic]
repo = "restic/restic"
version = "latest"
disabled = true # skip without removing the block
# ── Locally built artifacts ────────────────────────────────────────────────
[local.abc-node-probe]
paths."linux-amd64" = "/path/to/abc-node-probe-linux-amd64"
paths."linux-arm64" = "/path/to/abc-node-probe-linux-arm64"Set wave_inject = true on any tool to include it in the Wave layer archives generated by abc admin tools push. The tool binary will be placed at usr/local/bin/<name> inside the archive.
After editing tools.toml, run abc admin tools push to rebuild and upload the new layer archives.
Target architectures and the push endpoint live in the active context:
# Set which arches to fetch/push
abc config set contexts.<name>.admin.tools.architectures '["linux/amd64","linux/arm64"]'
# Set the push endpoint (written automatically by abc admin tools push)
abc config set contexts.<name>.admin.tools.endpoint https://s3.seedling.abc-cluster.cloud
# Set the Wave Lite URL (required for --wave-inject-tools in abc job run)
abc config set contexts.<name>.admin.services.wave.http https://wave.seedling.abc-cluster.cloudabc job run— Wave tool injection — use injected tools in batch jobsabc pipeline run— Nextflow pipelines with Wave container augmentation