Craft is a self-hosted ground station dashboard. It tracks satellites, planets, stars, comets, deep sky objects, debris, meteor showers, the Moon, and the Sun — all from one interface, all computed for your exact location on Earth.
If you operate a ground station, chase satellite passes, or just want to know what is above you right now, Craft gives you the tools in one place.
Every object type goes through the same observation pipeline, powered by
Skyfield. Satellites use SGP4 propagation
from TLE data. Planets, stars, and deep sky objects use JPL ephemeris files.
One system, consistent results.
Predicts passes
Given your observer location, Craft computes upcoming satellite passes with
AOS (acquisition of signal), TCA (time of closest approach), and LOS (loss
of signal) — including azimuth and elevation at each point.
Controls antenna rotors
Craft speaks the Hamlib rotctld protocol over
TCP. Point your antennas at any object and track it across the sky in real
time. The rotor follows the computed trajectory at 2 Hz.
Searches across everything
Over 22,000 objects are indexed with pgvector embeddings. Search by name,
NORAD catalog number, description, frequency, or plain language. The command
palette (Ctrl+K) puts it all one keystroke away.
Ham radio operators who track amateur satellites, work FM repeaters in orbit, or receive weather satellite imagery. Craft handles pass prediction, Doppler shift calculation, and rotor pointing — the fundamentals of any ground station workflow.
Satellite enthusiasts who want a live view of what is overhead. The 3D globe (CesiumJS) renders orbits client-side at 60 fps using satellite.js, so tracking feels immediate even when the network is slow.
Space weather observers who monitor solar conditions, upcoming launches, reentries, and near-Earth object alerts. Craft pulls from a dozen data sources and consolidates them into a single dashboard.
API — A FastAPI backend that handles all computation. Skyfield does the orbital mechanics. PostgreSQL (TimescaleDB) with pgvector stores objects and embeddings. Background tasks keep TLEs, launch data, and space weather current.
Web — An Astro frontend with a CesiumJS globe, live tracking panels, and a command palette for search. Islands architecture keeps the page fast; only interactive components hydrate.
MCP — A FastMCP server that exposes Craft’s capabilities to Claude and other MCP-compatible tools. Search for objects, predict passes, and point rotors through natural conversation.
Everything runs in Docker Compose. One make dev and you are up.
Most satellite trackers handle satellites alone. Planetarium software handles stars and planets alone. Craft treats them all as the same problem: given an observer on Earth, where is this object in the sky right now? The unified pipeline means you can search for “ISS”, “Jupiter”, “Andromeda”, or “Starlink” and get the same kind of answer — current position, rise/set times, and (for satellites) upcoming passes.
The semantic search layer lets you ask questions the way you think about them. Searching “weather satellites on 137 MHz” finds NOAA APT birds. Searching “geostationary over Americas” narrows to the right longitude range. It matches against names, descriptions, frequencies, and orbital parameters — not just exact text.
And because Craft exposes an MCP server, you can use it from inside Claude. Ask “what satellites are above me right now?” or “when is the next ISS pass?” and get computed answers, not web search results.