# Hermes Agent

> Nous Research-এর Hermes Agent-কে Tokens-এ custom chat completions endpoint হিসেবে জুড়ুন, key রাখুন ~/.hermes/.env-এ, কমপক্ষে 64K context length দিন, আর model বদলান।

Hermes Agent হলো Nous Research-এর open-source, নিজে থেকে শিখে উন্নত হওয়া agent। এতে আছে CLI, TUI, আর Telegram, Discord ইত্যাদির জন্য messaging gateway। এটা Tokens-এ জোড়া লাগে custom endpoint হিসেবে, OpenAI-ধাঁচের chat completions দিয়ে, `https://tokens.bd/v1`-এ।

:::warning[Hermes-এর জন্য কমপক্ষে 64K token context লাগবে]
যে model-এর context window 64,000 token-এর কম, Hermes সেটা নিয়ে চালুই হতে চায় না। সাথে এমন model লাগবে যেটা OpenAI-ধাঁচের tool calling পারে। model বাছার আগে [/models](/models)-এ ওই model-এর পাতায় context window দেখে নিন।
:::

[Tokens CLI](/docs/tokens-cli) Hermes configure করে না। তাই Hermes-এর নিজের wizard চালান, নয়তো তার config file edit করুন।

## Hermes Agent install করুন

:::code-tabs

```bash title="Linux / macOS / WSL2"
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.bashrc   # or ~/.zshrc
```

```powershell title="Windows PowerShell"
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
```

:::

key না থাকলে [/dashboard/keys](/dashboard/keys)-এ গিয়ে একটা বানিয়ে নিন। spend cap আর model allow-list কী, তা [API keys](/docs/api-keys)-এ বলা আছে।

## Option A: hermes model wizard

Hermes-এর docs এই interactive wizard-টাই recommend করে। এটা চালাতে হবে আপনার terminal থেকে, কোনো chat session-এর ভেতরে নয়:

```bash
hermes model
```

**Custom endpoint (self-hosted / VLLM / etc.)** বেছে নিন, তারপর এগুলো দিন:

| Prompt       | যা দেবেন                       |
| ------------ | ------------------------------ |
| API base URL | `https://tokens.bd/v1`         |
| API key      | your `tok_live_...` key        |
| Model name   | `deepseek/deepseek-v4.1-flash` |

এরপর `~/.hermes/config.yaml` খুলে নিচে দেখানো ধাঁচে `context_length` যোগ করুন, যাতে Hermes-কে আন্দাজ করতে না হয়।

## Option B: ~/.hermes/config.yaml edit করুন

Hermes-এর docs `config.yaml`-কে বলে একমাত্র নির্ভরযোগ্য উৎস। key রাখুন `~/.hermes/.env`-এ, আর config-এ তার নাম ধরে উল্লেখ করুন:

```ini title="~/.hermes/.env"
TOKENS_API_KEY=tok_live_your_key
```

shell-এ export করে রাখতে চাইলে সেটাও চলে:

:::code-tabs

```bash title="macOS / Linux"
export TOKENS_API_KEY="tok_live_your_key"
```

```powershell title="Windows PowerShell"
$env:TOKENS_API_KEY = "tok_live_your_key"   # this window
setx TOKENS_API_KEY "tok_live_your_key"     # new windows
```

:::

এরপর model block সেট করুন:

```yaml title="~/.hermes/config.yaml"
model:
  default: deepseek/deepseek-v4.1-flash
  provider: custom
  base_url: https://tokens.bd/v1
  key_env: TOKENS_API_KEY
  context_length: 128000 # placeholder: use the model's real window, at least 64000
```

`context_length` একটা placeholder। আসল value [/models](/models) থেকে copy করুন। Hermes context size খোঁজে প্রথমে আপনার config-এ, তারপর endpoint-এর model list-এ, তারপর নিজের default-এ। তাই নিজে সেট করে দিলে আর আন্দাজের দরকার পড়ে না।

### Tokens-কে আলাদা নামের provider হিসেবে রাখা

Hermes-এ একাধিক provider চালালে Tokens-কে বরং `providers:`-এর নিচে declare করুন। পুরোনো `custom_providers:` list নিজে থেকেই এই ধাঁচে migrate হয়ে যায়।

```yaml title="~/.hermes/config.yaml"
providers:
  tokens:
    api: https://tokens.bd/v1
    key_env: TOKENS_API_KEY
    transport: chat_completions
    default_model: deepseek/deepseek-v4.1-flash
    context_length: 128000 # placeholder
```

Hermes-এ `anthropic_messages` transport-ও আছে। সেটা নিজে base URL-এর পরে `/v1/messages` জুড়ে নেয় কি না, আমরা নিশ্চিত হইনি। তাই বদলানোর কোনো কারণ না থাকলে `chat_completions`-এই থাকুন।

## Model বদলানো

`model.default` (বা আপনার named provider-এর `default_model`) বদলে [/models](/models) বা `GET /v1/models` থেকে অন্য একটা id বসান, আর `context_length`-ও নতুন model-এর সাথে মিলিয়ে দিন। wizard পছন্দ হলে আবার `hermes model` চালান। কোন model বাছবেন, তাতে সাহায্য করবে [Choosing a model](/docs/choosing-a-model)।

session-এর ভেতরে named provider-এর জন্য নিয়ম করা syntax হলো:

```text
/model custom:tokens:deepseek/deepseek-v4.1-flash
```

format হলো `/model custom:<name>:<model>`। যে model id-র নিজের ভেতরেই slash আছে, Hermes তা কীভাবে parse করে সেটা তাদের docs-এ বলা নেই। তাই এতে model না বদলালে `config.yaml`-এ গিয়ে বদলান। session-এর ভেতরে `/model` শুধু আগে থেকে configure করা provider-গুলোর মধ্যে বদলাতে পারে।

## ঠিকমতো চলছে কি না দেখুন

```bash
hermes status
hermes doctor
hermes chat --oneshot -q "Reply with OK"
```

শেষ command একবার উত্তর দিয়ে বেরিয়ে যায়। Hermes session শুরু করলে একটা `Context limit: X tokens` লাইন ছাপে, ওটা model-এর আসল window-র সাথে মিলছে কি না দেখুন।

## সমস্যা হলে

**context size-এর কারণে Hermes চালু হচ্ছে না।** configure করা বা detect হওয়া context 64,000 token-এর কম। বড় window-র model নিন, আর `context_length` নিজে সেট করুন।

**`OPENAI_BASE_URL` বা `LLM_MODEL`-এর কোনো প্রভাব পড়ছে না।** `LLM_MODEL` তুলে দেওয়া হয়েছে। `OPENAI_BASE_URL` পড়া হয় শুধু `openai-api` provider-এর জন্য, `custom`-এর জন্য নয়। `CUSTOM_BASE_URL` টিকে আছে শুধু পুরোনো fallback হিসেবে। সব কিছু `config.yaml`-এ সেট করুন।

**401 `missing_api_key`।** `key_env`-এ যে variable-এর নাম দিয়েছেন, Hermes সেটা দেখতে পাচ্ছে না। `~/.hermes/.env`-এ বানান মিলিয়ে নিন, কিংবা দেখুন যে shell থেকে Hermes চালু করেছেন সেখানে ওটা export করা আছে কি না।

**tool call ব্যর্থ হয়, বা agent একই জায়গায় ঘুরতে থাকে।** Hermes OpenAI tool calling-এর ওপর নির্ভর করে। অন্য model-এ যান। agent-এর model-এ কী কী দেখে নিতে হয়, তা [Choosing a model](/docs/choosing-a-model)-এ আছে।

**আনুষঙ্গিক কাজ থেকে অপ্রত্যাশিত usage।** vision, web summarization, compression আর title তৈরির কাজ default-এ main model দিয়েই চলে। `config.yaml`-এর `auxiliary.*`-এর নিচে এগুলোর জন্য আলাদা model দিয়ে দিতে পারেন।

**403 `model_not_allowed_on_key` বা 429 `window_exhausted`।** এগুলো key আর plan-এর সীমা। সব error code-এর জন্য [Troubleshooting](/docs/troubleshooting) দেখুন।

---
Page: https://tokens.bd/bn/docs/hermes-agent
