# 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.