AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Embedded Rust firmware observability SDK for Cortex-M devices
Translation pending
Developer toolsRust · ShellGitHub @mighty840OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Embedded Rust firmware observability SDK for ARM Cortex-M — crashes, metrics, and trace logs with zero alloc
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Firmware observability for ARM Cortex-M — crashes, metrics, and logs with zero alloc.
ferrite.shanifaas.com — 5 real boards reporting telemetry.
Demo data resets every 2 hours.
ferrite-sdk captures everything you need to debug embedded devices in the field:Read the full README ↗ferrite.shanifaas.com — 5 real boards and the Linux gateway reporting telemetry.
| Board | Stack | Transport |
|---|---|---|
| ESP32-C3 | Embassy (esp-hal) | WiFi → HTTP |
| STM32L4A6 | Embassy (embassy-stm32) | USB CDC |
| STM32WL55 | RTIC 2.x | LPUART VCP |
| STM32H563 | Embassy (embassy-stm32) | Ethernet |
| nRF5340 | Zephyr 4.1 (C + FFI) | BLE GATT |
| Raspberry Pi (the gateway itself) | Linux, ferrite-agent | HTTP via gateway |
Access: the demo is private. For a demo login, contact @mighty840 on GitHub.
Demo data resets every 2 hours.
ferrite-sdk captures everything you need to debug embedded devices in the field:
Data survives reboots via retained RAM. The companion server stores, decodes, and symbolicates everything.
The platform includes a full-stack observability pipeline: an edge gateway for BLE/USB/LoRa bridging, an ingestion server with alerting, Prometheus metrics, and role-based access control, and a web dashboard for real-time fleet monitoring.
Default configuration: ~1.7 KB RAM, ~6 KB flash. No alloc, no std, no panics.
1. Add dependencies:
[dependencies]
ferrite-sdk = { version = "0.1", features = ["cortex-m", "defmt", "embassy"] }
ferrite-embassy = "0.1"
2. Add linker fragment (see linker/nrf52840-retained.x)
3. Initialize the SDK:
ferrite_sdk::init(SdkConfig {
device_id: "sensor-42",
firmware_version: env!("CARGO_PKG_VERSION"),
build_id: 0,
ticks_fn: || embassy_time::Instant::now().as_ticks(),
ram_regions: &[RamRegion { start: 0x20000000, end: 0x20040000 }],
});
4. Record telemetry:
ferrite_sdk::metric_gauge!("temperature", 23.5);
ferrite_sdk::metric_increment!("packets_sent");
defmt::info!("system started");
5. Upload periodically:
#[embassy_executor::task]
async fn upload(transport: MyUart) -> ! {
ferrite_embassy::upload_task::upload_loop(transport, Duration::from_secs(60)).await
}
| Target | Architecture | Example |
|---|---|---|
| nRF52840 | Cortex-M4F | examples/embassy-nrf52840 |
| STM32F4 | Cortex-M4F | Linker script included |
| RP2040 | Cortex-M0+ | Linker script included |
All thumbv7m-none-eabi, thumbv7em-none-eabi, and thumbv7em-none-eabihf targets are supported.
| Crate | Description |
|---|---|
ferrite-sdk | Core no_std SDK — crashes, metrics, trace, chunks, encryption, compression |
ferrite-embassy | Embassy async upload task |
ferrite-rtic | RTIC resource wrapper + blocking upload |
ferrite-ffi | C FFI static library for Zephyr/FreeRTOS |
ferrite-server | Ingestion server — auth, alerting, Prometheus, groups, OTA, rate limiting |
ferrite-dashboard | Dioxus WASM dashboard — fleet view, metrics charts, fault diagnostics |
ferrite-gateway | Edge gateway — BLE/USB/LoRa chunk forwarding with offline buffering |
ferrite-ble-nrf | nRF52840 BLE transport (SoftDevice, excluded from workspace) |
# Host tests (no embedded toolchain needed)
cargo build -p ferrite-sdk --no-default-features
cargo test -p ferrite-sdk --no-default-features
cargo test -p ferrite-server
# Cross-compile for Cortex-M
rustup target add thumbv7em-none-eabihf
cargo build -p ferrite-sdk --features cortex-m,defmt,embassy --target thumbv7em-none-eabihf
# Run the server (uses .env for config, see .env.example; basic auth needs BASIC_AUTH_PASS)
BASIC_AUTH_PASS=admin cargo run -p ferrite-server
# Run the dashboard (proxies API to localhost:4000)
cd ferrite-dashboard && dx serve
# Build the edge gateway
cargo build -p ferrite-gateway
# Docs site
cd docs && npm install && npm run dev
Full documentation is available at the VitePress docs site, covering:
Licensed under the MIT License.