teleo-infrastructure/docs/leo-disposable-test-agent.md
2026-06-20 01:10:21 +02:00

60 lines
1.8 KiB
Markdown

# Leo Disposable Test Agent
## Working Target
Run a second Leo Telegram transport against `https://leo.livingip.xyz/api/agents/leo/chat` without touching the production `@TeleoHumanBot` token or `teleo-agent@leo` service.
## Why
Production Leo is currently blocked by a Telegram `getUpdates` conflict from an unseen consumer. A disposable bot avoids that conflict by using a separate Telegram bot token and service instance.
## Secret Boundary
Do not commit the bot token. Store it only on the VPS as:
```text
/opt/teleo-eval/secrets/leo-test-telegram-bot-token
```
The file should be readable by the `teleo` runtime user and should not be printed in logs.
## Boot
After syncing this branch or PR to the VPS:
```sh
sudo -u teleo /opt/teleo-eval/pipeline/.venv/bin/python3 \
/opt/teleo-eval/telegram/agent_runner.py --agent leo-test --validate
sudo systemctl start teleo-agent@leo-test
sudo systemctl is-active teleo-agent@leo-test
```
Then DM the disposable Telegram bot from a user account. Do not post into public groups for this canary.
## Evidence
Collect sanitized logs only:
```sh
journalctl -u teleo-agent@leo-test --since "10 minutes ago" --no-pager
```
Retained proof should say:
- bot token value was not printed;
- production `teleo-agent@leo` was not stopped;
- disposable service name was `teleo-agent@leo-test`;
- public HTTP Leo route responded through the Telegram transport;
- no paid x402 spend was attempted unless separately authorized.
## Tear Down
```sh
sudo systemctl stop teleo-agent@leo-test
sudo systemctl is-active teleo-agent@leo-test || true
```
## Slack Note
Slack is the preferred long-term internal transport, but this repository does not yet include a Slack bot transport. A Slack canary should be a separate PR with a Socket Mode or Events API adapter and separate `leo-slack-*` secret files.