TradeClaw

Open-source AI market intelligence for traders who prefer evidence over noise.

Self-hosted by default

Product

  • Dashboard
  • Screener
  • Backtest
  • Track record
  • Live demo

Transparency

  • What we tested and killed
  • Methodology
  • Why long-term
  • Open data
  • Calibration

Resources

  • Blog
  • Docs
  • API reference
  • How it works
  • FAQ
  • Glossary

Community

  • Discord
  • Weekly digest
  • Contribute
  • Contributors
  • Sponsors

Open source

  • GitHub repo
  • Star history
  • Self-host guide
  • Security
  • Data freshness
  • Roadmap

© 2026 TradeClaw. MIT licensed.

Terms|Privacy|Trading involves risk. Signals are informational only and are not financial advice.
DashboardScreenerCopilotTrack Record
TradeClaw
Documentation

Getting Started

  • Overview
  • Installation
  • Configuration
  • Self-Hosting

Core Features

  • Trading Signals
  • Paper Trading
  • Strategy Builder

Integrations

  • API Reference
  • Webhooks
  • Telegram Bot
  • Plugins
  • Embedding

Project

  • Contributing
  • Changelog
GitHubApp Dashboard

Getting Started

Configuration

TradeClaw is configured entirely through environment variables. Copy .env.example to .env.local and fill in the values relevant to your deployment.

Full .env.example

apps/web/.env.example
# ---------------------------------------------------------------------------
# App
# ---------------------------------------------------------------------------
NEXT_PUBLIC_BASE_URL=https://tradeclaw.win

# ---------------------------------------------------------------------------
# Telegram (optional — needed for bot alerts)
# ---------------------------------------------------------------------------
TELEGRAM_BOT_TOKEN=...
NEXT_PUBLIC_TELEGRAM_BOT_USERNAME=YourBotUsername

TELEGRAM_FREE_CHANNEL_ID=-100...

# ---------------------------------------------------------------------------
# Database
# ---------------------------------------------------------------------------
DATABASE_URL=postgresql://user:password@host:5432/tradeclaw

# ---------------------------------------------------------------------------
# Redis (optional — for API rate limiting)
# ---------------------------------------------------------------------------
UPSTASH_REDIS_REST_URL=https://...
UPSTASH_REDIS_REST_TOKEN=...

App

VariableDescriptionExample
NEXT_PUBLIC_BASE_URLrequiredYour public app URL. Used for SSE endpoints, OG images, and webhook callbacks.https://tradeclaw.win
APP_PORTDocker host port binding. Defaults to 3000.3000

Database

VariableDescriptionExample
DATABASE_URLrequiredPostgreSQL connection string. Docker Compose injects this automatically.postgresql://user:pass@host:5432/db
DB_NAMEDatabase name (Docker Compose only). Defaults to tradeclaw.tradeclaw
DB_USERDatabase username (Docker Compose only).tradeclaw
DB_PASSWORDDatabase password. Change from default in production.changeme

Redis

Redis is optional. It is used for API rate limiting. If not configured, rate limiting falls back to in-memory (not suitable for multi-instance deployments).

VariableDescription
UPSTASH_REDIS_REST_URLUpstash Redis REST endpoint. Use local Redis URL for self-hosted.
UPSTASH_REDIS_REST_TOKENAuth token for Upstash. Not needed for local Redis.

Telegram

Create a bot via @BotFather on Telegram to get your token. See the Telegram guide for step-by-step setup.

VariableDescription
TELEGRAM_BOT_TOKENBot API token from @BotFather. Format: 123456789:ABC...
NEXT_PUBLIC_TELEGRAM_BOT_USERNAMEYour bot's @username (without @). Used for deep-link generation.
TELEGRAM_FREE_CHANNEL_IDChannel ID for public signal broadcasts. Use a negative number for channels/groups.
WEB_PUSH_VAPID_PUBLIC_KEYVAPID public key for browser push. Generate with: npx web-push generate-vapid-keys
WEB_PUSH_VAPID_PRIVATE_KEYVAPID private key. Server-only — never expose to the browser.
WEB_PUSH_VAPID_SUBJECTContact URL or mailto: for push providers (e.g. mailto:[email protected]).
NEXT_PUBLIC_WEB_PUSH_VAPID_PUBLIC_KEYSame value as WEB_PUSH_VAPID_PUBLIC_KEY, exposed to the client for pushManager.subscribe.

Scanner Service

These variables control the background signal scanner process.

VariableDefaultDescription
SCAN_INTERVAL60Seconds between full scans across all instruments and timeframes.
SCAN_INSTRUMENTSallComma-separated list of symbols, or "all" to scan every instrument.
PreviousInstallationNextSelf-Hosting
Edit this page on GitHub