LogTower Documentation

Everything you need to start monitoring your bots and automated processes in under 5 minutes.

Quick start

Get from zero to a live dashboard in 3 steps:

1

Create a free account

Go to logtower.dev/signup and enter your email. You'll get an API key instantly.

2

Download your reporter

In your dashboard, click the Alerts tab and hit Download reporter.py. Your API key is already configured inside.

3

Run it on your server

Upload reporter.py to the server where your bots run:

scp reporter.py user@YOUR_SERVER_IP:/path/to/reporter.py

Then SSH in and run:

pip install requests
python3 reporter.py

Your dashboard will populate within 60 seconds.

How it works

LogTower uses a lightweight reporter script that runs alongside your bots. It reads your existing log files — no changes to your bot code required.

Your bots → log files → reporter.py → logtower.dev → your dashboard

The reporter runs every 60 seconds, reads the last 500 lines of each log file, extracts trades and status data, and sends a structured payload to LogTower. Your dashboard updates automatically.

No code changes needed — if your bot writes to a log file If your bot uses print() instead of a log file, redirect output when running it: python3 bot.py > bot.log 2>&1 & — then point LogTower at bot.log.

Requirements

Configure your bots

Open reporter.py and edit the BOT_CONFIGS section:

BOT_CONFIGS = [
    {
        "id": "grid_bot",          # Unique ID for this bot
        "name": "Grid Bot",        # Display name in dashboard
        "strategy": "Grid Trading", # Strategy description
        "log_path": "/path/to/grid_bot.log",  # Full path to log file
        "type": "generic",         # Log format type
    },
    {
        "id": "arb_bot",
        "name": "Arbitrage Bot",
        "strategy": "Cross-exchange arb",
        "log_path": "/home/ubuntu/bots/arb.log",
        "type": "generic",
    },
]
FieldRequiredDescription
idYesUnique identifier — no spaces, used internally
nameYesDisplay name shown in your dashboard
strategyYesStrategy description shown under the bot name
log_pathYesAbsolute path to the log file on your server
typeNoLog format — use "generic" for standard formats

Keep it running after you close SSH

nohup python3 reporter.py > reporter.log 2>&1 &

Auto-start on server reboot

Add to your crontab (crontab -e) — always use full absolute paths:

@reboot nohup python3 /home/ubuntu/reporter.py > /home/ubuntu/reporter.log 2>&1 &
Use absolute paths in crontab Relative paths like ./reporter.py won't work in crontab. Always use the full path starting from /.

Supported log formats

LogTower's generic parser automatically detects these patterns:

Trade executions

19:18:08   [XBTUSD] buy 0.000226 @ $70217.95 | ID: OMOKVD-H75QF-F7TMBJ
19:18:08   [ETHUSD] sell 0.5 @ $2100.00 | ID: ABC123-DEF456-GHI789

Status heartbeats

19:18:10 [BTC] Price: $71316.8 | Orders: 20 | Daily: $12.50 | All-time: $342.10

Stop loss events

03:49:50 [BTC] STOP LOSS HIT @ $65612.1

Custom log formats

Need help? We'll do it for you. Email support@logtower.dev with a few lines from your log file and we'll write the parser and send you an updated reporter.py within 24 hours — free for all plans.

If you want to do it yourself: add a custom regex pattern to the parse_generic_log function in reporter.py. The parser looks for these fields: timestamp, asset, side (buy/sell), size, price, and order ID.

Alerts

Configure alerts in the ⚙ Alerts tab of your dashboard. All alerts are sent from alerts@logtower.dev.

Available alert types

AlertTrigger
Bot stoppedAny bot's status changes to STOPPED or ERROR
Stop loss hit"STOP LOSS HIT" appears in any bot log
Daily P&L thresholdCombined daily P&L drops below your set value
Stale botA running bot's log hasn't updated in X minutes
Exchange errorsA bot accumulates 3+ consecutive exchange errors

Alert deduplication

LogTower limits alerts to 2 per incident — an initial alert and one reminder. After that, you won't hear about the same issue again until the bot recovers. When it does, you'll get a recovery notification.

API reference

All API endpoints use https://logtower.dev as the base URL. Authenticate with your API key via the X-API-Key header or ?key= query parameter.

POST /api/update

Send bot data from the reporter. Called automatically by reporter.py every 60 seconds.

GET /api/status

Retrieve the latest bot data for your dashboard.

curl "https://logtower.dev/api/status?key=YOUR_API_KEY"

GET /api/settings

Retrieve your alert settings.

POST /api/settings

Update your alert settings.

GET /api/reporter

Download your pre-configured reporter.py.

curl "https://logtower.dev/api/reporter?key=YOUR_API_KEY" -o reporter.py

Plans & billing

FeatureFreePro ($29/mo)
Bots monitoredUp to 3Unlimited
Dashboard
P&L tracking
Trade history
Email alerts
SMS alerts
Update interval60 seconds30 seconds
History retention30 days90 days
SupportEmailPriority email

FAQ

Does LogTower work with any programming language?

Yes — as long as your bot writes to a log file, LogTower can monitor it. The reporter reads log files directly, so the language your bot is written in doesn't matter.

Does LogTower work with any exchange?

Yes. LogTower reads your log files, not your exchange API. It works with Kraken, Binance, Bybit, Alpaca, Interactive Brokers, or any other exchange your bot is connected to.

Is my trading data secure?

Yes. Each user's data is isolated by API key. LogTower only reads what your reporter sends — trade times, sizes, prices, and P&L. No API keys or exchange credentials are ever shared with LogTower.

What happens if my server restarts?

Add the reporter to your crontab with @reboot and it will restart automatically. See the Configure section above.

Can I monitor bots on multiple servers?

Yes. Run a reporter.py on each server and point them all at the same API key. All bots will appear in one dashboard.

How do I cancel?

Email support@logtower.dev and we'll cancel immediately. No questions asked.