Skip to content

eclipse-timpani/timpani

Repository files navigation

timpani

Distributed real-time scheduling system with time-triggered execution capabilities. timpani provides both C and Rust implementations of node executors and schedulers for deterministic real-time applications.

This repository contains both original C implementations and modern Rust ports with enhanced type safety and memory safety.

Architecture

  • timpani-n(Node Executor): Executes time-triggered tasks on individual nodes
  • timpani-o (Node Scheduler): Orchestrates and schedules tasks across distributed nodes
  • Sample Applications: Real-time test applications for system validation

Getting Started

Clone the Repository

git clone --recurse-submodules https://github.com/eclipse-timpani/timpani.git
cd timpani

Note: Use --recurse-submodules to automatically clone the required submodules (libbpf, etc.).

Refer to the individual component READMEs below for specific build and setup instructions.

Components

Real-time sample applications for real-time system analysis. Provides periodic execution, deadline monitoring, and runtime statistics collection capabilities.

Quick Build:

cd sample-apps
mkdir build && cd build
cmake ..
make

For detailed setup and usage → Full Documentation

C implementation of the time-triggered node executor component.

Quick Build:

cd timpani-n
mkdir build && cd build
cmake ..
make

For detailed setup, dependencies, and usage → Full Documentation

C implementation of the orchestrator component with gRPC & protobuf support for distributed scheduling.

Quick Build:

cd timpani-o
mkdir build && cd build
cmake ..
make

For detailed setup, protobuf configuration, and usage → Full Documentation

Rust ports of timpani components with enhanced type safety and memory safety.

Rust implementation of the node executor with comprehensive CLI interface, configuration validation, and structured logging. Status: Configuration parsing complete, runtime features in development.

Quick Build:

cd timpani_rust/timpani-n
cargo build --release
cargo test  # Run tests

For detailed setup, usage examples, and current status → Full Documentation

Rust implementation of the global scheduler component. Status: In development.

Quick Build:

cd timpani_rust/timpani-o
cargo build --release
cargo test  # Run tests

For detailed setup and current development status → Full Documentation

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

📖 Documentation Structure

timpani/
├── README.md                    # This file - main project overview
├── doc/                         # 📚 Comprehensive documentation
│   ├── README.md               # Documentation guide
│   ├── architecture/           # Architecture documentation
│   │   ├── HLD/               # High-Level Design
│   │   │   ├── timpani_system_design_document.md
│   │   │   └── timpani_rust_grpc_architecture.md
│   │   └── LLD/               # Low-Level Design
│   │       ├── timpani-o/     # Orchestrator components (10 docs)
│   │       └── timpani-n/     # Node executor components (10 docs)
│   ├── features/              # Feature & Requirements
│   │   ├── timpani_features.md
│   │   └── requirements/timpani_requirements.md
│   ├── docs/                  # Implementation guides
│   │   ├── api.md
│   │   ├── getting-started.md
│   │   └── developments.md
│   └── contribution/          # Contribution guidelines
│       ├── coding-rule.md
│       └── guidelines-en.md
├── sample-apps/
│   └── README.md               # Sample applications documentation
├── timpani-n/
│   ├── README.md               # C implementation: Node executor
│   ├── README.CentOS.md       # CentOS setup guide
│   └── README.Ubuntu20.md     # Ubuntu setup guide
├── timpani-o/
│   └── README.md               # C implementation: Node scheduler
└── timpani_rust/
    ├── README.md               # Rust components overview
    ├── timpani-n/
    │   └── README.md           # Rust node executor (config parsing complete)
    └── timpani-o/
        └── README.md           # Rust node scheduler (in development)

Navigation: Sample Apps | timpani-n(C) | timpani-o (C) | Rust Components | Rust timpani-n

About

Eclipse timpani provides Distributed real-time scheduling system with time-triggered execution capabilities.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors