geist_supervisor 0.1.26

Geist Supervisor - Management tool for Roc Camera
Documentation

Geist Supervisor

The Geist Supervisor is the central orchestrator for the Geist ecosystem. A Rust-based tool that manages the update process, debugging, and runtime control of the Geist and associated applications.

Quick Start

# Install geist_supervisor
cargo install --path .

# Check version and status
geist_supervisor --version
geist_supervisor status

# Check for updates
geist_supervisor check-update

# Perform OTA update
geist_supervisor update

Testing

This project uses cargo nextest as the preferred test runner for better test isolation and parallel execution.

Prerequisites

Install nextest if not already available:

cargo install cargo-nextest

Running Tests

# Run all tests (recommended)
cargo nextest run

# Run tests for a specific module
cargo nextest run ota
cargo nextest run dependencies

# Quick test run (fail-fast, minimal output)
cargo nextest run --profile quick

# CI-style run (with retries)
cargo nextest run --profile ci

# Legacy test runner (may have race conditions)
cargo test

Why Nextest?

We use nextest because it provides:

  • Better test isolation: Each test runs in its own process
  • Proper parallel execution: No race conditions with environment variables
  • Better reporting: Clear, structured output
  • Faster feedback: Optimized execution and reporting

How to install

  • cargo install geist_supervisor: Installs the Geist Supervisor to the system.

Key Features

  1. Unified Updates:

    • Ensures all components (Geist binaries, Roc Camera App) are updated simultaneously to a single unified version.
  2. Update Process:

    • Automatically verifies and applies updates for:
      • Geist binaries.
      • Roc Camera App binaries.
      • Plymouth boot splash screen (from assets/splash/splash.png).
    • Ensures integrity with checksum and signature validation.
    • Restarts all services in the correct order after updating.
  3. Bootloader like functionality:

    • Acts as the bootloader for the Geist application, the Roc Camera App, and any future firmware components.

CLI Commands

The command line interface is built using clap. It should just be geist <command>.

Update Commands

  • geist_supervisor update <version>: Updates all components (Geist, Roc Camera App, microcontroller firmware) to the specified version.
  • geist_supervisor verify <version>: Verifies that all artifacts for a given version are available and valid.
  • geist_supervisor rollback <version>: Rolls back to a previous known-good version.