---
title: "ThunderPhone CLI"
description: "টার্মিনাল থেকে লগ ইন করুন, ভয়েস এজেন্ট ও কল পরিচালনা করুন, MCP ক্লায়েন্ট কনফিগার করুন এবং প্রজেক্টের কাঠামো তৈরি করুন।"
---

CLI-এর জন্য Node.js 18.18 বা পরবর্তী সংস্করণ প্রয়োজন। এটি `npx` দিয়ে চালান, অথবা গ্লোবালি ইনস্টল করুন:

```bash
npm install -g thunderphone
thunderphone --help
```

## লগ ইন

```bash
npx thunderphone login
thunderphone whoami --json
```

লগ ইন একটি যাচাইকরণ কোড দেখায়, ব্রাউজার খোলে এবং অনুমোদনের জন্য অপেক্ষা করে।
হেডলেস মেশিনে `--no-browser` ব্যবহার করুন এবং দেখানো URL অন্যত্র খুলুন।
ডিভাইস লগ ইনের জন্য API-এর OAuth ডিভাইস-ফ্লো রোলআউট প্রয়োজন। `THUNDERPHONE_API_KEY`-এ থাকা একটি সংস্থার API
কী কমান্ডগুলোকেও প্রমাণীকরণ করতে পারে এবং সংরক্ষিত লগ ইন শংসাপত্রের ওপর অগ্রাধিকার পায়।

শংসাপত্র প্রোফাইল অনুযায়ী `~/.config/thunderphone/credentials.json`-এ
ফাইল মোড `0600` সহ সংরক্ষিত হয়। `XDG_CONFIG_HOME` এবং `THUNDERPHONE_CONFIG_DIR` ডিরেক্টরি
ওভাররাইড করে। অ্যাক্সেস টোকেন স্বয়ংক্রিয়ভাবে রিফ্রেশ হয় এবং রোটেটিং রিফ্রেশ টোকেন অ্যাটমিকভাবে
সংরক্ষিত হয়। লগ ইন কখনও টোকেন দেখায় না।

```bash
thunderphone login --profile work
thunderphone agents list --profile work --json
thunderphone logout --profile work
```

`THUNDERPHONE_PROFILE` ডিফল্ট প্রোফাইল নির্ধারণ করে। লগ আউট স্থানীয় শংসাপত্র সরিয়ে দেয়;
এটি সার্ভার গ্র্যান্ট বাতিল করে না। ডিফল্ট API হলো `https://api.thunderphone.com`।
অন্য API-এর জন্য `--api-base-url` বা `THUNDERPHONE_API_BASE_URL` ব্যবহার করুন। একটি প্রোফাইলের টোকেন
ভিন্ন কনফিগার করা API URL-এ পাঠানো যাবে না; পৃথক প্রোফাইল দিয়ে সেই URL-এ লগ ইন করুন।

## কমান্ড

প্রতিটি কমান্ড `--json` গ্রহণ করে। সফল ডেটা stdout-এ যায়; ত্রুটি nonzero এক্সিট কোডসহ stderr-এ যায়।
`--json` ছাড়া আউটপুট একটি সংক্ষিপ্ত টেবিল বা ফিল্ড তালিকা হয়।
JSON শংসাপত্র ফিল্ড গোপন রেখে API রেসপন্সের কাঠামো বজায় রাখে। MCP সার্ভিং
MCP প্রোটোকলের জন্য stdout সংরক্ষিত রাখে।

| কমান্ড | উদ্দেশ্য |
| --- | --- |
| `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` | একটি US ইনবাউন্ড নম্বর প্রভিশন করুন |
| `numbers assign NUMBER_ID --agent ID` | একটি ইনবাউন্ড এজেন্ট বরাদ্দ করুন |
| `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` সরবরাহ করতে পারে। ThunderPhone দ্বারা প্রভিশন করা নম্বর শুধু ইনবাউন্ড। `--wait` ডিফল্টভাবে
এক ঘণ্টার টাইমআউট ব্যবহার করে; এটি পরিবর্তন করতে `--timeout SECONDS` সেট করুন। টাইমআউট অপেক্ষা বন্ধ করে,
কিন্তু কল শেষ করে না।

ইমপোর্ট `vapi`, `retell`, `elevenlabs` এবং `bland` সমর্থন করে। দ্বিতীয় আর্গুমেন্টটি
একটি ভেন্ডর JSON এক্সপোর্টের পাথ, রিমোট ভেন্ডর ID নয়। API অ্যাসিঙ্ক্রোনাসভাবে একটি ম্যাপিং প্রস্তুত করে;
`imports get UUID` দিয়ে এটি পরিদর্শন করুন এবং প্রস্তুত হওয়ার পর ও ম্যাপ করা ফিল্ড ও সতর্কতাগুলো পর্যালোচনা করার
পরেই কমিট করুন। [এজেন্ট ইমপোর্ট](/bn/guides/import-agents) দেখুন।

## MCP সেটআপ

```bash
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-এর জন্য user স্কোপ প্রয়োজন।
প্রজেক্ট থেকে একটি একক ক্লায়েন্ট শনাক্ত করতে `--client` বাদ দিন; শনাক্তকরণ অস্পষ্ট হলে
ইন্টারঅ্যাক্টিভভাবে prompt দেখায় বা নন-ইন্টারঅ্যাক্টিভ সেশনে নির্দেশনাসহ ব্যর্থ হয়।
সেটআপ যে ফাইলটিতে লিখেছে তা দেখায় এবং সম্পর্কহীন সার্ভারগুলো অপরিবর্তিত রাখে। বিদ্যমান JSON
অবশ্যই বৈধ strict JSON হতে হবে; Codex TOML মানগুলো সংরক্ষিত থাকে, তবে মন্তব্যের বিন্যাস পরিবর্তিত হতে পারে।

সেটআপ সরাসরি রিমোট HTTP-কে অগ্রাধিকার দেয়। `--api-key-env` ব্যবহার করলে এটি কখনও কী নয়,
একটি ভেরিয়েবল রেফারেন্স লেখে। এই অপশন ছাড়া, সরাসরি HTTP ক্লায়েন্টের
OAuth সমর্থনের ওপর নির্ভর করে; এটি CLI ক্রেডেনশিয়াল ফাইল ব্যবহার করে না। যেকোনো stdio-সক্ষম ক্লায়েন্টে
`thunderphone login` ক্রেডেনশিয়াল পুনর্ব্যবহার করতে ব্যবহার করুন:

```json
{
  "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` ইনস্টল করার পর `thunderphone-mcp setup` দিয়েও উপলভ্য।

## একটি প্রজেক্ট তৈরি করুন

```bash
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`, ডিপ্লয় স্ক্রিপ্ট, Claude Code, Cursor এবং VS Code-এর জন্য MCP কনফিগারেশন,
এজেন্ট নির্দেশনা, `.env.example`, এবং একটি README। স্ক্যাফোল্ডিং অফলাইনে কাজ করে এবং খালি নয় এমন ডিরেক্টরি
ওভাররাইট করতে অস্বীকার করে।

ডিপ্লয়মেন্টের আগে ব্যবসায়িক তথ্য সম্পাদনা করুন। তৈরি হওয়া README-তে নথিভুক্ত অনুযায়ী API কী, সংযুক্ত কলার
নম্বর এবং আপনার পরীক্ষার প্রাপক এক্সপোর্ট করুন। `npm run deploy`
অথবা `python deploy.py` এজেন্ট তৈরি বা আপডেট করে, এর ড্রাফট ডিপ্লয় করে এবং একটি বিলযোগ্য টেস্ট কল করে।
স্ক্রিপ্টগুলো API-কী প্রমাণীকরণ ব্যবহার করে; CLI এবং stdio MCP
র‍্যাপার ডিভাইস লগইনও সমর্থন করে। Python স্ক্রিপ্টের জন্য Python 3.9 বা পরবর্তী সংস্করণ প্রয়োজন।
