Open in
ThunderPhone CLI
Входите в систему, управляйте голосовыми агентами и звонками, настраивайте клиенты MCP и создавайте каркасы проектов из терминала.
Для CLI требуется Node.js 18.18 или новее. Запустите его через npx или установите глобально:
npm install -g thunderphone
thunderphone --helpВойдите в систему
npx thunderphone login
thunderphone whoami --jsonВход выводит код подтверждения, открывает браузер и ожидает авторизации.
На машине без графического интерфейса используйте --no-browser и откройте выведенный URL в другом месте.
Для входа с устройства требуется поддержка OAuth device flow в API. Ключ API организации в THUNDERPHONE_API_KEY также может аутентифицировать команды и имеет приоритет
над сохранёнными учётными данными для входа.
Учётные данные хранятся по профилям в ~/.config/thunderphone/credentials.json
с режимом файла 0600. XDG_CONFIG_HOME и THUNDERPHONE_CONFIG_DIR переопределяют
каталог. Токены доступа обновляются автоматически, а ротируемые токены обновления
сохраняются атомарно. Токены никогда не выводятся командой входа.
thunderphone login --profile work
thunderphone agents list --profile work --json
thunderphone logout --profile workTHUNDERPHONE_PROFILE задаёт профиль по умолчанию. Выход удаляет локальные учётные данные;
он не отзывает серверное разрешение. API по умолчанию — https://api.thunderphone.com.
Используйте --api-base-url или THUNDERPHONE_API_BASE_URL для другого API. Токен профиля
нельзя отправить на другой настроенный URL API; войдите на этот URL, используя отдельный профиль.
Команды
Каждая команда поддерживает --json. Данные при успешном выполнении выводятся в stdout; ошибки — в stderr
с ненулевым кодом выхода. Без --json выводится компактная таблица или список полей.
JSON сохраняет структуру ответа API, при этом поля с учётными данными скрываются. Обслуживание MCP
резервирует stdout для протокола MCP.
| Команда | Назначение |
|---|---|
login [--no-browser] [--scope "scopes"] | Авторизоваться с помощью кода устройства |
logout, whoami | Удалить локальные учётные данные; вывести список доступных организаций |
agents list, agents get ID | Получить агентов |
agents create --file agent.json | Создать агента |
agents update ID --file agent.json | Сохранить черновик агента |
agents deploy ID, agents delete ID | Развернуть черновик; удалить агента |
numbers list | Получить номера телефонов |
numbers provision --country US --area-code 415 | Выделить входящий номер США |
numbers assign NUMBER_ID --agent ID | Назначить входящего агента |
sms send TO --from FROM --body TEXT --idempotency-key KEY | Отправить SMS через номер оператора, подключённого клиентом, с безопасным повторным выполнением |
sms list [--limit N], sms get UUID | Вывести список или проверить записи SMS |
call TO --agent ID --from FROM [--wait] | Выполнить исходящий звонок; при необходимости дождаться его расшифровки |
calls list [--limit N] [--agent ID] | Вывести список звонков (лимит 1–200) |
calls get ID, calls transcript ID | Получить один звонок или его расшифровку |
test run AGENT_ID [--scenario ID] --consent-to-charge | Запустить платные сохранённые сценарии через веб-канал |
test status RUN_ID [--agent ID] | Проверить пакет, включая сведения о сценариях при указании агента |
import VENDOR export.json | Подготовить импорт JSON от поставщика для проверки |
imports get UUID, imports commit UUID | Проверить импорт; подтвердить выбранных агентов после проверки |
mcp setup, mcp serve | Настроить клиент; запустить мост stdio |
init [directory] | Создать каркас проекта |
Для исходящих звонков требуется номер с поддержкой исходящих вызовов. THUNDERPHONE_FROM_NUMBER может
передавать значение для --from. Клиентские номера VoIP продолжают поддерживать исходящие звонки.
Номера, выделенные ThunderPhone, изначально поддерживают только входящие вызовы; администратор организации может
запросить исходящие звонки на странице «Номера телефонов», где каждый запрос
проверяется вручную. По умолчанию для --wait установлен тайм-аут в один час; используйте
--timeout SECONDS, чтобы изменить его. Тайм-аут прекращает ожидание, не завершая звонок.
Для SMS также требуется номер с поддержкой SMS в вашей подключённой учётной записи Twilio или Telnyx. SMS никогда не отправляются с номера, принадлежащего ThunderPhone. Повторно используйте ключ идемпотентности только при повторной попытке отправить сообщение с точно таким же отправителем, получателем и текстом.
Импорт поддерживает vapi, retell, elevenlabs и bland. Второй аргумент — это
путь к экспорту JSON поставщика, а не удалённый идентификатор поставщика. API асинхронно подготавливает сопоставление;
проверьте его с помощью imports get UUID и подтверждайте только после готовности,
а также после проверки сопоставленных полей и предупреждений. См. импорт агентов.
Настройка MCP
thunderphone mcp setup --client cursor --api-key-env THUNDERPHONE_API_KEY
thunderphone mcp setup --client codex --scope user --api-key-env THUNDERPHONE_API_KEY
thunderphone mcp setup --client claude-desktop --scope userКлиенты: claude-code, codex, cursor, vscode, gemini, claude-desktop и
windsurf. По умолчанию используется область проекта. Для Desktop и Windsurf требуется область пользователя.
Не указывайте --client, чтобы определить единственный клиент в проекте; при неоднозначном определении
CLI запрашивает выбор в интерактивном режиме или завершает работу с инструкциями в неинтерактивном сеансе.
Настройка выводит путь к созданному файлу и сохраняет несвязанные серверы. Существующий JSON
должен быть корректным строгим JSON; значения TOML для Codex сохраняются, но комментарии могут быть переформатированы.
Настройка предпочитает прямой удалённый HTTP. При использовании --api-key-env она записывает ссылку
на переменную, но не сам ключ. Без этого параметра прямой HTTP использует поддержку
OAuth клиента; файл учётных данных CLI не используется. Чтобы повторно использовать учётные данные
thunderphone login в любом клиенте с поддержкой stdio, используйте:
{
"mcpServers": {
"thunderphone": {
"command": "npx",
"args": ["-y", "@thunderphone/mcp"]
}
}
}Обёртка проверяет THUNDERPHONE_API_KEY, затем текущий профиль CLI (обновляя его
при необходимости), после чего передаёт OAuth в mcp-remote. THUNDERPHONE_MCP_URL переопределяет
конечную точку. Телеметрия не отправляется. Отдельная настройка также доступна через
npx -y @thunderphone/mcp setup --client cursor или thunderphone-mcp setup после
глобальной установки @thunderphone/mcp.
Создание проекта
npx create-thunderphone-agent my-receptionist
npx create-thunderphone-agent my-outbound --template python --agent-type outbound
# Equivalent:
thunderphone init my-receptionist --template node --agent-type receptionistДоступные шаблоны: node и python; типы агентов: receptionist, outbound и
custom. Агент по умолчанию — англо-испанский администратор стоматологической клиники с явно заданными
демонстрационными данными. Проекты включают agent.json, скрипты развёртывания, конфигурации MCP для
Claude Code, Cursor и VS Code, инструкции для агента, .env.example и README.
Создание каркаса работает офлайн и не перезаписывает непустой каталог.
Перед развёртыванием отредактируйте сведения о компании. Экспортируйте API-ключ, подключённый номер
звонящего и получателя тестового звонка, как указано в созданном README. npm run deploy
или python deploy.py создаёт или обновляет агента, развёртывает его черновик и выполняет
платный тестовый звонок. Скрипты используют аутентификацию по API-ключу; CLI и обёртка MCP для stdio
также поддерживают вход с устройства. Для скриптов Python требуется Python 3.9 или новее.