v0.1.10

Swing trading,
on autopilot

Scans the market daily, evaluates setups against a backtest-validated gate system, manages trailing stops via Schwab, and delivers a daily briefing of actionable signals.

Setup guide

After installing, the app walks you through a setup wizard. Here's what you'll need and what to expect.

1️⃣ Register with Schwab's developer portal

SwingPilot connects to your Schwab account via their official API. You need to register it once as a personal app.

  1. Go to developer.schwab.com and sign in with your regular Schwab credentials
  2. Click Dashboard → Create App
  3. Fill in the form:
    • App Name: SwingPilot (or anything)
    • Callback URL: swingpilot://oauth-callback
    • App Type: Personal
  4. Submit — Schwab approves within a few minutes to a day. You'll get an email.
  5. Once approved, copy your App Key (Client ID) and App Secret (Client Secret)
2️⃣ Run the setup wizard

The first time you launch SwingPilot, a setup wizard starts automatically.

  1. Account Balance — enter your current Schwab balance. Used to calculate position sizes (1% risk per trade).
  2. Schwab Credentials — paste your App Key and App Secret from the developer portal. Callback URL is pre-filled as swingpilot://oauth-callback — leave it as-is.
  3. Connect Schwab — click Connect. Your browser opens to Schwab's login page. Log in, select accounts, click Allow. The browser redirects and SwingPilot detects the connection automatically.
  4. Ollama AI (optional) — download Ollama, then run ollama pull qwen2.5:14b in Terminal. Gives you AI-written briefing summaries and trade post-mortems. Runs entirely on your machine. Skip if you don't want it.
  5. Done — click Go to Dashboard.
3️⃣ Key settings to know
SettingWhat it does
Auto-ExecuteAutomatically places buy orders when signals fire. Off by default — turn on when ready.
Paper TradingTracks signals as hypothetical trades without placing real orders. Good for testing first.
Risk per TradeDefault 1% of balance per trade. Lower it to be more conservative.
Scan TimesMorning scan at 10:00 AM ET, mid-day at 12:30 PM ET. App must be running (tray icon is fine).
📱 Access SwingPilot on your phone

SwingPilot runs on your computer, but you can open the full web UI on your phone from anywhere using Tailscale — a free, private VPN that connects your devices without opening any ports.

  1. Install Tailscale on your computer and log in. Note your device's Tailscale hostname (e.g. your-computer.taila23c3d.ts.net).
  2. Install Tailscale on your phone (iOS App Store or Google Play) and log in with the same account.
  3. On your phone, open a browser and go to http://your-computer-hostname:5174 — replace the hostname with your computer's Tailscale address.
  4. Add it to your home screen as a PWA: on iOS tap Share → Add to Home Screen; on Android tap the browser menu → Add to Home Screen.
  5. To enable push notifications: open Settings in the app → scroll to Push Notifications → tap Enable.

Your computer must be on and running SwingPilot. The app starts automatically at login if you enable that option from the tray icon menu.

Common questions

Do I need to leave my computer on?
Yes — SwingPilot runs on your machine. Right-click the tray icon and enable Start at Login so it's always running in the background.

Is my Schwab password stored in the app?
No. SwingPilot never sees your password. Only a secure token (stored in your OS keychain) comes back after the OAuth flow.

Schwab says "Not connected" after I already connected.
Tokens expire after ~7 days of inactivity. Close and reopen the app — it refreshes automatically on launch. If it persists, reconnect from Settings.

How do I start over?
Go to Settings → Admin Panel → Reset to First Run, then relaunch.

First-launch instructions

SwingPilot ships unsigned. Every OS warns about unsigned apps the first time — here's how to get past each one.

🍎 macOS
You may see "cannot be opened because the developer cannot be verified" or "is damaged and can't be opened." The app is fine — macOS quarantines unsigned downloads.

Option 1 — Right-click to open (easiest):

  1. Drag SwingPilot.app from the DMG to /Applications
  2. In Finder, right-click (or Control-click) the app → Open
  3. Click Open in the dialog — you'll only need to do this once

Option 2 — System Settings:

  1. Try to launch normally → see the warning → click Cancel
  2. Open System Settings → Privacy & Security
  3. Scroll down → click Open Anyway next to SwingPilot

Option 3 — Terminal (if "damaged" persists):

xattr -d com.apple.quarantine /Applications/SwingPilot.app
🪟 Windows
Windows SmartScreen will show "Windows protected your PC."
  1. Click More info
  2. Click Run anyway

If your browser or Defender deletes the installer, open Windows Security → Virus & threat protection → Manage settings and add the download folder to Exclusions, then re-download.

After the first install, updates apply silently via the built-in auto-updater.

🐧 Linux

Make the AppImage executable and run it:

chmod +x SwingPilot-*.AppImage
./SwingPilot-*.AppImage

For desktop menu integration, install AppImageLauncher and double-click the AppImage.

Where your data lives

WhatmacOSWindowsLinux
Trade DB & settings ~/Library/Application Support/SwingPilot/data/ %APPDATA%\SwingPilot\data\ ~/.config/SwingPilot/data/
Schwab token macOS Keychain Credential Manager GNOME Keyring / KWallet