# Gateway Restart & Test Message Reference

## Checking Gateway Status

```
ps aux | grep 'hermes gateway run'
```

Note the PID and whether it's running as Ssl (stable).

## Checking for systemd Service

```
systemctl --user list-units --type=service --all | grep -i hermes
```

Empty response = gateway was started manually, not systemd-managed.

## Manual Restart Sequence (no systemd)

```
# 1. Find and kill old gateway
ps aux | grep 'hermes gateway run'
kill -9 <PID>              # -9 if plain kill doesn't work
sleep 2

# 2. Verify it's dead
ps aux | grep 'hermes gateway run'

# 3. Start fresh
# In the Hermes CLI, use:
#   terminal(background=true, notify_on_complete=true, command="hermes gateway run")
# Do NOT use nohup, disown, or trailing & in foreground terminal()
```

## Verifying Telegram Connection in Logs

Log file: `~/.hermes/logs/gateway.log`

### Lines confirming a successful connection:

```
Connecting to telegram...
[Telegram] Auto-discovered Telegram fallback IPs: 149.154.166.110
[Telegram] set_my_commands OK for scope BotCommandScopeDefault (30 cmds)
[Telegram] Connected to Telegram (polling mode)
✓ telegram connected
```

### Quick grep check:

```
grep -E "(telegram connected|Connecting to telegram|Connected to Telegram)" ~/.hermes/logs/gateway.log
```

## Sending a Test Message (CLI Workaround)

The `send_message` Hermes tool does NOT work from CLI sessions for Telegram — it returns "No messaging platforms connected". Use the Telegram Bot API directly via curl:

```
curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
  -d "chat_id=${CHAT_ID}" \
  -d "text=Hello from Hermes!"
```

### Expected response on success:

```json
{"ok":true,"result":{"message_id":677,"from":{"id":8971430276,"is_bot":true,...},"chat":{"id":1498679692,...},"date":1780001714,"text":"Hello from Hermes!"}}
```

If `"ok":true`, the message was delivered. You can also add `-d "parse_mode=HTML"` for rich text formatting.

## .env Configuration Snippets

### Default state (all commented out):

```
# TELEGRAM_BOT_TOKEN=*** TELEGRAM_ALLOWED_USERS=
# TELEGRAM_HOME_CHANNEL=
# TELEGRAM_HOME_CHANNEL_NAME=
```

### After configuration — split into separate lines:

```env
TELEGRAM_BOT_TOKEN=your_bot_token_here
TELEGRAM_ALLOWED_USERS=123456789
TELEGRAM_HOME_CHANNEL=123456789
TELEGRAM_HOME_CHANNEL_NAME=@yourusername
```

### sed commands to uncomment (one per line):

```
sed -i 's|^# TELEGRAM_ALLOWED_USERS=.*|TELEGRAM_ALLOWED_USERS=123456789|' ~/.hermes/.env
sed -i 's|^# TELEGRAM_HOME_CHANNEL=.*|TELEGRAM_HOME_CHANNEL=123456789|' ~/.hermes/.env
sed -i 's|^# TELEGRAM_HOME_CHANNEL_NAME=.*|TELEGRAM_HOME_CHANNEL_NAME=@username|' ~/.hermes/.env
```

**Caveat on TELEGRAM_BOT_TOKEN:** The default template has `TELEGRAM_BOT_TOKEN` and `TELEGRAM_ALLOWED_USERS` on the same commented line. The simple `sed` to uncomment probably won't work cleanly. Verify the exact line format with `grep -n 'TELEGRAM_BOT_TOKEN' ~/.hermes/.env` and replace the entire line if needed, or delete the old line and insert fresh ones.

## Token Visibility Note

In gateway logs and grep output, the bot token may appear partially masked (e.g., `TELEGRAM_BOT_TOKEN=***...***`). This is normal log sanitization — the full token is still loaded and used by the gateway process.
