Skip to content
casablanque-codePublic

About

Anomaly Vibration Edge Network Go Engine | A Go-based edge computing engine for real-time vibration analytics, inline signal compression, and predictive anomaly detection. Zero external runtime dependencies, zero-heap-allocation hot path.

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

106 Commits

Folders and files

A.V.E.N.G.E

Anomaly Vibration Edge Network Go Engine. Listen to a machine at the edge. Send the verdict, not the waveform.

CI

A vibration sensor or a microphone produces a firehose, and almost all of it says "nothing is happening". A.V.E.N.G.E sits next to the sensor, learns what normal looks like from the first seconds, watches the signal window by window (energy and frequency bands), and sends upstream a few hundred bytes: a periodic summary, and a message when the machine goes into or out of anomaly. The raw signal never leaves the device.

It is an open research project. What works, what is only measured on synthetic data, and what is merely claimed are kept apart on purpose: see docs/RESEARCH.md.

The idea

  • Compute where the signal is. FFT, RMS, band energies and z-scores against a baseline the engine learns by itself, on the device.
  • One verdict. The engine is either in anomaly or not (RMS or any frequency band, with hysteresis), and it says which band did it.
  • Summaries, not streams. Telemetry every few seconds, an event on every change of state. No waveform, no audio.
  • Boring on purpose. Zero runtime dependencies, a per-window hot path that does not allocate (tests enforce it), statistics you can read instead of a model you have to trust.
  • Two signals, one engine. Vibration from a serial sensor, sound from a microphone. One setting (SENSOR_PROFILE) chooses the defaults.

Run it

You need Go 1.27+, Docker with Compose 24+, and Python 3.10+.

# 1. Configure: set every password in core/.env, MQTT_USER=edge and MQTT_PASSWORD in edge/.env
cp core/.env.example core/.env
cp edge/.env.example edge/.env

# 2. Core stack (broker, ingestion, database, dashboards)
docker compose -f core/compose.yaml up -d

# 3. Edge binary
cd edge && go build -o edge-filter ./cmd/edge-filter/ && cd ..

# 4. Feed it a synthetic signal with a fault injected after 15 seconds
python3 firmware-sim/signal_generator.py stream --anomaly-after 15 \
  | ./edge/edge-filter --broker localhost:1883 --sensor-id bearing_01

Dashboards: http://grafana.localhost (user admin, password GRAFANA_ADMIN_PASSWORD from core/.env).

No broker at hand? Add --no-mqtt and the engine just prints. A microphone instead of the simulator: set SENSOR_SOURCE=mic in edge/.env and run ./edge/edge-filter --explain to see exactly what will happen. Everything the binary understands: ./edge/edge-filter --help.

Real sensors, secrets, ports, troubleshooting: docs/OPERATIONS.md.

Where to read next

If you want to know... Read
What is proven, what is not, and why docs/RESEARCH.md
What went wrong along the way docs/LAB-NOTES.md
The measurements, with the data docs/experiments/
Why it is built this way docs/adr/
The concept and the algorithms docs/DOC.md
How the parts fit together docs/ARCHITECTURE.md
How to run and fix it docs/OPERATIONS.md
What CI checks docs/TESTING.md
What changed CHANGELOG.md
The layout of the repository docs/README.md

Licensed under GPL-3.0, see LICENSE.

About

Anomaly Vibration Edge Network Go Engine | A Go-based edge computing engine for real-time vibration analytics, inline signal compression, and predictive anomaly detection. Zero external runtime dependencies, zero-heap-allocation hot path.

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages