autodl
autodl-cli
Неофициально. Этот проект не связан с AutoDL, не одобрен и не спонсируется им. «AutoDL» используется только для идентификации платформы, с которой работает этот инструмент.
Управляйте GPU-инстансами AutoDL из командной строки — и позвольте вашему кодинг-агенту делать то же самое.
Создан на основе официального открытого API AutoDL, поэтому токен разработчика остаётся действительным бессрочно, и ничего не ломается при редизайне веб-консоли.
Зачем
Когда ИИ-агенту в середине задачи нужен GPU-бокс, у него нет способа его получить: инстансы AutoDL создаются кликами в веб-консоли. Этот инструмент даёт агенту три способа входа, все на одном ядре:
Точка входа | Для | Как |
CLI | людей |
|
MCP-сервер | Claude Code, Cursor, Cline, … |
|
SDK | Node-программ |
|
Каждая команда говорит на --json со стабильной схемой и документированным кодом выхода, так что агент может ветвиться по результату, не разбирая прозу.
Related MCP server: lab-ops
Установка
npm install -g @minatoaqukin/autodl-cli # then: autodl <command>
npx @minatoaqukin/autodl-cli <command> # or without installingТребуется Node.js 22+.
Панель управления
autodl tui # or just `autodl` in an interactive terminalНа машине без токена она открывается на экране входа, предлагающем два варианта — настроить токен или выйти. Вставьте токен, он проверяется через API перед сохранением, и вы попадаете на панель. После настройки autodl входит сразу.
Живая таблица ваших инстансов: статус, GPU, регион, как долго каждый включён и сколько это примерно стоило, и сколько TTL осталось. Клавиши: ↑↓ — перемещение, Enter — детали, s — запуск, x — остановка, c — копирование SSH-команды в буфер обмена, Ctrl+D — освобождение, g — наличие GPU, n — новый инстанс, r — обновление, q — выход. Освобождение на Ctrl+D, а не на отдельной клавише, потому что оно безвозвратно удаляет инстанс.
Она заполняет терминал и показывает ваш ID аккаунта и баланс в шапке. Копирование с c помещает в буфер обмена только SSH-команду — никогда пароль root, который любой процесс мог бы прочитать. Там, где нет помощника для буфера обмена (SSH-сессии, контейнеры), она переключается на OSC 52 и сообщает об этом, поскольку терминал не подтверждает.
Она работает на альтернативном экране терминала, поэтому занимает фиксированное полотно, а не прокручивается под уже существующим содержимым, и при выходе восстанавливает ваш промпт и историю прокрутки без изменений.
Она существует потому, что AutoDL тарифицирует по состоянию питания: дорогая ошибка — не неправильная команда, а инстанс, который никто не вспомнил остановить. Держать её открытой — значит видеть это.
Два намеренных ограничения честности. Ставка известна только из снимка работающего инстанса, поэтому остановленный инстанс показывает прошедшее время и без денег — выдумать число было бы хуже, чем не показывать ничего. А пока ставка ещё загружается, итог говорит об этом, а не тихо занижает.
TUI никогда не запускается в конвейере, в CI или под --json: она завершается с кодом 2 и объяснением, вместо того чтобы захватывать терминал, которого нет. Голый autodl вне интерактивного терминала по-прежнему печатает справку, как раньше.
Настройка
Официальному API нужен токен разработчика от верифицированной учётной записи (个人或企业实名认证). Получите его в консоли AutoDL → 设置 → 开发者 Token.
autodl login # verifies the token, then saves it with 0600 permissions
autodl account # balance, vouchers, lifetime spendПриоритет токена: --token › AUTODL_TOKEN › ~/.config/autodl-cli/config.json.
Быстрый старт
# Rent a GPU that shuts itself off after two hours, and wait until it's ready
autodl create --gpu 4090 --ttl 2h --wait
# Work with it
autodl ls
autodl ssh pro-76419909953e # interactive login
autodl exec pro-76419909953e "nvidia-smi" # one-off command, remote exit code
autodl push pro-76419909953e ./src /root/work # SFTP upload
autodl pull pro-76419909953e /root/work/out . # SFTP download
# Stop paying
autodl stop pro-76419909953e
autodl rm pro-76419909953e --yes # irreversible: wipes all dataИли сделайте всё одним глаголом:
autodl run "python train.py" \
--gpu 4090 --sync ./ --pull /root/autodl-cli/checkpoints --ttl 4hЭто создаёт инстанс, ждёт его, загружает ваш код, транслирует вывод команды, скачивает результаты и выключает инстанс — в том числе по Ctrl-C.
Использование из агента
Claude Code
claude mcp add autodl -- npx -y @minatoaqukin/autodl-cli mcpCursor / Cline / любой MCP-клиент
{
"mcpServers": {
"autodl": {
"command": "npx",
"args": ["-y", "@minatoaqukin/autodl-cli", "mcp"],
"env": { "AUTODL_TOKEN": "your-token" }
}
}
}Доступные инструменты: autodl_account_info, autodl_list_instances, autodl_get_instance,
autodl_create_instance, autodl_power_on, autodl_power_off,
autodl_release_instance, autodl_exec, autodl_upload, autodl_download,
autodl_run, autodl_list_gpu_specs, autodl_list_images, autodl_save_image,
autodl_sweep_expired. Плюс ресурс autodl://instances.
Настройки MCP по умолчанию намеренно строже, чем у CLI, потому что никто не смотрит: применяется 2-часовой TTL, если вы не запросили больше, освобождение требует явного confirm: true, а пароли возвращаются скрытыми, если не запрошены.
Shell / CI
autodl ls --json | jq -r '.data[] | select(.status=="running") | .uuid'Развёртывание git-проекта
# Rent a box, clone, auto-install dependencies, run it, then stop the instance
autodl deploy owner/repo --gpu 4090 --start "python train.py" --ttl 4h
# Long-running service: background it and keep the instance up
autodl deploy owner/repo --gpu 4090 --start "python app.py" --detach
# Come back later — powers the same box on and `git pull`s, no rebuild
autodl deploy owner/repo --instance pro-76419909953e --start "python train.py"deploy отличается от run одним намеренным образом: в конце он останавливает инстанс, а не освобождает его. Остановленный инстанс сохраняет свои диски, поэтому следующее развёртывание переиспользует уже созданную среду. --on-finish release отключает это.
Код попадает в /root/autodl-tmp/<repo> — на диск данных. Системный диск AutoDL — фиксированные 30 ГБ, которые также упаковываются в любой сохранённый образ; диск данных отдельный, быстрее и расширяемый. Стоит знать компромисс: содержимое диска данных не включается при сохранении образа, поэтому размещайте среду на системном диске, а код здесь.
Зависимости определяются автоматически в таком порядке, срабатывает первое совпадение — environment.yml → requirements.txt → pyproject.toml → package-lock.json/package.json. Переопределите с --setup "<cmd>" или пропустите с --no-setup.
Удалённые команды выполняются через логин-шелл. Образы AutoDL хранят python, pip и conda в /root/miniconda3/bin, которые попадают в PATH только через логин-профиль — обычный неинтерактивный ssh host "pip install ..." завершается с кодом 127. Это относится и к autodl exec, поэтому он ведёт себя так же, как при ручном autodl ssh.
Клонирование с GitHub или HuggingFace автоматически включает академический прокси AutoDL (source /etc/network_turbo). Gitee — внутренний, и прокси пропускается. --no-accel отключает его. AutoDL отмечает, что прокси «для академического использования, без гарантий стабильности».
Приватные репозитории: --git-token или GIT_TOKEN / GITHUB_TOKEN в окружении. Токен никогда не попадает в строку лога, сообщение об ошибке, вывод --json или сохранённый git-remote в клоне.
Проверка наличия GPU
autodl stock --gpu 4090 # where are the free cards
autodl stock # everything, everywhereПрочитайте эту таблицу внимательно — цифры менее авторитетны, чем кажутся. Они взяты из эластичного развёртывания AutoDL, единственного существующего API ёмкости, и он не отслеживает доступность Pro-инстансов. Измерено 2026-08-23: он сообщал о 140 простаивающих RTX 4090D в westDC3, при этом создание Pro-инстанса там отвечало «暂无库存» — а идентичный запрос без ограничения региона успешно завершился, попав в beijingDC2.
Два следствия, оба встроены в инструмент:
Создание инстанса никогда не сужает регионы само по себе. Опускание
data_center_listдаёт AutoDL максимальный выбор, что эмпирически чаще всего срабатывает.Только два региона принимают Pro-инстанс вообще:
westDC3(西北B区) иbeijingDC2(北京B区). Остальные девять в таблице запасов — только для эластичного развёртывания; передача одного из них в--regionотклоняется заранее, а не падает позже с непрозрачной ошибкой AutoDL «请求参数错误». Колонка可建Proпоказывает, какой это.
Защита от расходов
AutoDL тарифицирует исключительно по состоянию питания. Инстанс, закончивший обучение час назад, стоит ровно столько же, сколько инстанс при 100% загрузке. Это самый простой способ для unattended-агента потратить реальные деньги впустую, поэтому защита встроена, а не опциональна.
Три уровня:
Внутри инстанса.
--ttl 2hактивирует отсоединённыйsleep && shutdownна самой машине черезstart_command. Он срабатывает, даже если этот CLI убит, ваш ноутбук спит или сеть падает. Это уровень, который реально защищает ваш кошелёк.Локальный реестр. Каждая команда при возможности подчищает инстансы, превысившие TTL, и выключает их. Ловит случаи, которые уровень 1 не может —
start_command, который молча не сработал, или ручное включение без нового таймера.Детекция простоя.
autodl guard idle <id>сэмплирует загрузку GPU через SSH и выключает после длительного затишья.
autodl guard ttl pro-xxx 2h # arm/re-arm on a running instance
autodl guard cancel pro-xxx # disarm
autodl guard list # what this machine is tracking
autodl guard sweep # reclaim everything past its TTL now
autodl guard idle pro-xxx --threshold 5 --samples 6 --interval 1mБалансовый барьер также отказывается создавать инстанс, когда ваш кошелёк ниже --min-balance (по умолчанию ¥5). AutoDL не забирает инстансы в момент обнуления баланса — он сохраняет их для защиты ваших данных — поэтому низкий баланс превращается в застрявший, непригодный инстанс, а не в чистый сбой.
Контракт для агента
Стабилен между минорными версиями. Ломающие изменения требуют мажорной.
stdout в режиме --json — это чистый JSON. Прогресс, подсказки и предупреждения идут в stderr, поэтому autodl ... --json | jq всегда безопасен.
// success
{ "ok": true, "data": { /* ... */ } }
// failure
{ "ok": false, "error": { "code": "NO_STOCK", "message": "…", "hint": "…", "requestId": "…" } }Выход | Значение | Коды ошибок |
0 | Успех | — |
1 | Общая ошибка |
|
2 | Неверные аргументы |
|
3 | Токен отсутствует или недействителен |
|
4 | Ресурс не найден |
|
5 | Вне бюджета / заблокировано защитой |
|
6 | Нет GPU в наличии |
|
7 | Тайм-аут |
|
8 | Ошибка SSH |
|
autodl exec и autodl run вместо этого завершаются с кодом выхода удалённой команды, поэтому autodl exec box "make test" && deploy ведёт себя как ожидается.
Команды
Команда | Что делает |
| Управление токеном |
| Баланс, ваучеры, пожизненные траты |
| Список инстансов |
| Детали, живая SSH-информация, использование ресурсов |
| Создать Pro-инстанс с оплатой по мере использования |
| Включить / выключить / освободить |
| Интерактивный вход (дополнительные флаги передаются в |
| Выполнить команду, транслировать вывод, передать код выхода |
| SFTP-передача, рекурсивно, учитывает ignore-файлы |
| Создать → синхронизировать → выполнить → забрать → выключить |
| Создать → клонировать → установить зависимости → запустить → остановить, сохранив данные |
| Живое наличие GPU по регионам |
| Защита от расходов |
| Управление приватными образами |
| Справочник каталога |
| Интерактивная панель (также открывается голым |
| Запуск как MCP-сервер |
Глобальные флаги: --json, --yes, --token, --base-url, --lang zh|en, --verbose,
--no-color, --no-sweep.
push и pull пропускают .git, node_modules, __pycache__, .venv и подобные, затем применяют .autodlignore, если он есть, иначе — .gitignore.
SDK
import {
AutoDLClient,
createInstance,
execCommand,
powerOffInstance,
waitForRunning,
} from "@minatoaqukin/autodl-cli";
const client = new AutoDLClient({ token: process.env.AUTODL_TOKEN! });
const uuid = await createInstance(client, {
gpuSpec: "v-48g",
gpuNum: 1,
imageUuid: "base-image-l2t43iu6uk",
cudaFrom: 118,
});
await waitForRunning(client, uuid);
const { stdout } = await execCommand(client, uuid, "nvidia-smi");
console.log(stdout);
await powerOffInstance(client, uuid);Всё, что повторно экспортируется из корня пакета, является публичным API. Цены приходят в юанях (number), временные метки — в виде ISO-строк, а форма sql.NullTime из Go уплощается до string | null.
Что официальный API не может делать
Это ограничения AutoDL, а не этого инструмента. Знание о них заранее избавляет от множества недоразумений:
Только оплата по мере использования. Нет ежедневных/еженедельных/ежемесячных планов и нет конечной точки продления.
Только Pro-инстансы. Семь спецификаций в
autodl gpus— более дешёвые стандартные инстансы недоступны через открытый API.Нет полезного запроса наличия для Pro. Единственная конечная точка ёмкости сообщает о наличии эластичного развёртывания, которое, как видно, не соответствует доступности Pro (см. выше). Создание по сути является слепой попыткой; отсутствие ёмкости означает код выхода 6 и необходимость попробовать другую спецификацию.
Только два региона принимают Pro-инстанс:
westDC3иbeijingDC2.Пока нет загрузки только с CPU. Собственная формулировка AutoDL намеренно предварительна:
payloadдокументирован как"gpu:有卡开机, 暂不支持API以无卡模式开机"— пока не поддерживается, а не никогда. Подтверждено на живом инстансе 2026-08-24:cpu,no_gpu,nogpu,cpu_only,cpu-onlyиnoneвсе возвращаютServerError | 不支持的启动模式, а пустойpayloadпринимается, но загружается с подключённым GPU (start_mode: "gpu"). Используйте веб-консоль для режима ¥0.1/hr 无卡模式 в ожидании; этот инструмент откроет его, как только API это сделает.Требуется проверка личности прежде чем API вообще ответит.
Отсутствующие операции: переименование, запланированное завершение работы, изменение размера, миграция, сброс системы.
Учётные данные SSH могут меняться при каждом цикле питания — порт и root-пароль. AutoDL может перенести инстанс на другую машину. Это происходит не всегда (наблюдалась реальная остановка/запуск, при которой оба оставались идентичными), что как раз и делает кэширование опасным: устаревшее значение работает достаточно часто, чтобы скрыть ошибку, пока не перестанет. Этот инструмент перечитывает их при каждом подключении, так что вам не нужно об этом думать.
runningне означает, что sshd готов. Свежесозданный инстанс сообщаетrunningдо того, как принимает соединения. Попытки подключения здесь распределены по времени, а не выполняются подряд.В неинтерактивной SSH-сессии почти нет PATH. Нет python, pip или conda — они находятся в
/root/miniconda3/binи появляются только через профиль входа. Каждая удалённая команда здесь выполняется подbash -lcпо этой причине.Освобождение требует завершённого выключения, а повторный
power_offна инстансе, который уже останавливается, является ошибкой. Оба случая обрабатываются внутренне.
Также стоит знать: инстанс, оставленный выключенным на 15 дней подряд, освобождается, а его данные стираются.
Проверено на живом API 2026-08-23: полный жизненный цикл (создание → SSH-выполнение → SFTP-передача туда и обратно → остановка → запуск → снова выполнение → освобождение) на 4090D, общая стоимость ¥0.10.
Таблицы спецификаций GPU, регионов и базовых образов встроены, потому что API не предоставляет конечную точку каталога. Если AutoDL изменит их, пожалуйста, откройте issue.
Разработка
npm install
npm run build
npm test # 325 tests, no network access, no cost
npm run lint
npm run typecheckНастоящие сквозные тесты арендуют реальный GPU и стоят реальных денег, поэтому они необязательны:
AUTODL_E2E=1 AUTODL_TOKEN=<token> npm run test:e2eОни всегда выключают инстанс в afterAll, даже при сбое. Добавьте AUTODL_E2E_RELEASE=1, чтобы также освободить его.
Вклад
Приветствуются issues и PR — см. CONTRIBUTING.md. Особенно ценны: исправления статического каталога и реальные коды ошибок API, которые мы ещё не сопоставили (AutoDL их не документирует).
Лицензия
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceManages AutoDL GPU cloud instances, including lifecycle management, SSH operations, file transfer, and GPU monitoring.1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that converts SSH operations on training servers into AI-callable tools for GPU monitoring, job submission, file transfer, and more.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables management of AutoDL GPU resources including instance lifecycle, balance queries, elastic deployments, and notifications through typed MCP tools.2MIT
- FlicenseAqualityBmaintenanceMCP server that wraps the Vast.ai REST API to enable LLM agents to search GPU marketplace, rent machines, manage instance lifecycle, run commands, and inspect billing.201
Related MCP Connectors
Massed Compute MCP — GPU inventory, VM lifecycle, billing, SSH keys, and setup recipes.
Provision and manage a VPS for AI agents over MCP: register, order, get root, control the server.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Minato-Aqukin/AutoDL-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server