KESTREL docs
v1.0.0
Get help
● Start · The first hour

Getting started
from an empty server to your first paper trade.

The shortest path through the setup, in the order that works. Each step links to the page with the details.

About 1 hourNo programming

01The path

  1. Rent a VPS and a domain. Ubuntu 22.04 or 24.04, 2 GB RAM recommended, and a domain such as trade.example.com pointed at the VPS (Requirements).
  2. Run the installer. Upload the kestrel folder and run sudo ./install.sh. It installs Docker, writes .env with a random master key, builds the server and the web app and starts them with HTTPS (Install with Docker).
  3. Back up .env. It holds KESTREL_MASTER_KEY. Without it every stored exchange key is unreadable (Master key).
  4. Create the console owner. Open https://your-domain/admin and enter the one-time setup code from the server log (First owner).
  5. Choose your settings. Brand, tenancy, features, and optionally the Telegram bot, email, push and AI model (Operator console).
  6. Register in the app. Open https://your-domain, register, and turn on two-factor sign-in under Settings, Security.
  7. Try it on paper. Settings, Exchange accounts, Connect exchange, choose Paper. See below.
  8. Connect a real exchange. Create a trade-only key with withdrawals off and your server IP whitelisted (Exchange API keys). Start with the exchange's testnet or demo trading if you can.
  9. Build the mobile apps with your own name, icon and bundle ID when you are ready to publish (Mobile and web apps).

02Your first paper trade

A paper account needs no API key. The server simulates it with 10000 USDT and fills its orders from the exchange's live public prices (server/src/exchanges/paper.ts). Everything in the app works on it: terminal, Smart Trades, bots, alerts, journal.

  1. Settings, Exchange accounts, Connect exchange. Pick an exchange (its prices are used), choose the mode Paper and press Create paper account.
  2. Open Trade. Pick a market such as BTC/USDT, choose Buy, Market, an amount, and slide to send.
  3. Open a Smart Trade. Home, Create smart trade: one entry, two take-profits and a stop. Close the app; the server manages the targets.
  4. Start a bot from a preset. Bots, New bot, Presets. Run a backtest first, then start it on the paper account.
Paper is not a promise

Paper fills come from live prices but cannot model every real-market effect, such as queue position, partial fills on thin books or exchange outages. Use it to learn the app and check settings, not to predict results.

03The demo build (no server)

For a public showcase the app can be built as a UI-only demo: --dart-define=KESTREL_DEMO=true. It generates sample markets on the device, shows a permanent "DEMO — sample data" banner, sends nothing to any server or exchange and never shows performance figures (app/README.md, app/lib/data/api/demo_api.dart).

cd app
flutter build web --release --dart-define=KESTREL_DEMO=true