5 releases
Uses new Rust 2024
| new 0.1.4 | Mar 10, 2026 |
|---|---|
| 0.1.3 | Mar 6, 2026 |
| 0.1.2 | Mar 4, 2026 |
| 0.1.1 | Mar 2, 2026 |
| 0.1.0 | Mar 2, 2026 |
#244 in Network programming
665KB
18K
SLoC
ice
Minimal CLI for deploying and managing workloads on vast.ai, gcp, aws, and local.
Install
cargo install ice-tool
Installed command: ice
Quick start
ice login --cloud vast.ai
ice deploy test-crate
ice list --cloud vast.ai
ice logs --cloud vast.ai <instance> --follow
ice delete --cloud vast.ai <instance>
Clouds
Supported cloud identifiers:
vast.aigcpawslocal
Commands
ice login [--cloud CLOUD] [--force]ice config listice config get <KEY>ice config set <KEY=VALUE>ice config unset <KEY>ice list [--cloud CLOUD]ice logs [--cloud CLOUD] <INSTANCE> [--tail N] [--follow]ice shell [--cloud CLOUD] <INSTANCE>ice pull [--cloud CLOUD] <INSTANCE> <REMOTE_PATH> [LOCAL_PATH]ice push [--cloud CLOUD] <INSTANCE> <LOCAL_PATH> [REMOTE_PATH]ice stop [--cloud CLOUD] <INSTANCE>ice start [--cloud CLOUD] <INSTANCE>ice delete [--cloud CLOUD] <INSTANCE>ice deploy [--cloud CLOUD] [--hours HOURS] [--machine MACHINE] [--custom] [--dry-run] [--ssh | --container IMAGE_REF | --unpack SOURCE | --arca [ARTIFACT] | TARGET]
<INSTANCE> accepts an instance id or label.
Config
Config file: ~/.ice/config.toml
Use:
ice config listto view supported keys and current valuesice config get <KEY>to read one keyice config set <KEY=VALUE>to write one keyice config unset <KEY>to clear one key
Auth values are redacted in config output.
Config keys
default.cloud:vast.ai|gcp|aws|localdefault.runtime_hoursdefault.vast_ai.min_cpus|min_ram_gb|allowed_gpus|max_price_per_hrdefault.gcp.min_cpus|min_ram_gb|allowed_gpus|max_price_per_hrdefault.aws.min_cpus|min_ram_gb|allowed_gpus|max_price_per_hrdefault.gcp.region|zone|image_family|image_project|boot_disk_gbdefault.aws.region|ami|key_name|ssh_key_path|ssh_user|security_group_id|subnet_id|root_disk_gbauth.vast_ai.api_keyauth.gcp.project|service_account_jsonauth.aws.access_key_id|secret_access_key
ice deploy
ice deploy now takes exactly one deployment target mode explicitly, or defaults to local arca
unpack deployment when none is given.
Target modes:
--ssh--container IMAGE_REF--unpack SOURCE--arca [ARTIFACT]- bare
TARGET
Behavior:
ice deploy test-cratemeansice deploy --arca test-crate.- Bare
ice deploymeansice deploy --arca, which selects the newest localarcaartifact. --arca NAMEis shorthand for--unpack arca:NAME.--containeraccepts a remote container image ref such asus-central1-docker.pkg.dev/my-project/arca/my-image:tag.--container arca:...is rejected because localarcaartifacts are an unpack-only flow.--unpackaccepts:arca:selector- a local image name such as
arca-local:my-crate-deadbeef - a saved
image.tarpath - a full remote container ref
--hoursoverrides runtime duration for the deploy. If omitted,iceusesdefault.runtime_hoursand otherwise falls back to1.0.--customprompts for search filters on marketplace-backed clouds.--machinepins a specific marketplace machine type.--dry-runreports the chosen machine and exits before provisioning.
Examples:
ice deploy test-crate
ice deploy --arca test-crate --hours 0.25
ice deploy --unpack arca:test-crate --cloud vast.ai
ice deploy --container us-central1-docker.pkg.dev/my-project/arca/my-image:tag --cloud vast.ai
ice deploy --ssh --cloud gcp --machine g2-standard-4
Workload behavior
containerruns a real container image on the target machine.unpackextracts the layer that introduced the image entrypoint plus all higher layers, uploads only that staged filesystem diff, and starts the image entrypoint detached with persisted logs.localsupportscontainerandunpack. It does not support--ssh.vast.aicontainer workloads use entrypoint mode, not SSH mode.vast.ai,gcp, andawsunpack workloads boot a shell-capable machine, upload the unpack bundle over SSH, and run the workload detached from the SSH session.- Deploy flows print explicit stages for machine creation, SSH readiness, unpack upload, workload start, and log following.
- If Vast offer acceptance fails,
ice deploycan immediately retry the search interactively.
Logs and shell
ice logsshows stdout and stderr for managed workloads.- For
unpack, logs come from the persisted detachedstdio.logand--followexits automatically after the workload finishes and the final output is drained. - For
containeronvast.ai, logs use Vast's provider API. ice shellopens the workload shell when possible and otherwise falls back to the host shell.
Notes
--cloudcan be omitted whendefault.cloudis configured.ice list --cloud localreports both managed local containers and managed local unpack workloads.- Private GCP registry pulls use your configured GCP credentials or active
gcloudauthentication. - External commands used by some flows:
ssh,rsync,gcloud,aws,docker,podman.
Dependencies
~15–37MB
~528K SLoC