Skip to content

fleet-telegram — Activation checklist (~15 minutes)

Everything in phases 1–2 is built, tested, and CI-green without a live bot. This checklist is the only part that needs you (a real Telegram account/token and an on-phone look). Development is done; this is turn-up.

1. Create the bot (BotFather) — 3 min

  1. In Telegram, message @BotFather/newbot → name it (e.g. "Fleet HQ — Greatroom") → get the bot token (looks like 1234567890:AA...).
  2. (Per-machine): repeat /newbot once per PC you want a gateway on (greatroom first). One token per machine — that's the council-decided topology (blast radius = one PC).

2. Create "Fleet HQ" supergroup + enable Topics — 3 min

  1. New Group → add your bot → make it a supergroup → Group Settings → Topics: ON (forum mode).
  2. Promote the bot to admin with "Manage Topics" + "Post Messages".
  3. Get the chat ID: send any message in the group, then the gateway logs the chat ID on first run (or use @RawDataBot temporarily). Note it.

3. Get your Telegram user-ID — 1 min

Message @userinfobot → it replies with your numeric user ID. This is the allowlist — only this ID is ever processed.

4. Write the local config (NEVER in OneDrive/repo) — 2 min

Create %USERPROFILE%\.claude\fleet-telegram.json on the gateway PC:

{
  "botToken": "PASTE_BOT_TOKEN",
  "fleetHqChatId": -1001234567890,
  "andrewUserId": 123456789
}
The file is read with a user-only ACL; the token is never logged or committed. (Optional: store the token in DPAPI instead — the config loader accepts a DPAPI-protected blob; plain JSON is fine for a single-user box.)

5. Ensure prerequisites are present (bootstrap already installs these)

  • .NET 10 (build/publish the gateway): dotnet publish src/FleetTelegram.Gateway -c Release.
  • ffmpeg on PATH — needed for voice notes (phase-2c) and recordings (phase-2d). winget install Gyan.FFmpeg if absent.
  • Whisper model: ggml-base.en.bin auto-downloads on first voice note (shared with audio-loop-mcp via AUDIO_LOOP_WHISPER_MODEL).
  • FleetDispatch.exe published (for @PCNAME remote commands) — bootstrap does this; see the fleet-dispatch repo.

6. Run the gateway — 1 min

dotnet run --project src/FleetTelegram.Gateway
It long-polls (no inbound ports/webhook). On start it prints the bot username + session count. Leave it running (bootstrap can install it as a service later, phase-3).

7. Smoke test on your phone — 5 min

In the Fleet HQ group: - Type /status → should route to Claude and reply (compressed). - /ls src → directory listing. /cat README.md → file head. /board → the board. - /shot → a screenshot of the gateway PC. - Type something dangerous like git push → you get a Confirm button; nothing runs until you tap it. - Send a voice note saying "slash ls src" → it transcribes, echoes the transcript, and asks you to confirm (voice always confirms, even for read-only — council safeguard). - @DESKTOP-D249KD4 status → routes the command to the gaming PC via fleet-dispatch (needs that PC's listener up + the shared key).

What each governor tier does to your commands

  • GREEN/YELLOW: commands run (YELLOW notes the tier).
  • RED/BLACKOUT: non-critical commands are refused; prefix with !critical to override (e.g. !critical restart the api).

Calibration you can only do live (note anything to tune)

  • Digest cadence feel (GREEN 2m / YELLOW 5m / RED 15m) — adjust in FleetConfig if too chatty/quiet.
  • Whisper confidence threshold for your voice/mic (VoiceMinAvgLogProb) — if it rejects your real voice too often, loosen it.
  • Recording quality/size under the 50MB Telegram cap.
  • NanoClaw has no persistent transcript today; when its wrapper tees output to a file, add a FileTailSource and it appears in Telegram with zero code.

Security recap (already enforced in code)

Allowlist = you only · token never in OneDrive/repo · long-poll only (no open ports) · every inbound audited + secrets redacted · dangerous commands + ALL voice require confirm · remote commands ride fleet-dispatch HMAC · never reboots a machine.