Skip to main content

Getting Started

This guide takes you from a fresh installation to a completed GPU job. Docker is required for local API operation and custom images.

Install​

To have a coding agent such as Claude Code or Codex do the setup, paste this into it:

set up https://anycloud.sh/SKILL.md

On macOS, install with Homebrew:

brew install anycloud-sh/tap/anycloud

Or use the installer:

curl -fsSL https://get.anycloud.sh | sh

The installer needs no sudo. It puts anycloud in ~/.local/bin and adds that directory to PATH in your shell startup file; pass --no-modify-path to skip that, or --install-dir <dir> to choose another directory. An existing /usr/local/bin installation is updated where it is.

The installer verifies the downloaded binary against the checksums published in the public anycloud-sh/releases repository. To inspect it before running:

curl -fsSLo install.sh https://get.anycloud.sh
less install.sh
sh install.sh

For Python, install the SDK too. It requires Python 3.10 or newer:

pip install anycloud-sdk

Sign in to GitHub when you need it​

A local API runs public images without a GitHub sign-in. Sign in for private GHCR images, Services (their public URLs), clusters and hosted APIs:

anycloud login

Login asks GitHub only for read:org and read:packages, so it can't push images; Container Images shows how to push with the GitHub CLI. When a coding agent runs it, login prints the sign-in URL and code for you to approve in your browser.

Start the API​

Every command talks to one active API. For a personal setup on this machine, start the Anycloud API in Docker:

anycloud api start

api start writes a token to ~/.anycloud/local-api-token that only you can read. The local API admits nothing else, and the CLI sends it only to the local API.

A hosted API runs in your cloud account and gives it a stable URL for use from multiple machines or by a trusted team. Start with the local API above, then create the installation's Kubernetes cluster, which hosts the API and later runs node pools, Deployments and Services:

anycloud cluster create prod --credentials my-aws --region us-east-2 --vm-type t3.medium
anycloud api use https://<cluster-id>.anycloud.sh

Clusters walks that path end to end; Hosted APIs covers sharing and updating the API.

If you already own or have access to a hosted API, select it instead:

anycloud api use https://<cluster-id>.anycloud.sh

The selected URL is stored in ~/.anycloud/api-url. API_URL is a temporary override.

The Python SDK's Client() uses the selected API with the local API's token, or with the token saved by anycloud login for a hosted API. You can also pass api_url= and token= explicitly; see Configuration.

Add cloud credentials​

The interactive wizard can read durable local credentials, use supported provider tooling, or accept values you paste:

anycloud credentials new my-aws

For non-interactive setup, pass the provider fields explicitly:

anycloud credentials new my-aws --provider aws \
--access-key-id AKIA... \
--secret-access-key ...

Anycloud never installs cloud CLIs. When aws, gcloud or az is missing, the wizard prints how to install it. AWS still offers its other choices; for Azure and GCP generation, rerun and pick another option. If you have neither credentials nor permission to create them, choose I don't have AWS access keys (or the Azure or GCP equivalent): it prints a request to forward to your cloud administrator. See Ask an administrator. The identity needs its provider's published role: AWS AnycloudAccess, Azure Anycloud (or Contributor), or GCP Anycloud with the Security Token Service API enabled for Buckets.

Azure, GCP, and Lambda use the same command with provider-specific fields. See Cloud Credentials for setup paths and the credentials command reference for every flag.

Deploy a job​

The fastest first run uses a public image, so no image build or source checkout is needed.

anycloud job 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())"

Follow it until completion:

anycloud status <job-id> --verbose
anycloud logs <job-id>

Anycloud provisions a GPU VM, pulls the image, runs the command, and tears the VM down after the job exits.

Choose your next path​

To update an existing installation, run:

anycloud update