Choose one runtime and let it own the process
The native desktop app manages the Rust backend for you. Headless mode runs that same backend directly for terminal use or a managed Linux service. Do not launch both against the same local data directory.
Desktop
Native Electron window + managed backend
Headless
Direct Rust process + browser dashboard
Desktop network
Dynamic protected localhost port
Headless default
127.0.0.1:8080
Native desktop operation
Open ScreenerBot from the operating system like any other application. The desktop shell starts the Rust backend with --gui, waits for health checks, then loads the dashboard inside the native window.
- • The backend selects a free high port automatically.
- • Requests carry a per-session security token.
- • The server remains bound to localhost.
- • Use the native window; do not copy its internal URL into another browser.
Headless operation
Run the binary directly when you need terminal logs, a local browser dashboard, or continuous Linux service operation. Headless mode has no Electron window and uses the configured host and port.
screenerbot
# Dashboard: http://127.0.0.1:8080Start the installed build
Use the command that belongs to the installation type. Source-checkout development commands are not required for packaged releases.
Desktop package
Launch ScreenerBot from Applications, Start, or the Linux application menu. The app owns backend startup, restart, and shutdown.
Direct headless binary
screenerbotKeep the terminal attached and stop with Ctrl+C.
VPS manager
sudo screenerbot-manager start
sudo screenerbot-manager statusUnderstand the startup state
The webserver starts before the rest of the system so first-run setup remains reachable.
Setup required
No configuration exists
Only the first-run experience and initialization endpoints are available.
Preview
Wallet and RPC were skipped
Discovery, filtering, events, tokens, and the dashboard run without trading.
Full operation
Wallet and RPC validated
Wallet-dependent services start and the complete dashboard becomes operational.
Headless host and port overrides
Command-line values override configuration. GUI mode ignores these values because it always uses a protected dynamic localhost port.
screenerbot --port 9000
screenerbot --host 127.0.0.1 --port 9000Remote dashboard access
Keep the headless server bound to localhost and reach it through an SSH tunnel. Binding directly to0.0.0.0 exposes the unauthenticated headless dashboard unless you add a secure network boundary.
ssh -L 8080:127.0.0.1:8080 user@serverStop and restart cleanly
Graceful shutdown lets services finish their cleanup and releases the single-instance lock.
Desktop
Quit ScreenerBot from its application controls. Closing or quitting the native app coordinates backend shutdown; avoid force-killing it during normal use.
Terminal
Ctrl+CManaged service
sudo screenerbot-manager stop
sudo screenerbot-manager restart
sudo screenerbot-manager logsWhat healthy startup looks like
- The dashboard opens and service health progresses instead of remaining stuck.
- RPC success and latency begin reporting after full setup.
- Wallet, token, and position data populate according to the selected startup tier.
If another instance is detected
Return to the already-running desktop window or stop the existing headless service. Do not delete locks while a process is active and do not run desktop and headless builds against the same data directory.
Read the running dashboard
Identify startup tier, services, RPC health, and navigation.
Dashboard guideDeploy a managed VPS service
Install, secure, back up, and operate the headless build.
VPS guide