NASA Logo, National Aeronautics and Space Administration

Open Source Projects




+ View ADOPT


Astrobee is a free-flying robot that is designed to operate as a payload inside the International Space Station (ISS). The Astrobee Robot Software consists of embedded (on-board) software, supporting tools and a simulator. The Astrobee Robot Software operates on Astrobee's three internal single board computers and uses the open-source Robot Operating System (ROS) framework as message-passing middleware. The Astrobee Robot Software performs vision-based localization, provides autonomous navigation, docking and perching, manages various sensors and actuators, and supports user interaction via screen-based displays, light signaling, and sound. The Astrobee Robot Software enables Astrobee to be operated in multiple modes: plan-based task execution (command sequencing), teleoperation, or autonomously through execution of hosted code uploaded by project partners (guest science). The software simulator enables Astrobee Robot Software to be evaluated without the need for robot hardware.
+ View Astrobee at GitHub


BigView allows for interactive panning and zooming of images of arbitrary size on desktop PCs running linux. Additionally, it can work in a multi-screen environment where multiple PCs cooperate to view a single large image. Using this software, one can ...
+ View BigView

Block-GP: Scalable Gaussian Process Regression

Block GP is a Gaussian Process regression framework for multimodal data, that can be an order of magnitude more scalable than existing state-of-the-art nonlinear regression algorithms. The framework builds local Gaussian Processes on semantically meaningful partitions of the data and provides higher prediction accuracy than a single global model with very high confidence.
+ View Block GP

CFD Utilities

The CFD Utility Software Library consists of nearly 30 libraries of Fortran 90 and 77 subroutines and almost 100 applications built on those libraries. Many of the utilities apply to multiblock structured grids and flow solutions, but numerous other reusable modules in such categories as interpolation, optimization, quadrature, rapid searching, and character manipulation appear from several decades of software development in the Aerodynamics Division and Space Technology Division at NASA Ames Research Center.
+ View CFD Utilities


CODE is a software framework for control and observation in distributed environments. The basic functionality of the framework allows a user to observe a distributed set of resources, services, and applications. A user can also use the framework to manage ...
+ View CODE

Crisis Mapping Toolkit

The Crisis Mapping Toolkit (CMT) is a collection of tools for processing geospatial data (images, satellite data, etc.) into cartographic products that improve understanding of large-scale crises, such as natural disasters. The cartographic products produced by CMT include flood inundation maps, maps of damaged or destroyed structures, forest fire maps, population density estimates, etc. CMT is designed to rapidly process large-scale data using Google Earth Engine and other geospatial data systems.
+ View Crisis Mapping Toolkit

Desktop Exploration of Remote Terrain (DERT)

Desktop Exploration of Remote Terrain (DERT) is a software tool for exploring large Digital Terrain Models (DTMs) in 3D. It aids in understanding topography and spatial relationships of terrain features, as well as performing simple analysis tasks relevant to the planetary science community.
+ View DERT

E-Standards for Mass Properties Engineering

The purpose of this Opensource forum is to promote the development of a JAVA based Application Programming Interface for the field of Mass Properties Engineering. This project started as a NASA LaRC Innovation Institute project in 2007 to promote the ...
+ View E-Standards for Mass Properties Engineering

FRET: Formal Requirements Elicitation Tool

FRET is a framework for the elicitation, formalization and understanding of requirements. Users enter system requirements in a specialized natural language. FRET helps understanding and review of semantics by utilizing a variety of forms for each requirement: natural language description, formal mathematical logics, and diagrams. Requirements can be defined in a hierarchical fashion and can be exported in a variety of forms to be used by analysis tools.
+ View FRET


The concept of ECHO has been many years in the making. The initial charter and Plan development began in June of 1998 and was called the Independent Information Management System (IIMS). The goal was to provide a tool that would ...
+ View ECHO

Geometry Manipulation Protocol (GMP)

The Geometry Manipulation Protocol (GMP) is a library which serializes datatypes between XML and ANSI C data structures to support CFD applications. This library currently provides a description of geometric configurations, general moving-body scenarios (prescribed and/or 6-DOF), and control surface ...
+ View Geometry Manipulation Protocol (GMP)


Growler is a C++-based distributed object and event architecture. It is written in C++, and supports serialization of C++ objects as part of its Remote Method Invocation, Event Channels, and in its Interface Definition Language. Its primary application has been ...
+ View Growler

Generic Software Architecture for Prognostics (GSAP)

The Generic Software Architecture for Prognostics (GSAP) is a generic, extendable, flexible, modular C++ framework for applying prognostics technologies. GSAP manages top-level control, communications, logging, configuration, integration, and other general activities. A simple, standard interface is provided for integrating prognostics algorithms and models, minimizing the work required to deploy prognostics technologies. The standard interface allows for prognosers developed for GSAP to be reused anywhere GSAP is used.
+ View GSAP at GitHub

IND: Creation and Manipulation of Decision Trees from Data

IND is applicable to most data sets consisting of independent instances, each described by a fixed length vector of attribute values. An attribute value may be a number, one of a set of attribute specific symbols, or omitted. One of ...
+ View IND: Creation and Manipulation of Decision Trees from Data

IPG Execution Service

The Execution Service allows users to submit, monitor, and cancel complex jobs. Each job consists of a set of tasks that perform actions such as executing applications and managing data. Each task is executed based on a starting condition that ...
+ View IPG Execution Service


JavaGenes is a fairly general purpose evolutionary software system written in Java. It implements several versions of the genetic algorithm, simulated annealing, stochastic hill climbing and other search techniques.
+ View JavaGenes

Kalman Filter Code Augmentation

The Kalman Filter Code Augmentation release is a modification of Kalman Filter Toolbox, written by Kevin Murphy, 1998. It extends the existing open source software's capabilities and functionality by bookkeeping more detailed information on internal data structure.
+ View Kalman Filter Code Augmentation


Libibvpp is a C++ wrapper around libibverbs, which is part of the OpenFabrics software suite ( For the most part, Libibvpp provides a minimalistic C++ wrapper interface to libibverbs, while providing complete resource management through the use of C++ TR1 ...
+ View Libibvpp


Livingstone2 is a reusable artificial intelligence (AI) software system designed to assist spacecraft, life support systems, chemical plants or other complex systems in operating robustly with minimal human supervision, even in the face of hardware failures or unexpected events. Livingstone2 ...
+ View Livingstone2


Mariana is an algorithm that efficiently optimizes the hyperparameters for Support Vector Machines for regression and classification. It currently uses Simulated Annealing for optimization but can be extended to use a variety of stochastic optimization techniques including, Markov Chain Monte ...
+ View Mariana


Mesh is a secure, lightweight grid middleware that is based on the addition of a single sign-on capability to the built-in public key authentication mechanism of SSH using system call interposition. Each Mesh installation is dedicated to serving a particular ...
+ View Mesh

Mission Simulation ToolKit

The Mission Simulation Toolkit (MST) is a flexible software system for autonomy research. The MST was developed as part of the Mission Simulation Facility (MSF) project, which was started in 2001 to facilitate the development of autonomous planetary robotic missions. ...
+ View Mission Simulation ToolKit

The Multiple Kernel Anomaly Detection - MKAD

The Multiple Kernel Anomaly Detection (MKAD) algorithm is designed for anomaly detection over a set of files. It combines multiple kernels into a single optimization function using the One Class Support Vector Machine (OCSVM) framework.
+ View MKAD


Multi-Fidelity Simulator, MFSim is a pluggable framework for creating an air traffic flow simulator at multiple levels of fidelity. The framework is designed to allow low-fidelity simulations of the entire US Airspace to be completed very quickly (on the order of seconds). The framework allows higher-fidelity plugins to be added to allow higher-fidelity simulations to occur in certain regions of the airspace concurrently with the low-fidelity simulation of the full airspace.
+ View MFSim


Mutil is a set of standard utilities that employ multiple types of parallelism and other optimizations to achieve maximum performance on modern file systems. Multi-threading is used to ensure that nodes are kept as busy as possible. Double buffering allows individual operations within a single task to be overlapped using asynchronous I/O. Multi-node cooperation allows different nodes to take part in the same task. Split file processing allows multiple threads to operate concurrently on the same file. Finally, additional optimizations such as buffer management help eliminate other bottlenecks that can reduce performance. Mutil currently includes drop-in replacements for cp and md5sum from GNU coreutils, which have achieved 10/30x rates on one/many nodes.
+ View Multi


NodeMon is a resource utilization monitor tailored to the Altix architecture, but is applicable to any Linux system or cluster. It allows distributed resource monitoring via the Growler software infrastructure. It is modular, with existing modules for monitoring of cpu, ...
+ View NodeMon

Optimal Alarm System Design and Implementation

An optimal alarm system can robustly predict a level-crossing event that is specified over a fixed prediction horizon. The code contained in this packages provides the tools necessary to design an optimal alarm system for a simple stationary linear dynamic system driven by white Gaussian noise.
+ View Optimal Alarm System


Pathdroid is a framework to analyze binary Android applications for program defects and malicious behaviors.

+ View Pathdroid


Pour is a framework for Periodic, On-Demand, and User-Specified Information Reconciliation that accepts periodic information updates, collects information on-demand as needed, and accepts user-specified information while presenting a single unified view to the user. The primary functionality of Pour is ...
+ View Pour

Prognostics Model Library

The Prognostics Model Library is a modeling framework focused on defining and building models for prognostics (computation of remaining useful life) of engineering systems, and provides a set of prognostics models for select components developed within this framework, suitable for use in prognostics applications for these components. The library currently includes models for valves, pumps, and batteries. The Prognostics Model Library is implemented in MATLAB. The implementation consists of a set of utilities for defining a model (specifying variables, parameters, and equations), simulating the model, and embedding it within common model-based prognostics algorithms. A user can use existing models within the library or construct new models with the provided framework.
+ View Prognostics Model Library

Prognostics Algorithm Library

The Prognostics Algorithm Library is a suite of algorithms implemented in the MATLAB programming language for model-based prognostics (remaining life computation). It includes algorithms for state estimation and prediction, including uncertainty propagation. The algorithms take as inputs component models developed in Matlab, and perform estimation and prediction functions. The library allows the rapid development of prognostics solutions for given models of components and systems. Different algorithms can be easily swapped to do comparative studies and evaluations of different algorithms to select the best for the application at hand.
+ View Prognostics Algorithm Library


QuIP (QUick Image Processing) is an interpreter for image processing, graphics, psychophysical experimentation and general scientific computing.
+ View QUIP


The ROBUS-2 Protocol Processor (RPP) is a custom-designed hardware component implementing the functionality of the ROBUS-2 fault-tolerant communication system. The Reliable Optical Bus (ROBUS) is the core communication system of the Scalable Processor-Independent Design for Enhanced Reliability (SPIDER), a general-purpose ...
+ View ROBUS-2


ROC (Receiver Operating Characteristic) curve Code Augmentation
+ View ROC


Save is a lightweight framework for creating high availability systems. Save manages IP addresses shared between multiple servers with the same function and monitors the health of those servers to determine which should be actively servicing requests at any given time. Save has additional features to facilitate the administration of high availability systems. Synchronization mechanisms allow configuration files to be kept consistent between systems as well as allowing commands to be executed across all servers of a particular type. Archival mechanisms provide automatic version control of configuration files to aid in recovery in case of errant configuration. Validation mechanisms allow configuration files to be automatically checked for correctness before they are installed on all peer servers.
+ View Save


sequenceMiner was developed to address the problem of detecting and describing anomalies in large sets of high-dimensional symbol sequences. sequenceMiner works by performing unsupervised clustering (grouping) of sequences using the normalized longest common subsequence (LCS) as a similarity measure, followed ...
+ View sequenceMiner


Shift is a lightweight framework for high performance local and remote file transfers that provides resiliency across a wide variety of failure scenarios through various techniques. These include end-to-end integrity via cryptographic hashes, throttling of transfers to prevent resource exhaustion, balancing transfers across resources based on load and availability, and parallelization of transfers across multiple source and destination hosts for increased redundancy and performance.
+ View Shift

SLAB Spatial Audio Renderer

SLAB is a software-based, real-time virtual acoustic environment rendering system being developed as a tool for the study of spatial hearing. SLAB is designed to work in the personal computer environment to take advantage of the low-cost PC platform while ...
+ View SLAB Spatial Audio Renderer


Surfer is an extensible framework designed to select and rank grid resources where a resource is defined to be anything that may need selecting such as compute resources, storage resources, data resources, etc. The user specifies the set of resource ...
+ View Surfer


Swim is a Software Information Metacatalog that gathers detailed information about the software components and packages installed on each grid resource. Information is currently gathered for Executable and Linking Format (ELF) executables and shared libraries, Java classes, shell scripts, and ...
+ View Swim

World Wind

World Wind allows any user to zoom from satellite altitude into any place on Earth, leveraging high resolution LandSat imagery and SRTM elevation data to experience Earth in visually rich 3D, just as if they were really there. Particular focus ...
+ View World Wind

X-Plane Communications Toolbox

The X-Plane Communications Toolbox (XPC) is an open source research tool used to interact with the commercial flight simulator software X-Plane. XPC allows users to control aircraft and receive state information from aircraft simulated in X-Plane using functions written in C or MATLAB in real time over the network. This research tool has been used to visualize flight paths, test control algorithms, simulate an active airspace, or generate out-the-window visuals for in-house flight simulation software.

+ View XPlaneConnect

First Gov logo
NASA Logo -