What the Dashboard does for you
The Dashboard is your single, authenticated control surface. You don’t SSH into the server. You don’t edit JSON files by hand. You don’t query the database withpsql. You open the Dashboard in your browser, log in, and everything you need to operate your bots is one click away.
You see live trades as they fill. You toggle the kill switch. You enable or disable modes. You add or remove trade pairs. You review fulfilled orders. You pull tax reports. You stream live logs from the TradingBot. You configure UI preferences. All in one place, behind your password, on TLS.
For most operators, the Dashboard is the surface they spend the most time with. The TradingBot runs by itself; you check on it via the Dashboard.
Live trades panel
Mode and trade-pair controls
Bot status and kill switch
Fulfilled orders ledger
Tax report exports
Live log streaming
Multi-symbol analytics
System health surface
Onboarding tutorial
Two roles — admin and viewer
Two roles — admin and viewer
Admin — full control
Admin — full control
Viewer — read-only witness
Viewer — read-only witness
What you can do from the Dashboard
Toggle the kill switch
Toggle the kill switch
Manage trade pairs
Manage trade pairs
Edit modes
Edit modes
BTCUSDT, ETHUSDT, and SOLUSDT are all on Mode 4, an edit to Mode 4 changes all three. To customize per-pair, assign each pair to a different mode and edit that one independently.Review fulfilled orders
Review fulfilled orders
Generate tax reports
Generate tax reports
- Buy and sell timestamps
- Buy and sell prices in USD
- EUR equivalents at the exact exchange rate on the relevant date (sourced from the European Central Bank via the Frankfurter API)
- Realized P&L in both USD and EUR
- The symbol and the mode that ran the trade
Stream live logs
Stream live logs
Configure UI preferences
Configure UI preferences
Run the onboarding tutorial
Run the onboarding tutorial
Inspect connection state
Inspect connection state
Inspect mode-specific analytics
Inspect mode-specific analytics
BTCUSDT outperforming or underperforming my expectation?” “Are my newer pairs pulling their weight?”Operator routines built around the Dashboard
The Dashboard supports several rhythms — daily, weekly, monthly, yearly. Here’s how operators typically structure their interaction.Daily — 5-minute health check
Daily — 5-minute health check
- Open the main panel. Confirm the kill switch is in the expected state.
- Glance at the Live Trades panel — anything unusual? Any positions held abnormally long?
- Glance at the connection-state indicators — all green?
- Skim the day’s closed trades — totals match Telegram? Any anomalies?
Weekly — 30-minute structured review
Weekly — 30-minute structured review
- Pull the week’s analytics. Compare against last week and against your monthly running average.
- Identify your worst trade of the week. Open the order detail. Was the mode behaving as designed, or was there an anomaly?
- Identify your best trade. Was it the mode hitting expected rungs, or an unusually large move?
- Check the Logs panel for any recurring warnings or errors.
- Confirm all expected pairs have traded — a pair that hasn’t closed a round-trip in a week is a flag worth investigating.
- Decide: any operator action this week? New pair to add? Mode parameter to tune? Pair to retire?
Monthly — tax export + capital review
Monthly — tax export + capital review
- Pull the Tax Report for the month. Archive to your designated folder.
- Cross-check the month’s total against the Telegram running total at month-end.
- Review capital allocation. Is each mode’s allocated capital still appropriate? Should you scale up or down?
- Review reserve. Is the
~50%of trading capital still intact? If not, what eroded it? - Plan: any structural change for next month? New venue? New mode trial?
Yearly — full audit + accountant handoff
Yearly — full audit + accountant handoff
- Pull the full-year Tax Report.
- Verify against the sum of monthly archives.
- Verify against the Telegram running total at year-end.
- All three should agree. Investigate any discrepancy.
- Send the report to your accountant.
- Conduct a strategic review: is the bot doing what you intended? Should the next year’s setup look different?
Crisis — kill switch and recovery
Crisis — kill switch and recovery
- Step 1: kill switch ON. Use the Dashboard’s main panel button. Within seconds, no new buy orders.
- Step 2: open the Logs panel. Watch for recent errors or unusual messages.
- Step 3: open the Live Trades panel. Inspect open positions. Are any in surprising states?
- Step 4: if necessary, manually close positions on the exchange itself.
- Step 5: when the situation is clear, decide: kill switch back ON or stay paused?
- Step 6: log the incident in your operator notes. Include what triggered the response, what you did, what you’d do differently.
What the Dashboard does NOT do
The single internet-exposed surface (besides webhooks)
The data the Dashboard sees
The Dashboard reads and writes the same local PostgreSQL database the TradingBot uses. There is no separate Dashboard database, no proxy layer, no eventually-consistent cache — what the Dashboard shows is what the TradingBot is acting on.| Surface | Reads from | Writes to |
|---|---|---|
| Live trades panel | Trade tables (live), TradingBot logs (streamed) | — |
| Modes panel | Mode-config table | Same — operator edits land here |
| Trade pairs panel | Active-pair config | Same — operator edits land here |
| Bot status / kill switch | Bot-status table | Same — flag toggles land here |
| Fulfilled orders ledger | Closed-trade table | — (read-only) |
| Tax report | Closed-trade table + Frankfurter API | Generates a CSV/JSON for download (no DB write) |
| UI settings | UI-settings table | Same — preferences land here |
Securing the Dashboard
Reverse proxy + TLS — non-negotiable
Reverse proxy + TLS — non-negotiable
Strong admin password
Strong admin password
20+ characters) and random. Use a password manager.Common pattern: generate with openssl rand -base64 24. Save in a password manager. Never commit to a Git repo, never share via plaintext channel.IP allow-listing at the proxy
IP allow-listing at the proxy
2FA via reverse proxy
2FA via reverse proxy
- Authelia: open-source self-hosted 2FA proxy. Strong choice for security-conscious operators.
- Cloudflare Access: managed 2FA proxy with email/2FA prompts. Simple if you already use Cloudflare.
- Tailscale: not 2FA per se, but mesh-VPN that means only your devices can reach the Dashboard. Powerful for some setups.
Viewer-role for partners
Viewer-role for partners
Operational footprint
Resource cost
~75 KB of source). Frontend is a single-page web app served as static assets. Total: a few hundred MB of RAM, sub-percent CPU at idle.Network calls
Failure mode
Startup time
Concurrent sessions
Update cadence
Common questions
Can I run the Dashboard on a different VPS than the TradingBot?
Can I run the Dashboard on a different VPS than the TradingBot?
What about two-factor authentication?
What about two-factor authentication?
7-day TTL). If you want a stronger second factor, the right pattern is to put the Dashboard behind a reverse proxy that handles 2FA itself (Authelia, Cloudflare Access, Tailscale, etc.).Adding 2FA at the application layer is on the longer-term roadmap; for now the proxy-layer approach is widely supported and gives you choice over which 2FA provider to use.How do I add a viewer for my partner?
How do I add a viewer for my partner?
Can multiple operators log in simultaneously?
Can multiple operators log in simultaneously?
Why is the live-log panel useful?
Why is the live-log panel useful?
What does the tax report actually contain?
What does the tax report actually contain?
- Buy and sell timestamps (in your timezone)
- Buy and sell prices in USD (8-decimal precision)
- EUR equivalents at the exchange rate from the European Central Bank (Frankfurter API) on the relevant date
- Realized P&L in both USD and EUR
- Symbol and mode
Can I restyle the Dashboard?
Can I restyle the Dashboard?
Do I need the Dashboard if I just want to run a pre-built mode?
Do I need the Dashboard if I just want to run a pre-built mode?
Can I use the Dashboard on mobile?
Can I use the Dashboard on mobile?
What if the Dashboard goes down mid-session?
What if the Dashboard goes down mid-session?
502 until the container is back. Wait, refresh, log back in, resume.For actual recovery scenarios, the Dashboard’s data is fully recoverable from the database — there’s no Dashboard-specific state to back up beyond what’s already in your database backups.Can I expose the Dashboard publicly with just a password?
Can I expose the Dashboard publicly with just a password?
- Strong password (
20+chars, random) - IP allow-list at the reverse proxy (if you have stable IPs)
- 2FA at the proxy layer (Authelia, Cloudflare Access)
What logs does the Dashboard keep?
What logs does the Dashboard keep?