Skip to content

Latest commit

 

History

124 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AlgoVault Bot

Free public Telegram bot — regime alerts + AlgoVault trade calls (BUY/SELL) for AI traders + agents.

@algovaultofficialbot on Telegram. Built by AlgoVault Labs.


What it does

Two kinds of alerts pushed to your watchlist, automatically:

Alert Free? Cadence
📊 Regime shifts (TRENDING_UP / TRENDING_DOWN / RANGING / VOLATILE) Counts toward your free 200 alerts/month (and 100/day) Per chosen TF, fired only after 2 confirming cycles (no flap)
📈 Trade calls (BUY / SELL only — HOLD verdicts are silent) Counts against your free 200 alerts/month (and 100/day) cap Per chosen TF, real-time

Free tier covers all 720+ assets and all 11 timeframes (1m → 1d). You pick what to watch — more assets + lower timeframes = faster quota burn.

The bot is a thin client over the crypto-quant-signal-mcp composite-verdict signal API. Every alert traces back to the same on-chain-anchored signal stream that AlgoVault publishes via MCP.


Quick start

  1. Open Telegram → search @algovaultofficialbot → tap Start.
  2. Add your first watchlist entry: /watch BTC 4h
  3. List what you're watching: /list
  4. Help: /help

Commands

/start                                   — show welcome message
/watch <COIN> <TF> [EXCHANGE] [TYPE]     — add to watchlist
/unwatch <COIN> <TF> [EXCHANGE]          — remove from watchlist
/list                                    — show your watchlist
/help                                    — full command reference

Arguments:

  • COIN — uppercase 2-10 chars (BTC, ETH, SOL, 1000PEPE, etc.)
  • TF — 1m 3m 5m 15m 30m 1h 2h 4h 8h 12h 1d
  • EXCHANGE — HL BINANCE BYBIT OKX BITGET (default: BINANCE)
  • TYPE — regime, calls, or both (default: calls)

Per-user cap: 50 watchlist entries.

Examples:

/watch BTC 4h                  — trade calls only, default exchange
/watch ETH 1h HL regime        — regime-only on Hyperliquid
/watch SOL 15m BYBIT both      — regime + trade calls on Bybit
/unwatch BTC 4h                — remove BTC 4h on BINANCE

Quota burn — the math

Trade-call alerts on busier (lower-TF) pairs consume your free 200 alerts/month faster:

Watch Approx. burn
/watch BTC 1d ~1 alert / mo
/watch BTC 4h ~5 alerts / mo per pair
/watch BTC 15m ~30 alerts / mo per pair
/watch BTC 1m quota blown in days

Smart routing:

  • HOLD verdicts are silent, so there is no alert to meter and no quota tick. This bot bills DELIVERED ALERTS; the API bills every verdict, HOLD included. The divergence is deliberate and declared — see docs/METERING-DIVERGENCE.md.
  • Regime alerts count toward your 200/mo (parity with the AlgoVault API/MCP, which meters get_market_regime).
  • Trade-call alerts (BUY/SELL only) tick your 200/mo counter.
  • Both also tick a 100 per UTC day meter. A call is refused when EITHER is spent; the daily one resets at 00:00 UTC.

When you hit the cap, upgrade to Starter ($9.99/mo or $39.90/6mo → 10,000 API calls/mo) or pay per call via x402.org.


Anti-abuse

Free tier: two meters, and a call is refused when either is spent.

  • 200 alerts / rolling 30 days, anchored on your first alert (not a calendar month).
  • 100 alerts / UTC day, reset at 00:00 UTC.

Paid tiers: the free meters do not apply. A delivered alert draws down your plan allowance instead, and you are walled at the plan ceiling — see docs/METERING-DIVERGENCE.md.

Corrected 2026-08-27 (GROWTH-TG-QUOTA-PARITY-W1). This section used to document three per-user 24h caps — 20 regime / 30 trade-call / 50 fetches — and state that they lapse on upgrade. All four claims were false. Those caps were removed before this README was written and the code says so in two places (alert_engine.py: "No 24h cap — only the quota gate applies") as does tests/test_anti_abuse.py; the columns survive in db.py as dead C5_MIGRATIONS that nothing reads. And upgrading has never removed a ceiling — it replaces the free meters with the plan's.

Telegram-side: bot uses an asyncio.Semaphore(25) to stay under Telegram's 30 msg/sec ceiling.


Privacy

  • The bot stores only: your chat_id, Telegram username (if public), Telegram language code, and your watchlist entries.
  • No message history. No payment data (signups happen on algovault.com via Stripe; the bot never handles PII or cards).
  • Bot calls crypto-quant-signal-mcp server-side via a single internal-bypass key — your individual chat_id is not propagated to the upstream signal server.
  • All UTM-tagged signups (utm_source=tg_bot) live in Plausible — operator-side analytics only; no per-user tracking.

Architecture

                    ┌─────────────────────────────────────────────┐
                    │  Hetzner CPX22 (204.168.185.24)             │
                    │                                              │
   You ──Telegram──▶│  algovault-bot.service                      │
                    │    ├── /etc/algovault-bot/env (mode 600)     │
                    │    ├── /var/lib/algovault-bot/state.db       │
                    │    │     SQLite WAL, mode 660                │
                    │    └── /var/log/algovault-bot/alerts.log     │
                    │       (logrotate weekly × 8)                 │
                    │                                              │
                    │  algovault-bot-cron.timer                    │
                    │    fires every 1 min @ HH:MM:00              │
                    │    ↓                                         │
                    │  algovault-bot-cron.service                  │
                    │    per-TF lazy dispatch                      │
                    │    ↓ X-AlgoVault-Internal-Key                │
                    │  http://127.0.0.1:3000/mcp                   │
                    │    crypto-quant-signal-mcp                   │
                    │    (tier:'internal' bypass; bot enforces     │
                    │    per-user quota in its own SQLite)         │
                    └─────────────────────────────────────────────┘
  • One systemd timer fires the alert engine every minute.
  • The engine queries the SQLite watchlist for rows due (per-TF lazy dispatch: now - last_fetched_at >= TF_SECONDS).
  • Each due row makes a single MCP tools/call against crypto-quant-signal-mcp over loopback (no Cloudflare round-trip).
  • Quota counting and rate-limiting are all bot-side; signal-MCP sees a single internal-bypass tier.

License

MIT. Built by AlgoVault Labs.

Source: this repo. Issues + feature requests: GitHub Issues.

About

Public Telegram bot for AlgoVault — regime alerts + trade calls. Built by AlgoVault Labs.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages