Skip to content

norma-core/normfs

Repository files navigation

NormFS 🚀

Crates.io

High-performance persistent queue storage for robotics and embedded systems

Storage engine with automatic data lifecycle management across memory, disk, and cloud. Built for high-frequency sensor data ingestion. Available as embeddable library or standalone server.

📊 Latency

Fanout Scaling

Fanout Latency: Time for a message to propagate from write to all N concurrent subscribers over TCP. Measures the server's ability to efficiently distribute messages to multiple clients simultaneously - critical for real-time multi-sensor coordination in robotics and distributed systems.

TCP Fanout Benchmarks (1KB message):

Clients P50 P95 P99
1 49µs 65µs 88µs
2 59µs 78µs 97µs
4 81µs 109µs 145µs
8 146µs 183µs 224µs
16 243µs 305µs 347µs
32 357µs 436µs 508µs
64 549µs 656µs 809µs
128 956µs 1.1ms 1.5ms
256 1.8ms 2.0ms 3.0ms
512 3.7ms 5.0ms 6.5ms
1024 7.0ms 8.2ms 19ms
2048 15.0ms 17.9ms 37.1ms
4096 35.9ms 40.3ms 78.5ms
8192 792ms 1.08s 1.26s

Benchmarked on Apple M3 Max MacBook Pro. Embedded library performance is significantly faster.

📈 Full TCP benchmarks →

✨ Features

  • 🗄️ Tiered Storage: Memory → WAL → Compressed Store → Cloud archival
  • High Performance: <100μs latency (p99)
  • 🤖 Multi-System Isolation: Unique instance IDs for safe fleet-wide cloud syncing
  • 🔒 Security: AES-256-GCM encryption + Ed25519 signatures
  • 📖 Flexible Reads: Absolute/relative positioning, tail reads, subscriptions, step queries
  • ⏱️ Time Sync: Nanosecond-precision timestamps for distributed coordination
  • 🔄 Crash Recovery: Write-ahead logging with automatic replay

🏗️ Architecture

Memory → WAL (Disk) → Store (Disk) → Cloud (S3-compatible)
  ↓         ↓             ↓              ↓
Fast    Durable    Compressed      Archival

🎯 Use Cases

🤖 Robotics: High-frequency sensor logging (IMU, lidar, GPS), multi-sensor sync, black box recording, simulation replay, fleet data aggregation

💾 Embedded Systems: Time-series data, event sourcing, audit logs, edge computing with cloud sync

🌐 IoT & Edge: Local-first storage with automatic cloud archival, multi-device coordination

🌍 Language Support

🦀 Rust (Core Implementation + Embedded Library)

Embedded Library: Zero external dependencies, runs in-process with your Rust application. No separate database or server process required.

Standalone Server: TCP/WebSocket server for multi-language client access.

📖 Rust Documentation - Coming soon

🐹 Go (Client Library)

Native Go client for connecting to NormFS servers.

📖 Go Documentation →

🐍 Python · 🟨 TypeScript

Coming soon. Protocol specification available for implementing additional clients.

🚀 Quick Start

# Clone the repository
git clone https://github.com/norma-core/normfs.git
cd normfs

Run as Server

# Build server
cargo build --release --features server-bin --bin normfs-server

# Run server
./target/release/normfs-server --data-dir /tmp/normfs-data --addr 0.0.0.0:8888

Client Libraries

See language-specific documentation:

Cross-Compilation

Build the server for multiple platforms using cargo-zigbuild:

# Install cargo-zigbuild
cargo install cargo-zigbuild

# Build server for different platforms
cargo zigbuild --release --features server-bin --bin normfs-server --target x86_64-unknown-linux-gnu
cargo zigbuild --release --features server-bin --bin normfs-server --target aarch64-unknown-linux-gnu
cargo zigbuild --release --features server-bin --bin normfs-server --target aarch64-apple-darwin
cargo zigbuild --release --features server-bin --bin normfs-server --target x86_64-apple-darwin
cargo zigbuild --release --features server-bin --bin normfs-server --target x86_64-unknown-freebsd

# Binaries will be at: target/<target-triple>/release/normfs-server

💻 Platform Support

Platform Arch Status
Linux x86_64, aarch64
macOS x86_64, aarch64
FreeBSD x86_64

📦 Components

  • normfs: Core Rust library and server
  • normfs-wal: Write-ahead log
  • normfs-store: Compressed/encrypted persistent storage
  • normfs-cloud: S3-compatible cloud integration
  • normfs-crypto: Encryption and signing
  • normfs_go: Go client library
  • uintn: Variable-width integers with infinite scaling

📊 Status

v0.1.0-beta.0 - Active development, API may change before 1.0

📄 License

MIT

About

High-performance persistent queue storage for robotics and embedded systems

Topics

Resources

License

Stars

Watchers

Forks

Contributors