Meridian

About

Non-profit software for the part of spaceflight that stays on the ground.

Meridian builds open software for satellite ground stations, and MSP, an open protocol any receiving station can implement. Everything is Apache-2.0. Nothing about taking part requires buying anything from us, because there is nothing to buy.

The problem

A satellite pass lasts between eight and fifteen minutes, and it never repeats. Whatever a ground station fails to receive in that window is permanently lost — there is no retry, no backfill, no second attempt at the same data. That single property makes ground station operations unlike almost any other kind of scheduled work, and most of the tooling around it does not take it seriously.

Meanwhile there are far more receiving stations in the world than there are coordinated networks for them. A great deal of receiving capacity sits idle, and a great deal of what does get received is uncoordinated: two stations recording the same pass while a third goes unheard, because nothing was deciding between them.

What Meridian does

It decides which passes are worth receiving, schedules them across whatever stations are available, monitors the stations doing the work, and reports reliability that was measured rather than assumed. The architecture describes how.

The scheduling is predictive, not just geometric. Elevation is the strongest single predictor of whether a pass will produce a usable result, but it is not the only one — station history, the age of the orbital element set, the local horizon profile a station has learned about itself over time, and interference all matter. A schedule built on geometry alone sends stations to passes they will not be able to use.

The network is the point

The software matters more than any one station. MSP is specified separately from the platform that serves it precisely so that a station does not have to run our code — or anyone's code in particular — to take part. It has to speak the protocol, and the protocol is designed to be implementable on a microcontroller by one person in an afternoon.

Anything else would have made the network an implementation detail of our own software, which is a worse thing to build and a worse thing to ask anyone to join.

What we will not do

  • Stations receive. They never transmit. There are no transmit code paths anywhere in this project, and there will not be. Receiving is unlicensed almost everywhere; transmitting is not, and a network that quietly enabled it would be handing its operators a legal problem they did not ask for.
  • Simulated results are never presented as measured ones. Simulated data is labelled as simulated at every layer — in the database, in the API, on the dashboard, in every report. Simulated and measured figures are never aggregated together.
  • External services are never a runtime dependency. If every external service went offline permanently tomorrow, Meridian would still schedule, receive, decode, monitor and report using its own stations alone. External archives are training input, and that is all they are.

Where things stand

Meridian is pre-launch, and this page will say so until it is not. The protocol is frozen at version 0.1. The platform is in active development. The first station is being built, and until it has run, this site reports no measured results — because there are none yet, and publishing simulator output as though there were is precisely the failure the whole project is organised against.

Progress is visible in the open: the repository is public, and the decision log records what was decided, when, and what was rejected.

Taking part

The most useful thing anyone can do right now is read the protocol and tell us where it is wrong. It is frozen at 0.1, not finished — a specification that has never been implemented by a stranger has not really been reviewed.

Registration to the live network is invite-based while it is small, which is a policy at one endpoint rather than a property of the protocol, and is expected to relax. If you operate a receiving station and want to join, or you have found a problem in a specification, open an issue on GitHub.

Get in touch

Anything technical is better in public, where the next person to have the same question can find the answer: issues for defects and specification problems, discussions for everything else.

For anything that does not belong in public — hello@meridian.org.in. It is read by a person, not a queue, so it may take a few days.

Licence and credit

All code and documentation are released under the Apache 2.0 licence. Type is IBM Plex, under the SIL Open Font Licence. Work informed by reading other projects is recorded in ATTRIBUTION.md with the date, the source and its licence; no source is copied from a copyleft project into this one.