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

1.8 KiB

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:

/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:

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:

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

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.