Quickstart
The fastest way to bring up minmcs is with Docker. See the overview for how the
pieces fit together, and Configuration for the full list of environment
variables.
1. Prerequisites
Minimum configuration setup:
- Copy
.env.exampleto.env. - Set the location for your mission’s XTCE database. The Docker build copies this file in, and the API needs it to build the spacecraft model.
2. Run with Docker
$ docker compose up --buildThis starts Postgres, InfluxDB, the API (:9300), and the UI (:8080), using your .env
plus the defaults in docker-compose.yaml. The one setting you’re likely to need to change is
the ground-link address (MINMCS_TM_SOURCE_HOST/_PORT) — only if you’re not running
bin/egse_link.py on the host. Then open the dashboard at http://localhost:8080.
3. Run locally, without Docker
For backend work on minmcs-lib/ (uv-managed, Python ≥ 3.12):
$ uv sync
$ uv run uvicorn minmcs.api:app --host 0.0.0.0 --port 9300The API alone won’t have anything to decode until something feeds it TM. To exercise the full TM/TC chain without spacecraft hardware, also run the local EGSE stub and the ground-link bridge alongside it — see Ground link bridge:
$ uv run python bin/egse_link.py # local EGSE stub: synthetic TM out, TC in
$ uv run python bin/data_proxy.py # bridge: link <-> APIFor the UI (minmcs-ui/, npm):
$ npm install
$ npm run devBy default the UI points at http://localhost:9300. See
Pointing the UI at a different API host
to change that.
4. Where to next
- The spacecraft model — the domain types, and how they’re derived from XTCE.
- Telemetry ingest — packet → parameters, and the two persistence stores.
- Telecommand uplink — building, scheduling, and verifying commands.
- The operator UI — the Vue dashboard.