Skip to content

bprobert97/accord

Repository files navigation

Introduction to ACCORD

Autonomous Cooperative Consensus Orbit Determination (ACCORD) is a decentralised framework for satellite operations in Low Earth Orbit (LEO). It addresses the limitations of centralised coordination, such as single points of failure and trust bottlenecks, by leveraging a Directed Acyclic Graph (DAG)-based Distributed Ledger Technology (DLT).

In ACCORD, satellites use on-board sensors to observe one another and collaboratively determine their orbital positions. These observations are submitted to the distributed ledger, where consensus is achieved through Proof of Inter-Satellite Evaluation (PoISE) - a novel, reputation-based, Byzantine Fault Tolerant (BFT) consensus mechanism. Unlike traditional blockchain systems, PoISE does not rely on financial incentives or intermediaries. Instead, it validates orbit data by evaluating mutual observations and assessing the trustworthiness of both the data and the observing satellites.

This decentralised approach enhances data integrity, trust, and resilience across heterogeneous constellations. As more satellites join the network, ACCORD scales naturally, enabling secure and autonomous satellite operations—even in zero-trust environments.

Satellite Constellation Animation

This code is licensed under a GNU General Public License v3.0.

Current Status

The project is currently at TRL 0. The PoISE consensus mechanism is in the early phases of development by Beth Probert, a PhD student at the University of Strathclyde's Applied Space Technology Laboratory. Once development of PoISE is completed, the rest of the ACCORD framework shall be developed around this consensus mechanism. By incorporating smart contracts in future development, the system will enable autonomous decision-making, allowing satellites to self-govern, coordinate tasks, and reroute services in real time.

Related Publications

Citation

If you use this work, please cite it as:

B. Probert, bprobert97/accord: v3.0. (Mar. 24, 2026). Python. University of Strathclyde, Glasgow. DOI: 10.5281/zenodo.19206200

Repository Layout

📁 accord/
│
├── 📁 .github/workflows/           # GitHub Workflow files
│   └── main.yml                     # CI configuration for github: Pylint, Mypy and Pytest
│
├── 📁 design/                      # Design documents, Jupyter notebooks and PlantUML diagrams
│
├── 📁 images/                      # Image assets
│
├── 📁 src/                        # Main source code
│   └── __init__.py                # Empty file, for module creation
│   └── consensus_mech.py          # Code for the PoISE consensus mechanism
│   └── dag.py                     # Code for the Directed Acyclic Graph ledger structure
│   └── filter.py                  # Code for the orbit determination calculations
│   └── logger.py                  # Code for the app logger
│   └── mc_comparison.py           # Code for generating comparison plots for different Monte Carlo data sets
|   └── plotting.py                # Code for plotting simulation results
│   └── reputation.py              # Code for the satellite reputation manager
│   └── satellite_node.py          # Code representing a satellite in the network
│   └── simulation.py              # Helper functions for generating and converting satellite orbital elements.
│   └── transaction.py             # Code representing a transaction submitted by a satellite
│   └── visualise_orbits.py        # Code for generating a gif of truth orbits
│
├── 📁 tests/                     # Unit tests, written with pytest
|
├── .codespellrc             # Codespell configuration file
├── .coveragerc              # Pytest coverage configuration file
├── .gitignore               # Files/folders to ignore in Git
├── .pylintrc                # Pylint configuration file
├── accord_demo.py           # Demonstration of ACCORD
├── changelog.md             # Release change log
├── LICENSE.MD               # License file
├── mc_demo.py               # Monte Carlo Simulation of ACCORD
├── mypy.ini                 # Mypy configuration
├── README.md                # Project overview
├── requirements.txt         # List of python package dependencies for Linux and CI
└── requirements_windows.txt   # List of python package dependencies for Windows

Installation

Make sure Python 3.13 is installed on your system before proceeding with the installation. Follow these steps to set up the project in a Python virtual environment:

  1. Clone the repository

    git clone https://github.com/bprobert97/accord.git
  2. Create a virtual environment

    python -m venv venv
  3. Activate the virtual environment

    On Windows:

    venv\Scripts\activate

    On macOS/Linux:

    source venv/bin/activate
  4. Install dependencies

    On Windows:

    pip install -r requirements_windows.txt

    On macOS/Linux:

    pip install -r requirements.txt

Usage

Note: if you wish to fork the repository using Git, you will need to have Git LFS installed in order to commit the large .npz data files that the simulations produce, or add the .npz files to you .gitignore.

Local Demo

To run the ACCORD demo, either:

  • In VSCode, right click accord_demo.py and select Run Python File in Terminal
  • In a terminal, execute py accord_demo.py

To run the Monte Carlo Simulation:

  • In a terminal, run py mc_demo.py
  • You can also use the following arguments:
    • --num-runs: The number of Monte Carlo runs you wish to do (default: 10)
    • --threshold: Detection threshold for KPIs (default: 0.4)
    • --fpr-offset: False Palsitive Rate offset percent to ignore initialisation effects of the Extended Kalman Filter (default: 0.2)
    • --recalculate: Recalculate KPIs from saved data stored in ./sim_data/mc_results/mc_results.npz
    • Example: py mc_demo.py --num-runs 10 --threshold 0.2

StreamLit App

The key results from the ACCORD simulations are hosted online at: https://accord-demo.streamlit.app/

If you would like to run strreamlit locally, in your terminal run: streamlit run streamlit_app.py

About

Python implementation of the ACCORD framework with PoISE consensus mechanism.

Topics

Resources

License

Stars

Watchers

Forks

Contributors