Travel Hacking Toolkit
AI-powered travel hacking with points, miles, and award flights. Drop-in skills and MCP servers for OpenCode, Claude Code, and Codex.
Ask your AI to find you a 60,000-mile business class flight to Tokyo. It'll search award availability across 27 mileage programs, compare against cash prices, check your loyalty balances, and tell you the best play.
Quick Start
Install via plugin (no clone)
The easiest way to use the toolkit. Pick your tool:
Claude Code
Inside Claude Code, run:
/plugin marketplace add borski/travel-hacking-toolkit
/plugin install travel-hacker@borski
Done. 42 skills, 6 MCP servers (5 free + LiteAPI which needs a key), and the travel-hacker subagent are installed. Run claude from anywhere and ask it to plan a trip.
To verify the install, run /travel-hacker:getting-started inside Claude Code. It tells you which API keys are configured and points at the local setup script for the missing ones. Or in your shell: claude plugin list | grep travel-hacker should show the plugin.
Codex
In your terminal:
codex plugin marketplace add borski/travel-hacking-toolkit
Then start Codex and the plugin appears in /plugins. Codex pulls the marketplace catalog from the repo (.agents/plugins/marketplace.json) and the plugin manifest from plugins/travel-hacking-toolkit/.codex-plugin/plugin.json, so the install is one command.
Cowork (Claude Desktop's agent panel)
Cowork itself doesn't expose /plugin slash commands, so you can't install plugins from inside a Cowork chat. Install via Claude Code first; Cowork picks it up automatically because both share ~/.claude/plugins/.
- In your terminal, run
claude
- In Claude Code, run the two install commands from the Claude Code section above
- Open Cowork inside Claude Desktop. The plugin is already there.
Claude Desktop's chat UI doesn't support the plugin format yet, so use Cowork inside the same app for the full experience.
Configure API keys
The 5 free MCP servers (Skiplagged, Kiwi, Trivago, Ferryhopper, Airbnb) work immediately with zero keys. Cash flight and hotel search work out of the box.
To unlock award search and the rest of the toolkit, you need API keys set as environment variables in your shell. Run the local setup script:
macOS / Linux / WSL / Git Bash:
bash <(curl -fsSL https://raw.githubusercontent.com/borski/travel-hacking-toolkit/main/scripts/setup-keys.sh)
Windows (PowerShell):
iwr https://raw.githubusercontent.com/borski/travel-hacking-toolkit/main/scripts/setup-keys.ps1 -OutFile $env:TEMP\setup-keys.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File $env:TEMP\setup-keys.ps1
Remove-Item $env:TEMP\setup-keys.ps1
The script prompts for each key with masked input, validates them (rejects values with single quotes that would break the export, plus a per-key minimum length sanity check), writes them to the right shell rc with a backup, and never echoes the values back. The exports are single-quoted so other shell metacharacters in the key are safe. Keys never enter your terminal scrollback or any chat session. The /travel-hacker:getting-started skill inside Claude Code points at the same script.
The 4 highest-value keys:
| Key | What it unlocks | Cost |
|---|
SEATS_AERO_API_KEY | Award flight search across 27 mileage programs. The main event. | Pro ~$8/mo |
DUFFEL_API_KEY_LIVE | Real GDS cash flight prices. | Free to search, pay per booking |
IGNAV_API_KEY | Backup cash flight prices. Fast REST API. | 1,000 free requests/month |
AWARDWALLET_API_KEY + AWARDWALLET_USER_ID | Auto-pull your loyalty balances, elite status, transfer ratios. | Business account required |
Other keys (SerpAPI, RapidAPI, LiteAPI, TripAdvisor, RESROBOT, Rejseplanen, Entur) extend specific skills. The setup skill covers them too. See the full API key reference for signup links.
Five Docker-based skills (Southwest, American Airlines, Chase, Amex, TicketsAtWork) handle sites that don't have public APIs, plus a shared base image. They auto-pull on first use. See the Docker Images section for credentials and configuration.
Manual setup (if you'd rather not use the skill)
Add to your shell rc (~/.zshrc, ~/.bashrc, etc.):
export SEATS_AERO_API_KEY="your-key-here"
export DUFFEL_API_KEY_LIVE="your-key-here"
export IGNAV_API_KEY="your-key-here"
export AWARDWALLET_API_KEY="your-key-here"
export AWARDWALLET_USER_ID="your-user-id"
Reload (source ~/.zshrc) or open a new terminal, then run claude.
If you keep secrets in 1Password, you can resolve at launch instead:
op run --no-masking --env-file=.env -- claude