Detailed instructions for each mode.
- Select Hardware - Choose your SDR type (RTL-SDR, LimeSDR, or HackRF)
- Select Device - Choose your SDR device from the dropdown
- Set Frequency - Enter a frequency in MHz or use a preset
- Choose Protocols - Select which protocols to decode (POCSAG/FLEX)
- Adjust Settings - Set gain, squelch, and PPM correction as needed
- Start Decoding - Click the green "Start Decoding" button
- Click a preset button to quickly set a frequency
- Add custom presets using the input field and "Add" button
- Right-click a preset to remove it
- Click "Reset to Defaults" to restore default frequencies
- Select Hardware - Choose your SDR type
- Select Device - Choose your SDR device
- Start Decoding - Click "Start Decoding"
- View Sensors - Decoded sensor data appears in real-time
Supports 200+ protocols including weather stations, TPMS, doorbells, and IoT devices.
- Select Interface - Choose a WiFi adapter capable of monitor mode
- Enable Monitor Mode - Click "Enable Monitor" (uncheck "Kill processes" to preserve other connections)
- Start Scanning - Click "Start Scanning" to begin
- View Networks - Networks appear in the output panel with signal strength
- Track Devices - Click the chart icon on any network to track its signal over time
- Capture Handshakes - Click "Capture" on a network to start handshake capture
- Run with
sudofor monitor mode to work - Check your adapter supports monitor mode:
iw list | grep monitor - Use "Kill processes" option if NetworkManager interferes
- Select Interface - Choose your Bluetooth adapter
- Choose Mode - Select scan mode (hcitool, bluetoothctl)
- Start Scanning - Click "Start Scanning"
- View Devices - Devices appear with name, address, and classification
INTERCEPT automatically detects known trackers:
- Apple AirTag
- Tile
- Samsung SmartTag
- Chipolo
- Select Hardware - Choose your SDR type (RTL-SDR uses dump1090, others use readsb)
- Check Tools - Ensure dump1090 or readsb is installed
- Set Location - Choose location source:
- Manual Entry - Type coordinates directly
- Browser GPS - Use browser's built-in geolocation (requires HTTPS)
- USB GPS Dongle - Connect a USB GPS receiver for continuous updates
- Start Tracking - Click "Start Tracking" to begin ADS-B reception
- View Map - Aircraft appear on the interactive Leaflet map
- Click Aircraft - Click markers for detailed information
- Display Options - Toggle callsigns, altitude, trails, range rings, clustering
- Filter Aircraft - Use dropdown to show all, military, civil, or emergency only
- Full Dashboard - Click "Full Screen Dashboard" for dedicated radar view
The system highlights aircraft transmitting emergency squawks:
- 7500 - Hijack
- 7600 - Radio failure
- 7700 - General emergency
The history dashboard persists aircraft messages and per-aircraft snapshots to Postgres for long-running tracking and reporting.
Set the following environment variables (Docker recommended):
| Variable | Default | Description |
|---|---|---|
INTERCEPT_ADSB_HISTORY_ENABLED |
false |
Enables history storage and reporting |
INTERCEPT_ADSB_DB_HOST |
localhost |
Postgres host (use adsb_db in Docker) |
INTERCEPT_ADSB_DB_PORT |
5432 |
Postgres port |
INTERCEPT_ADSB_DB_NAME |
intercept_adsb |
Database name |
INTERCEPT_ADSB_DB_USER |
intercept |
Database user |
INTERCEPT_ADSB_DB_PASSWORD |
intercept |
Database password |
docker-compose.yml includes an adsb_db service and a persistent volume for history storage:
docker compose up -d- Open /adsb/history
- Use Start Tracking to run ADS-B in headless mode
- View aircraft history and timelines
- Stop tracking when desired (session history is recorded)
- Set Location - Choose location source:
- Manual Entry - Type coordinates directly
- Browser GPS - Use browser's built-in geolocation
- USB GPS Dongle - Connect a USB GPS receiver for continuous updates
- Add Satellites - Click "Add Satellite" to enter TLE data or fetch from Celestrak
- Calculate Passes - Click "Calculate Passes" to predict upcoming passes
- View Sky Plot - Polar plot shows satellite positions in real-time
- Ground Track - Map displays satellite orbit path and current position
- Full Dashboard - Click "Full Screen Dashboard" for dedicated satellite view
- Click "Add Satellite"
- Select "Fetch from Celestrak"
- Choose a category (Amateur, Weather, ISS, Starlink, etc.)
- Select satellites to add
Deploy lightweight sensor nodes across multiple locations and aggregate data to a central controller.
- Install INTERCEPT on the remote machine
- Create config file (
intercept_agent.cfg):[agent] name = sensor-node-1 port = 8020 [controller] url = http://192.168.1.100:5050 api_key = your-secret-key push_enabled = true [modes] pager = true sensor = true adsb = true
- Start the agent:
python intercept_agent.py --config intercept_agent.cfg
- Navigate to
/controller/managein the main INTERCEPT instance - Enter agent details:
- Name: Must match config file (e.g.,
sensor-node-1) - Base URL: Agent address (e.g.,
http://192.168.1.50:8020) - API Key: Must match config file
- Name: Must match config file (e.g.,
- Click "Register Agent"
- Use "Test" to verify connectivity
Once registered, agents appear in mode dropdowns:
- Select agent from the dropdown in supported modes
- Start mode - Commands are proxied to the remote agent
- View data - Data streams back to your browser via SSE
Enable "Show All Agents" to aggregate data from all registered agents simultaneously.
For complete documentation, see Distributed Agents Guide.
INTERCEPT can be configured via environment variables:
| Variable | Default | Description |
|---|---|---|
INTERCEPT_HOST |
0.0.0.0 |
Server bind address |
INTERCEPT_PORT |
5050 |
Server port |
INTERCEPT_DEBUG |
false |
Enable debug mode |
INTERCEPT_LOG_LEVEL |
WARNING |
Log level (DEBUG, INFO, WARNING, ERROR) |
INTERCEPT_DEFAULT_GAIN |
40 |
Default RTL-SDR gain |
Example: INTERCEPT_PORT=8080 sudo -E venv/bin/python intercept.py
python3 intercept.py --help
-p, --port PORT Port to run server on (default: 5050)
-H, --host HOST Host to bind to (default: 0.0.0.0)
-d, --debug Enable debug mode
--check-deps Check dependencies and exit