tpredict

A TUI Satellite Tracker

TPredict

TPredict is a terminal-based satellite tracking application for amateur radio and space enthusiasts. It provides a live world map, real-time satellite positions, and pass information for the satellites you care about, all inside a modern TUI.

This tool is designed for operators who want a lightweight, fast, terminal-first satellite tracker that automatically pulls the latest amateur TLEs and displays footprint, range, headings, and pass data at a glance.


Screenshot

Screenshot


Features

Live Map View

  • Real-time satellite plotting
  • Zoomable ASCII world map
  • Station location and grid square overlay
  • Toggleable satellite footprints and path trails (via config)
  • Smooth terminal UI powered by Bubble Tea + Lipgloss

Satellite Tracking

  • Automatic download and caching of amateur TLE elements
  • Filter satellites by name in config
  • Click-select (via keyboard navigation) satellites to follow
  • Real-time updates every 5 seconds

Pass & Telemetry Info

  • Azimuth and elevation for the selected satellite
  • Slant range
  • Live pass data display bar
  • Instant feedback when changing target satellite

Config-Driven Behavior

Users configure:

  • Your grid square
  • Default zoom level
  • Which satellites to show
  • Whether to plot footprints and orbit paths

No flags, no manual TLE files unless you want to. Application takes care of TLE download + caching.

Log Output

All debug logs are automatically written to tpredict.log.


How It Works

When launched, TPredict:

  1. Loads config.toml

  2. Fetches amateur satellite TLEs (or loads cached copy)

  3. Filters the satellite set to those defined in config

  4. Renders:

    • Left: Satellite list
    • Right: World map + satellite positions
    • Bottom middle: Live pass info
    • Footer: Zoom status

Satellite positions refresh every 5 seconds.


Configuration

Place a config.toml file in the working directory. Example:

[station]
gridsquare = "FN20"

[map]
defaultzoom = 1.2

[satellites]
track = ["ISS (ZARYA)", "AO-91", "AO-92", "FOX-1E"]
footprint = true
path = true

TLE Handling

  • Downloads from Celestrak Amateur group
  • Caches locally for 24 hours
  • Falls back to stale cache if offline

No manual updates required for normal operation.