Crate Documentation

NexusScribe is built as a Rust workspace with 12 specialized crates.


Architecture Overview

┌─────────────────────────────────────────────────────────────────┐
│                        nexus-scribe-web                          │
│                    (HTTP Server & Handlers)                      │
├──────────────┬──────────────┬──────────────┬────────────────────┤
│ nexus-scribe │ nexus-scribe │ nexus-scribe │  nexus-scribe      │
│     -api     │    -auth     │     -db      │  -collaboration    │
├──────────────┴──────────────┴──────────────┴────────────────────┤
│                       nexus-scribe-core                          │
│                    (Types, Config, Errors)                       │
├─────────────────────────────────────────────────────────────────┤
│    nexus-scribe     │    nexus-scribe     │    nexus-scribe     │
│   -transcription    │      -speaker       │      -audio         │
├─────────────────────┼─────────────────────┼─────────────────────┤
│    nexus-scribe     │    nexus-scribe     │    nexus-scribe     │
│      -models        │       -hailo        │      -utils         │
└─────────────────────┴─────────────────────┴─────────────────────┘

Crate Summary

Crate Description Key Dependencies
nexus-scribe-core Core types, config, error handling serde, chrono, uuid
nexus-scribe-utils Utilities, validators, sanitization regex, chrono
nexus-scribe-db Aegis-DB abstraction layer aegis-client, tokio
nexus-scribe-auth JWT, passwords, MFA, RBAC argon2, jsonwebtoken
nexus-scribe-api REST/WebSocket type definitions serde, axum
nexus-scribe-web HTTP server, handlers, middleware axum, tower
nexus-scribe-audio Audio capture, preprocessing, VAD cpal, rubato
nexus-scribe-transcription Whisper integration, decoder whisper-rs
nexus-scribe-speaker Speaker diarization, MFCC ndarray
nexus-scribe-collaboration Real-time OT, WebSocket presence tokio-tungstenite
nexus-scribe-hailo Hailo NPU device management hailo-rs (optional)
nexus-scribe-models ML model registry, loader, cache tokio, dashmap

Dependency Graph

nexus-scribe-web
├── nexus-scribe-core
├── nexus-scribe-auth
├── nexus-scribe-db
├── nexus-scribe-api
└── nexus-scribe-collaboration

nexus-scribe-transcription
├── nexus-scribe-core
├── nexus-scribe-audio
├── nexus-scribe-hailo (optional)
└── nexus-scribe-models

nexus-scribe-speaker
├── nexus-scribe-core
└── nexus-scribe-audio

nexus-scribe-collaboration
├── nexus-scribe-core
└── nexus-scribe-db

Building Individual Crates

# Build a specific crate
cargo build -p nexus-scribe-auth

# Test a specific crate
cargo test -p nexus-scribe-auth

# Build with features
cargo build -p nexus-scribe-web --features "vault,saml"

Feature Flags

Crate Feature Description
nexus-scribe-web vault HashiCorp Vault integration
nexus-scribe-web tls Native TLS termination
nexus-scribe-web saml SSO/SAML authentication
nexus-scribe-web compliance Full compliance suite
nexus-scribe-transcription hailo Hailo NPU acceleration

Adding a New Crate

  1. Create crate directory:
    mkdir crates/nexus-scribe-new
    
  2. Add to workspace in Cargo.toml:
    [workspace]
    members = [
        "crates/nexus-scribe-new",
        # ...
    ]
    
  3. Create Cargo.toml:
    [package]
    name = "nexus-scribe-new"
    version.workspace = true
    edition.workspace = true
    authors.workspace = true
    license.workspace = true
    
    [dependencies]
    nexus-scribe-core = { path = "../nexus-scribe-core" }
    
  4. Follow the standard file header format in all Rust files.

Table of contents