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.
- 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
git clone --recurse-submodules https://github.com/eclipse-timpani/timpani.git
cd timpaniNote: Use
--recurse-submodulesto automatically clone the required submodules (libbpf, etc.).
Refer to the individual component READMEs below for specific build and setup instructions.
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 ..
makeFor 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 ..
makeFor 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 ..
makeFor 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 testsFor 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 testsFor detailed setup and current development status → Full Documentation
This project is licensed under the MIT License - see the LICENSE file for details.
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