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.
Download v0.1.10
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.
- Go to developer.schwab.com and sign in with your regular Schwab credentials
- Click Dashboard → Create App
- Fill in the form:
- App Name: SwingPilot (or anything)
- Callback URL:
swingpilot://oauth-callback - App Type: Personal
- Submit — Schwab approves within a few minutes to a day. You'll get an email.
- 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.
- Account Balance — enter your current Schwab balance. Used to calculate position sizes (1% risk per trade).
- 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. - 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.
- Ollama AI (optional) — download Ollama, then run
ollama pull qwen2.5:14bin Terminal. Gives you AI-written briefing summaries and trade post-mortems. Runs entirely on your machine. Skip if you don't want it. - Done — click Go to Dashboard.
3️⃣ Key settings to know
| Setting | What it does |
|---|---|
| Auto-Execute | Automatically places buy orders when signals fire. Off by default — turn on when ready. |
| Paper Trading | Tracks signals as hypothetical trades without placing real orders. Good for testing first. |
| Risk per Trade | Default 1% of balance per trade. Lower it to be more conservative. |
| Scan Times | Morning 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.
- Install Tailscale on your computer and log in. Note your device's Tailscale hostname (e.g.
your-computer.taila23c3d.ts.net). - Install Tailscale on your phone (iOS App Store or Google Play) and log in with the same account.
- On your phone, open a browser and go to
http://your-computer-hostname:5174— replace the hostname with your computer's Tailscale address. - 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.
- 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
Option 1 — Right-click to open (easiest):
- Drag
SwingPilot.appfrom the DMG to/Applications - In Finder, right-click (or Control-click) the app → Open
- Click Open in the dialog — you'll only need to do this once
Option 2 — System Settings:
- Try to launch normally → see the warning → click Cancel
- Open System Settings → Privacy & Security
- Scroll down → click Open Anyway next to SwingPilot
Option 3 — Terminal (if "damaged" persists):
xattr -d com.apple.quarantine /Applications/SwingPilot.app
🪟 Windows
- Click More info
- 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
| What | macOS | Windows | Linux |
|---|---|---|---|
| Trade DB & settings | ~/Library/Application Support/SwingPilot/data/ |
%APPDATA%\SwingPilot\data\ |
~/.config/SwingPilot/data/ |
| Schwab token | macOS Keychain | Credential Manager | GNOME Keyring / KWallet |