Root cause of intermittent '⚠️ Tiger timed out or is offline' replies: TWO consumers raced for getUpdates on one bot token. OpenClaw's native channel owns the conversation; the bridge poller lost with a 409 every ~40s, and when it occasionally WON it relayed the stolen message into a fresh context-less tg_* session with a 120s budget — slow turns produced the ⚠️ reply, and the message never reached the native transcript (so it was also missing from the dashboard mirror). Outbound notify (raw Bot API) is unaffected. Re-enable explicitly with TIGER_TELEGRAM_POLLER=on only if native telegram is disabled. |
||
|---|---|---|
| .agent | ||
| .claude | ||
| .clawhub | ||
| bridge | ||
| canvas | ||
| commands | ||
| config | ||
| dashboard | ||
| deploy | ||
| docs | ||
| firecrawl-search | ||
| memory | ||
| scripts | ||
| skills | ||
| tools | ||
| .gitignore | ||
| AGENTS.md | ||
| ARCHITECTURE.md | ||
| deploy.sh | ||
| HEARTBEAT.md | ||
| local-dev.sh | ||
| MEMORY.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| TOOLS.md | ||
| USER.md | ||
Tiger Command Center
Self-hosted AI orchestration: one Tiger, four specialists, every action audited.
The control plane for Tiger, an OpenClaw-based AI agent running on a
Hetzner VPS, reachable at agent.manohargupta.com. Tiger orchestrates four
specialist sub-agents — Cody (code), Ethan (research), Cathy
(writing), Elon (planning) — handles Telegram, watches Angel One
positions, and drains a TASKS.md inbox while you do real work.
What lives here
| Path | What it is |
|---|---|
dashboard/ |
Next.js 14 command center UI (tiger-dashboard, :3100) |
bridge/ |
Express control-plane API (tiger-bridge, :3456, localhost-only) |
skills/ |
OpenClaw skills (spawn-delegate, angel-positions, inbox-manager, sys-health, youtube-full) |
ARCHITECTURE.md |
The real system map — read this first |
TOOLS.md |
Tool/skill quick reference |
Core capabilities
- Sub-agent spawning —
POST /tiger/spawnruns a specialist in an isolated OpenClaw session; result lands on Telegram. Tracked inexecutions. - TASKS.md inbox — drop
- [ ]lines under## 📥 INBOX; the bridge dispatches the top item to the right specialist every 30 min (9–20 IST). - Telegram mirror — the homepage thread reads OpenClaw's native session transcript: full history, both directions, perfectly in sync.
- Audit trail —
/activitymerges spawns, cron runs, task lifecycle, and outputs into one paginated, filterable timeline. - Own model gateway — every model call routes through
llm.manohargupta.com(LiteLLM on own MiniMax/Anthropic keys). Primary: MiniMax-M3.
Running it
Both services are systemd units on the host:
systemctl restart tiger-bridge # Express via tsx — no build step
cd dashboard && npm run build && systemctl restart tiger-dashboard
Env contracts:
bridge/.env—TIGER_BRIDGE_TOKEN,LLM_GATEWAY_URL,LLM_GATEWAY_KEY,TIGER_ROUTER_MODEL, Telegram credentialsdashboard/.env.local—TIGER_BRIDGE_URL,TIGER_BRIDGE_TOKEN
⚠️ The bridge token is also embedded in OpenClaw cron payloads
(cron/jobs.json, twice). Rotate all four locations together.
Git
Forgejo is canonical (git.manohargupta.com/manohar/OpenClawDashboard, SSH
port 2222); GitHub (manohar6839/NemoClawDashboard) is a public mirror —
never commit secrets. Push to both:
git push origin main && git push github main