A Rust-native system for local, secure, and high-performance telemetry monitoring β built with Hexagonal Architecture, DDD, and TDD.
β οΈ Notice
This repository is a personal development project and is currently incomplete and not intended for public reuse, redistribution, or demonstration.
Please do not fork, copy, or republish any part of this code.
The project is not in a stable state, and does not reflect a usable or launch-ready application.
Thank you for respecting the intent of this work.
π Read the full technical case study here or browse the weekly changelog.
RustPulse is a modular, production-ready telemetry monitoring system written entirely in Rust. It is built for high-reliability environments such as simulation clusters, internal infrastructure, and latency-sensitive operations.
- β Hexagonal Architecture (Ports & Adapters)
- β Domain-Driven Design + Test-Driven Development
- β Fast REST/gRPC APIs with PostgreSQL persistence
- β CLI to Dashboard workflow with Prometheus/Grafana
- β Offline-first design for edge/mission-critical ops
- β Pluggable source architecture (trait-based)
- β
Currently uses
MockTelemetrySourcefor simulation - β Real collectors can be added without touching core logic
-
Hexagonal Architecture
- Modular structure separating core logic and external interfaces
-
Domain-Driven Design (DDD)
Node: agent identity and lifecycleNodeTelemetry: real-time metrics from nodesTelemetrySource: ingestion and validation layer
-
Test-Driven Development (TDD)
- Integration-driven workflows for async flows & interfaces
-
Security & Auth
- JWT for all API layers
- Role-based access (planned)
| Component | Tooling | Purpose |
|---|---|---|
| Backend Framework | Axum (Rust) | Fast and ergonomic async API building |
| Storage | PostgreSQL + SQLx / JSONL | Persistent or append-only telemetry logging |
| Transport | Tonic (gRPC) | Binary protocol for scalable services |
| CQRS | Axum + Async Executors | Clean separation of command/query |
| CLI Tool | Clap + Rust | Native CLI with full telemetry control |
| Auth | JWT (jsonwebtoken) | Secure session management |
| Observability | Prometheus + Grafana | Metrics & dashboards |
| Logging | Tracing | High-performance structured logs |
| CI/CD | GitHub Actions + Clippy | Linting, testing, quality gates |
- RESTful endpoints using
axum - Modular config via
.envwithdotenvy - Centralized logging with
tracingandtracing-subscriber - Integration & unit tests using
reqwest+tokio - Architecture: Hexagonal Architecture for scalable and maintainable design.
- Adapters: JSONL repository for efficient data persistence and querying.
- Asynchronous: Thread-safe operations with
tokio::sync::Mutex. - Error Handling: Simplified errors with
anyhowcrate. - Testing: Mock data and unit test integration for validation.
src/
βββ adapters/ # Outbound adapters (DBs, mocks, sources)
β βββ mock_repo.rs
β βββ postgres_metrics_repo.rs
β βββ telemetry_source_repo.rs
β
βββ app/ # Application services and orchestration
β βββ errors.rs
β βββ metrics_service.rs
β
βββ cli/ # Command-line interface logic
β βββ args.rs
β βββ commands.rs
β
βββ core/ # Domain logic: entities, ports, use cases
β βββ domains/
β β βββ node.rs
β β βββ telemetry.rs
β βββ domains.rs # Central re-exports (flat module style)
β βββ port.rs # Domain ports (interfaces for adapters)
β
βββ handlers/ # Inbound interfaces: HTTP handlers (Axum)
β βββ health.rs
β βββ metrics.rs
β βββ root.rs
β
βββ infra/ # Infrastructure layer: DB, logging, startup
β βββ db.rs
β βββ logging.rs
β βββ startup.rs
β
βββ tests/ # Integration tests
β βββ api.rs
β βββ common.rs
β
βββ lib.rs # Library entry point (used for tests or crates)
βββ main.rs # Binary entry point
π§ Coming soon
π§ Coming soon
π§ Project in early development. No contributions accepted yet. π§
π§ Processing
Hosted docs will be available on docs.rs after first crate release.
MIT OR Apache-2.0
Thanks for checking out RustPulse! Follow the full case study for deep dives into architecture, design, and async telemetry in Rust.