Getting Started
Requires Docker.
⚡ Install
On macOS, install with Homebrew:
brew install anycloud-sh/tap/anycloud
Or use the installer script:
curl -fsSL https://get.anycloud.sh | sh
The installer downloads the platform binary from the public
anycloud-sh/releases repo and checks
it against checksums.txt before installing it.
To inspect the installer first:
curl -fsSLo install.sh https://get.anycloud.sh
less install.sh
sh install.sh
For the Python SDK, also install the package:
pip install anycloud-sdk
🔓 Login
anycloud login
Authenticates with GitHub via OAuth. Required for pulling private images from GHCR and identifying your deployments. When Docker is installed, this also logs your local Docker CLI into GHCR for image pushes.
🖥️ Start the API
anycloud runs an API server that orchestrates your deployments. For a local setup, start it in the background as a Docker container:
anycloud api start
To use a hosted API server after creating one, set it once:
anycloud api use https://<id>.anycloud.sh
Or pass --use when creating it to make the new hosted API active once it is
healthy.
The CLI saves that URL in ~/.anycloud/api-url. Set API_URL only when you
want a temporary override.
🔑 Add Credentials
Pass credentials for your cloud directly as flags — stored locally, never sent to any external service. For AWS:
anycloud credentials new my-aws --provider aws \
--access-key-id AKIA... --secret-access-key ...
Or skip the flags entirely: on a terminal, anycloud credentials new my-aws (or just anycloud credentials new, which prompts for the name too) launches an interactive wizard that can read a local cloud-CLI profile, open a browser login, provision a new least-privilege identity, or accept pasted values.
Other providers take the same shape:
# Azure
anycloud credentials new my-azure --provider azure \
--application-id ... --secret ... \
--subscription-id ... --directory-id ...
# GCP (inline values)
anycloud credentials new my-gcp --provider gcp \
--project-id my-proj --client-email sa@my-proj.iam.gserviceaccount.com \
--private-key "..."
# Lambda Labs
anycloud credentials new my-lambda --provider lambda --api-key ...
Secret values also accept an environment-variable fallback (e.g. AWS_SECRET_ACCESS_KEY, GCP_PRIVATE_KEY, LAMBDA_API_KEY) — the flag wins when both are provided. Azure has no "read from local CLI" option (its CLI session is user-auth, not a service-principal secret), so the Azure wizard generates a new service principal from that login; pass the Azure flags or environment variables to use an existing one.
🚀 Deploy
The fastest first run is a public image on a cloud GPU — no build, no repo, no setup code:
- Python
- CLI
import anycloud
ac = anycloud.Client()
# Run a public image on a cloud GPU — no build, no code sync
job = ac.submit(
"pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime",
gpu="a100:1",
command=["python", "-c", "import torch; print('CUDA available:', torch.cuda.is_available())"],
)
job.wait()
print(job.logs())
anycloud submit pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime \
--credentials my-aws \
--gpu-type h100 \
--gpus all \
-- python -c "import torch; print('CUDA available:', torch.cuda.is_available())"
That's a full round-trip — anycloud provisioned a GPU VM, pulled the image, ran your command, and tore the VM down, billing only for the time it ran. The Python snippet blocks on job.wait() and prints the logs; from the CLI, follow along with anycloud status <id> --verbose.
Run your own code
@anycloud.function()decorator — your repo is synced from git at run time, so you change code and rerun without rebuilding the image. See Deploying Jobs.- Prebuilt image — bake your code and dependencies into a Docker image and submit it. See Docker.
⬆️ Updating
Run the updater for both installer-script and Homebrew installs:
anycloud update
For Homebrew-managed installs, anycloud update upgrades through Homebrew first,
then restarts a stale local API server so it matches the installed CLI.
What's next
- Train MACE on cloud GPUs — an end-to-end tutorial
- Deploying Jobs — the
@anycloud.function()decorator vs prebuilt images, env vars, chaining, and debugging - Spot Instances — up to 90% off with automatic preemption recovery
- Bucket Sync — mount cloud storage into your container
- Running with Agents — let Claude Code, Codex, or Cursor drive jobs with per-session spend caps
- Examples — copy-pasteable patterns: pipelines, parallel fan-out, decorator map
- Troubleshooting — what each job state means and how to fix common errors