explaingit

nasa/fprime

10,930C++Audience · developerComplexity · 4/5LicenseSetup · moderate

TLDR

NASA's open-source framework for building spacecraft flight software using small, reusable components, battle-tested on real space missions and available for any embedded system.

Mindmap

mindmap
  root((F Prime))
    What it does
      Component framework
      Code generation
      Message queues
    Flight heritage
      CubeSats
      Small satellites
      Scientific instruments
    Tools included
      Ground data system
      Testing framework
      FPP model language
    Tech stack
      C++ runtime
      Python tooling
      CMake build
    Audience
      Embedded developers
      Aerospace engineers
      Research teams
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build flight software for a CubeSat or small satellite using NASA's proven component-based architecture.

USE CASE 2

Create testable embedded systems software where each piece can be developed and verified independently.

USE CASE 3

Monitor and command a running embedded application using F Prime's built-in ground-data system.

USE CASE 4

Use the same framework that flew on real space hardware to build reliable software for any critical embedded system.

Tech stack

C++PythonCMake

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Python 3.10+, a C++ compiler, and CMake, runs on Linux, macOS, or Windows via WSL.

Open source under Apache 2.0, use freely including for commercial embedded systems.

In plain English

F Prime (written as F') is an open-source software framework made by NASA's Jet Propulsion Laboratory for building the code that runs inside spacecraft. It has been used on real missions, including CubeSats, small satellites, and scientific instruments that have actually flown in space. The framework is now publicly available for anyone to use, not just NASA teams. The core idea behind F Prime is that flight software should be broken into small, self-contained building blocks called components. Each component has clearly defined inputs and outputs, which makes it easier to develop, test, and swap out individual pieces without rewriting everything else. The framework provides the underlying machinery that lets these components communicate, including message queues and background threads, so developers can focus on what their software needs to do rather than how to coordinate it. Beyond the runtime pieces, F Prime includes tools for describing components in a model and then automatically generating the boilerplate C++ code from that model. There is also a ground-data system for monitoring and commanding a running application, plus testing tools that work at both the individual component level and the full system level. Setting it up requires a Linux, macOS, or Windows (via WSL) machine with Python 3.10 or newer and a C++ compiler. Installation starts with a single pip command to get the bootstrap tool, and then a second command to create a new project. The project website hosts tutorials, a user manual, and a community discussion forum. Active maintainers from several organizations handle ongoing development and security oversight. The project is tailored toward small-scale spacecraft but the README notes it is not limited to space applications. Any embedded system where reliability and testability matter could use the same component-based approach. With over 10,000 GitHub stars and a track record on actual space hardware, it represents a mature option for teams building software that has to work right the first time.

Copy-paste prompts

Prompt 1
Create a new F Prime project for a CubeSat attitude control system and show me the directory structure and first component.
Prompt 2
Write an F Prime component in C++ that reads temperature sensor data over I2C and publishes it as telemetry.
Prompt 3
How do I write a unit test for an F Prime component using the built-in testing tools without real hardware?
Prompt 4
Generate an FPP model definition file for a motor controller component that accepts speed and direction commands.
Open on GitHub → Explain another repo

← nasa on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.