AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Embedded Rust firmware observability SDK for ARM Cortex-M — crashes, metrics, and trace logs with zero alloc
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
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: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.