commons/README.md
2026-05-04 22:16:42 +02:00

38 lines
1.1 KiB
Markdown

# Commons
**Commons** is the shared type library for Shoal - common types used across all components.
## What it Does
Commons provides consistent, reusable types throughout the Shoal system:
- **Shared data structures** - Types used by Pod, Reef, Reservoir, Dock, Lookout
- **Optional TTP serialization** - Types can be serialized using TTP (Transport Type Protocol)
- **Cross-crate consistency** - Ensures all components use the same type definitions
## How to Use
### Dependencies
Add to your `Cargo.toml`:
```toml
shoal-types = { git = "https://git.methanium.net/shoal/commons.git" }
```
### Usage
Import common types:
```rust
use common::{Task, KrillConfig, ProjectMetadata, ...};
```
## Purpose
Instead of each component defining its own types, Commons centralizes:
- Communication message types (including training progress, control signals)
- Task definitions (JobType::Task, JobType::Training, JobType::DataPreparation)
- Training job payloads (TrainingJob, InferenceJob, TrainingMetrics, TrainingControl)
- Configuration structures
- Storage schemas
This ensures type safety and consistency across the entire Shoal ecosystem.