---
name: hermes-telegram-profile
description: Create an isolated Hermes profile for a Telegram bot with custom model, system prompt, tools, and memory isolation.
version: 1.0.0
author: Hermes Agent
category: software-development
---
# Creating an Isolated Hermes Profile for a Telegram Bot

This skill guides you through creating a dedicated Hermes profile that runs with its own configuration, memory, and set of tools—ideal for running a specialized Telegram bot (e.g., a personal assistant) without interfering with your main Hermes instance.

## When to Use
- You want to run a separate Hermes instance with a different model, prompt, or tool set.
- You need memory isolation so that the bot’s memories do not mix with your personal Hermes usage.
- You wish to bind the profile to a specific Telegram user or chat (via user ID or chat ID).
- Example use cases: a business assistant for a family member, a customer‑support bot, or a specialized research agent.

## Prerequisites
- Hermes installed and available in your PATH (`hermes` command).
- Basic understanding of YAML for editing the profile config.
- (Optional) Google Sheets API credentials if you plan to use `google_sheets_read/write` tools.
- Telegram user ID or chat ID of the person/bot you want to serve.

## Steps

### 1. Create the Profile Directory
```bash
# Choose a profile name, e.g., "tanya-bot"
hermes profile create tanya-bot
# This creates ~/.hermes/profiles/tanya-bot/ with a default config.yaml.
```
> The `hermes profile create` command may not be available in all Hermes installations. If it fails, create the directory manually:
> ```bash
> mkdir -p ~/.hermes/profiles/tanya-bot
> ```

### 2. Write the Configuration File
Edit `~/.hermes/profiles/tanya-bot/config.yaml` with your preferred editor and insert the following template (adjust values as needed):

```yaml
model:
  # Choose your LLM provider and model. Example uses NVIDIA Nemotron via the NVIDIA provider.
  provider: nvidia
  model: nemotron-3-super-120b-a12b
  temperature: 0.3          # Lower for more deterministic answers
  max_tokens: 1500

# System prompt defines the bot's role and behavior.
system_prompt: |
  ## РОЛЬ
  Ты — Помощник [Имя], личный бизнес‑ассистент менеджера яхтенного чартера Atlantic Sail.
  [Имя] — твой единственный пользователь. Ты говоришь с ней только по‑русски, тепло и без лишних слов.

  Ты умеешь:
  — Общаться с клиентами на ЛЮБОМ языке от имени [Имя]
  — Вести таблицу загрузки яхт и финансов в Google Sheets
  — Ставить напоминания и присылать уведомления
  — Подводить финансовые итоги за период

  ## ФЛОТ И ЦЕНЫ
  Яхты: Lipari 41, Lucia 40, Oceanis 473, Dufour 405
  Цены: каюта 500–1000€/нед, аренда дня 1300–1850€, неделя 2000–4850€
  Капитаны: Костя, Юра, Валентин

  ## ПЕРЕВОД — ГЛАВНОЕ ПРАВИЛО
  Когда [Имя] пересылает тебе сообщение от клиента:
  1. Определи язык клиента
  2. Составь ответ клиенту на ЕГО языке — профессионально, от имени Atlantic Sail
  3. Покажи [Имя]:
     — 📨 ОТВЕТ КЛИЕНТУ (на языке клиента) — можно копировать и отправить
     — 🔍 ПЕРЕВОД ДЛЯ [ИМЕНИ] (по‑русски) — чтобы она понимала что написано

  [Имя] НИКОГДА не видит что ты написал клиенту только на его языке — всегда дай ей оба варианта.

  ## ТАБЛИЦЫ GOOGLE SHEETS
  Лист "Загрузка яхт":
  - Колонки: Яхта | Клиент | Дата начала | Дата конца | Сумма | Статус | Примечание
  - Записывай только после подтверждения: "Записать?"

  Лист "Финансы":
  - Колонки: Дата | Яхта | Сумма | Капитан | Лодка | Общее | Валя | Соня | Примечание
  - Перед записью — показать расчёт и спросить "Всё верно?"

  ## КАК ОБЩАТЬСЯ С [ИМЕНИЕМ]
  - Только русский язык
  - Коротко — 2-4 строки максимум
  - Всегда предлагай следующий шаг
  - Если не поняла — уточни одним вопросом
  - Если данных не хватает для брони — спроси только недостающее

  ## ЗАПРЕТЫ
  — Никогда не просить команды (/add, /list) — принимать живую речь
  — Никогда не менять финансовые данные без "да" от [Имени]
  — Никогда не угадывать яхту — уточнить при неоднозначности
  — Не показывать клиенту русский перевод
  — Не спрашивать несколько вопросов сразу — один за раз

  ## ТОН
  Тёплый, деловой, как умный коллега. Не робот, не слуга — помощник.

# List the tools this profile is allowed to use.
tools:
  - google_sheets_read
  - google_sheets_write
  - translate
  - reminder_set
  - reminder_list
  - web_search   # useful as a fallback for translation or fact‑checking

# Telegram settings: restrict the profile to a specific user.
telegram:
  default_target: telegram:1307271708   # Replace with the target user's Telegram ID
  allowed_users: [1307271708]           # Only this user can interact with the bot

# Memory settings: short‑ and medium‑term enabled, long‑term disabled (adjust as needed).
memory:
  short_term: true
  medium_term: true
  long_term: false

# Optional: list of skills to load automatically when the profile starts.
# Leave empty if you prefer to load skills manually via skill_view().
skills: []
```

**Key points to customize**:
- Replace `system_prompt` with the appropriate role, instructions, and tone for your bot.
- Update `model.provider` and `model.model` if you want a different LLM (e.g., `anthropic/claude-3-haiku`, `openai/gpt-4o-mini`, etc.).
- Adjust `temperature` and `max_tokens` to suit your use case.
- In the `telegram` section, put the correct Telegram user ID or chat ID. You can obtain a user ID by forwarding a message to @userinfobot or using `/start` with a bot that reveals IDs.
- Add or remove tools from the `tools` list according to what the bot needs (e.g., `gmail`, `linear`, etc.).
- If you want the bot to load certain skills automatically, list them under `skills`.

### 3. (Optional) Test the Profile
Launch Hermes using the new profile:
```bash
hermes -p tanya-bot
```
You should see Hermes start and indicate it’s using the profile `tanya-bot`.  
Send a test message in Telegram to the bound user/chat. The bot should respond according to the system prompt and have access to the enabled tools.

### 4. Verify Isolation
- Check that memories created in this profile do not appear in your default Hermes profile.  
  You can inspect memory via `memory` tool (if exposed) or simply note that personal reminders or facts you added elsewhere are not recalled by this bot.
- Ensure that the bot only responds to the allowed Telegram user/chats.

### 5. Managing the Profile
- **Update config**: Edit `~/.hermes/profiles/<name>/config.yaml` and restart the Hermes process.
- **Delete profile**: Remove the directory `~/.hermes/profiles/<name>/`.
- **List profiles**: `hermes profile list` (if the command exists) or simply `ls ~/.hermes/profiles/`.

## Evolution Notes
- This skill can be extended to support multiple Telegram chats/groups by adjusting the `telegram.allowed_users` list or using a more advanced routing setup.
- For production deployment, consider wrapping the `hermes -p <profile>` command in a systemd service or Docker container to ensure the bot runs continuously.
- If you frequently create similar profiles, you can turn the config template into a script that generates the config.yaml from parameters.

---
**Done!** You now have an isolated Hermes profile ready to act as a specialized Telegram bot with its own memory, model, and tool set.