Imagens
O que uma máquina inicializa: uma imagem do Arrakis com SSH e as ferramentas de sempre, ou uma imagem sua, pública ou privada.
Imagens do Arrakis
Uma máquina inicializa uma imagem do Arrakis, a menos que você escolha outra. Cada uma é uma imagem base oficial com SSH, um banner de login e ferramentas do dia a dia: git, git-lfs, tmux, htop, nvtop, rsync, curl, wget, jq e um editor. O Python está no PATH em toda sessão SSH.
| Imagem | O que inclui | Imagem Docker |
|---|---|---|
| PyTorch 2.14 (padrão) | PyTorch 2.14.1, CUDA 13.0, Python 3.12, Ubuntu 24.04 | goodailabs/arrakis:pytorch-2.14.1-cuda13.0 |
| PyTorch 2.14 com o kit de ferramentas CUDA | A mesma, mais o nvcc, os cabeçalhos do CUDA e um compilador | goodailabs/arrakis:pytorch-2.14.1-cuda13.0-devel |
| Kit de ferramentas CUDA 13.0 | CUDA 13.0.3, cuDNN 9, nvcc, Python 3.12, Ubuntu 24.04 | goodailabs/arrakis:cuda-13.0.3-devel |
| Ubuntu 26.04 | Python 3.14. O driver da GPU vem da máquina | goodailabs/arrakis:ubuntu-26.04 |
O CUDA 13.0 é a versão que o pip install torch instala, então wheels compilados para o PyTorch funcionam. Ele roda em todas as máquinas do Arrakis, Blackwell incluída: cada uma tem um driver NVIDIA da série 580 ou mais recente. As imagens são públicas no Docker Hub, então você pode baixar a mesma no seu computador; goodailabs/arrakis:latest é a padrão.
Ao entrar, você vê as GPUs da máquina, a imagem e o espaço livre em disco:
6 × NVIDIA RTX A4000, 16 GB each
PyTorch 2.14.1, CUDA 13.0, Python 3.12.3, Ubuntu 24.04.5 LTS
32 CPU cores, 125 GB memory, 412 GB free in /workspaceTrabalhe em /workspace. Tudo o que está na máquina, /workspace incluído, é apagado quando ela para.
Suas próprias imagens
Qualquer imagem funciona: vLLM, SGLang, contêineres do NVIDIA NGC ou a imagem do seu time, pública ou privada.
- Em Images, escolha Add an image e cole o nome do jeito que o
docker pullaceita, comovllm/vllm-openai:v0.11.0. Para uma imagem pública, você também pode escolher Your own image ao alugar. - O Arrakis consulta primeiro o registro da imagem: ela precisa existir, poder ser baixada e ter uma versão linux/amd64. Um erro de digitação ou um token errado é recusado antes de qualquer cobrança.
- Registros: Docker Hub, GitHub (
ghcr.io), Amazon ECR e ECR Public, Google (Artifact Registry egcr.io), Azure (azurecr.io), NVIDIA NGC (nvcr.io), Quay, GitLab e Microsoft (mcr.microsoft.com), ou o seu próprio: Harbor, Artifactory, Nexus, um GitLab ou Quay auto-hospedado, qualquer registro pelo nome DNS público, comoregistry.example.com:5000/team/app:v1. - O SSH é adicionado a qualquer imagem na inicialização, então você entra como root do mesmo jeito. A imagem precisa ter um shell.
- A primeira inicialização em uma máquina baixa a imagem. Imagens grandes demoram mais: uma imagem de 12 GB pode levar de 10 a 20 minutos em uma rede lenta.
Imagens privadas
Marque It's private: log in to pull it ao adicionar a imagem e informe as credenciais que o docker login pediria. O Arrakis verifica a imagem com elas antes de salvar, guarda as credenciais criptografadas e só as usa para baixar esta imagem quando você aluga. A senha nunca mais é exibida.
| Registro | Nome de usuário | Senha ou token |
|---|---|---|
| Docker Hub | Seu nome de usuário do Docker Hub | Um token de acesso pessoal só com permissão de leitura |
GitHub (ghcr.io) | Seu nome de usuário do GitHub | Um token clássico com apenas read:packages |
Amazon ECR (<account>.dkr.ecr.<region>.amazonaws.com) | Um ID de chave de acesso | A chave de acesso secreta correspondente |
Google (<region>-docker.pkg.dev, gcr.io) | _json_key | A chave JSON de uma conta de serviço com o papel Artifact Registry Reader |
Azure (<name>.azurecr.io) | Um token de repositório ou uma entidade de serviço | A senha correspondente, só com permissão para baixar imagens |
NVIDIA NGC (nvcr.io) | $oauthtoken | Sua chave de API do NGC |
GitLab (registry.gitlab.com) | O nome de usuário de um token de implantação | O token de implantação, com read_registry |
| Quay | Uma conta de robô | O token dela |
| Seu próprio registro | O nome de usuário que ele exige | A senha ou o token correspondente |
- Amazon ECR: use um usuário da AWS que só possa baixar imagens (a política
AmazonEC2ContainerRegistryReadOnly). A cada aluguel, o Arrakis troca a chave por um login novo, válido por 12 horas e só para baixar imagens (o que oaws ecr get-login-passwordimprime), então a máquina nunca vê a chave em si. - Seu próprio registro: as máquinas baixam direto dele, de onde estiverem, então ele precisa responder na internet pública por HTTPS, com um certificado de uma autoridade pública (como o Let's Encrypt). Um registro atrás de uma VPN ou de uma lista de IPs permitidos fica inacessível; um com certificado autoassinado é recusado.
- Use um token só de leitura. A máquina baixa a imagem com ele, e a imagem pode continuar em cache nessa máquina depois que o aluguel termina; por isso, não coloque segredos na imagem e passe-os quando ela rodar.
- Para trocar um token, escolha Change login ao lado da imagem ou salve a mesma imagem de novo com o token novo. Remover a imagem apaga o login dela em todos os lugares onde o Arrakis o guardou.
Quando a máquina inicia
| Opção | O que roda | Use para |
|---|---|---|
| Wait for me to log in (padrão) | Nada. A máquina espera por você | Treinamento, notebooks, qualquer coisa que você inicie por SSH |
| Run the image's command | O entrypoint e o comando da própria imagem | Servidores como vLLM, TGI ou SGLang |
| Run a command | Uma linha simples que você fornece, como python -m http.server 8000 | Um job que começa sozinho |
Se o comando terminar, não dá mais para acessar a máquina. Na dúvida, escolha Wait for me to log in.
Acesse um servidor da máquina pelo SSH:
ssh -L 8000:localhost:8000 root@<host> -p <port>
curl localhost:8000/v1/modelsVariáveis de ambiente
Adicione pares KEY=value a uma imagem, um por linha. Eles ficam salvos com a imagem; por isso, não coloque segredos neles e defina os segredos por SSH, por exemplo export HF_TOKEN=... na sua sessão.
Pela CLI, pela API e por agentes
arrakis images list
arrakis images add vllm/vllm-openai:v0.11.0 --start image
arrakis instances create --node-id <node> --image vllm/vllm-openai:v0.11.0 --start image --termination-hours 2Para uma imagem privada, informe o login, com o token pela stdin, como no docker login:
echo "$GITHUB_TOKEN" | arrakis images add ghcr.io/acme/trainer:v3 --username acme-bot --password-stdin
arrakis instances create --node-id <node> --template-id <image id> --termination-hours 2curl -X POST $ARRAKIS_URL/v1/instances -H "Authorization: Bearer $ARRAKIS_TOKEN" -H "Content-Type: application/json" \
-d '{"node_id": "<node>", "name": "vllm", "termination_hours": 2, "ssh_public_key": "ssh-ed25519 AAAA...",
"image": "vllm/vllm-openai:v0.11.0", "start": "image"}'GET /v1/templateslista as imagens do Arrakis e as suas;POST /v1/templatessalva uma (image,start,command,environmente, para uma imagem privada,registry_usernameeregistry_password). A senha é só de escrita: as respostas mostramprivateeregistry_username.PATCH /v1/templates/{id}com os dois campos substitui o login.POST /v1/instancesinicializa umtemplate_idou qualquerimagepública com umstart.- Via MCP,
list_imageslista as imagens, com as privadas marcadas, erent_gpuaceitatemplate_idouimage.
É um agente? Esta página em Markdown.