Low-power speech-to-text edge router with local/cloud cascades, Kafka transport, OpenTelemetry metrics, and k3s deploys.
Personal long-term side project to explore real-time observability, power tradeoffs, and production-grade infra.
- Rust (
edge-router
) - low-latency GPIO handling async Kafka producer - Go (
stt-wrapper
) - simple cgo bindings towhisper.cpp
- Python (
power-sensor
) - fast prototyping for INA219 power sensor & metrics - Kafka + k3s - back-pressure support, self-contained cluster demos
- OpenTelemetry + Grafana - end-to-end traces + p95/p99 latency tracking
Install core toolchains via Homebrew:
brew install go python@3.11 rustup-init kafkacat docker docker-compose
Then launch Docker:
open -a Docker
docker run --rm hello-world
docker compose version
Install via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source ~/.cargo/env
rustup component add clippy
Quick sanity check:
cargo new hello && cd hello && cargo clippy
Use pyenv
for version control:
pyenv install 3.11.9
pyenv global 3.11.9
python --version
No extra setup needed beyond brew install go
:
go version
Create a .pre-commit-config.yaml
file with the necessary hooks.
Then run:
pre-commit install
pre-commit run --all-files
This installs and runs the following linters:
- Python -
black
,ruff
,mypy
- Rust -
clippy
,rustfmt
- Go -
go-fmt
,go-vet
,go-test-mod
,go-mod-tidy
This project uses Kafka with ZooKeeper mode for CI and local development to ensure maximum compatibility and reliability across environments.
KRaft (Kafka Raft Mode)
- Kafka is transitioning towards a ZooKeeper-less architecture known as KRaft mode, which offers simplified deployment, faster start-up, and a native quorum-based controller management
- This project does not currently use KRaft by default. Future branches may include KRaft support.