Skip to content
@phaemos

PHAEMOS

Reveal before failure. Open industrial IoT platform for predictive maintenance.
PHAEMOS: reveal before failure

Reveal before failure. An open industrial IoT platform for predictive maintenance.

Documentation · Roadmap · Discussions · Contributing

Why PHAEMOS

Machines rarely fail without warning. Bearings wear, motors run hot and vibration creeps up for weeks before a breakdown. Condition monitoring catches that drift, but commercial systems are priced for large plants and tied to one vendor's sensors and cloud.

PHAEMOS brings the same idea to any workshop, lab or small site: low-cost microcontroller nodes on the machine, a model that learns what normal looks like for that machine and an open stack you host yourself.

The name

Machines fail. Not suddenly but gradually, silently and invisibly. PHAEMOS exists to reveal what machines cannot say about themselves.

The name, pronounced FAY-mos, is coined from two Ancient Greek roots:

Part Root Meaning
PHAE- phaen- (φαιν-), as in phaínein to reveal, to bring to light, the root behind phenomenon
-MOS -mos, as in kósmos (κόσμος) system or order

Together they mean "an ordered system that reveals". The platform learns the normal order of each machine and reveals the readings that break it before they become a failure, which is where the tagline comes from: reveal before failure.

PHAEMOS has a sister project, MELOPHOS, named the same way. Its phos (φῶς, light) and the phaen- in PHAEMOS go back to the same ancient root, meaning "to shine".

How it works

flowchart LR
    STM["STM32 Black Pill<br/>vibration FFT"] -- UART --> ESP["ESP32 gateway<br/>11 sensors"]
    NANO["Arduino Nano<br/>auxiliary sensors"] -- serial --> ESP
    ANY["Any node"] -. serial .-> EDGE["Rust edge gateway<br/>spools through outages"]
    ESP -- HTTPS --> API["FastAPI backend<br/>Isolation Forest scoring"]
    PICO["Pico 2W<br/>ambient node"] -- HTTPS --> API
    EDGE -- HTTPS --> API
    API --> DB[("PostgreSQL")]
    API -- WebSocket --> DASH["Next.js dashboard"]
    API --> OUT["Alerts, webhooks, Discord,<br/>email and SMS"]
Loading

Each node streams its readings to the API, which stores them and scores every reading against the machine's normal behaviour. A reading that drifts raises an alert, which can become a maintenance ticket. The full picture is in docs/architecture.md.

What it does

  • Four sensor nodes. An ESP32 gateway with 11 sensors, an STM32 running a vibration FFT at 100 Hz, an Arduino Nano and a Raspberry Pi Pico 2W cover temperature, vibration, current, gas, sound, distance and shaft speed.
  • Anomaly detection without fault data. An Isolation Forest learns each machine's normal behaviour and scores readings as they arrive, so no labelled failures are needed to start.
  • Operations built in. Alert rules, maintenance windows, tickets, webhooks to Slack, Discord and Teams, email and SMS, an audit log of every change and role-based access with optional two-factor enrolment.
  • Resilient at the edge. A Rust gateway spools every reading to disk during a network outage and sends it on in order once the link returns.
  • Built to be built on. A Python SDK, a simulator with injectable faults and a Go CLI for load testing.
  • Open hardware and software. CERN-OHL-S hardware designs, AGPL code and a Docker Compose stack you run yourself.

Where it stands

Note

The platform software runs end to end today, with a simulator standing in for real machines. I am now wiring the four physical nodes and preparing to train the model on real readings.

Milestone What it covers
Verify: full local test The whole stack run locally, every page walked end to end
Community: Discord server A scripted Discord server for support, each board and show and tell
Launch: external services The API, dashboard, docs and status page online, with email, SMS and social sign-in
Hardware: physical nodes Every sensor tested on real machines, the model trained on that data, then PCBs and enclosures

Built with

Languages

Python TypeScript C++ Rust Go MicroPython
Python TypeScript C++ Rust Go MicroPython

Backend and data

FastAPI SQLAlchemy scikit-learn PostgreSQL Redis
FastAPI SQLAlchemy scikit-learn PostgreSQL Redis

Dashboard

Next.js Tailwind CSS
Next.js Tailwind CSS

Sensor nodes

ESP32 STM32 CMSIS-DSP Arduino Raspberry Pi
ESP32 STM32 CMSIS-DSP Arduino Raspberry Pi

Hardware design

Proteus KiCad
Proteus KiCad

Infrastructure

Docker Prometheus Grafana
Docker Prometheus Grafana
Layer Stack
Sensor nodes C and C++ on the ESP32, STM32 (CMSIS-DSP) and Arduino Nano, MicroPython on the Pico 2W
Edge gateway Rust
Backend Python, FastAPI, SQLAlchemy and scikit-learn
Data PostgreSQL and Redis
Dashboard TypeScript, Next.js and Tailwind CSS
Developer tools Python SDK and simulator, Go CLI (phaemosctl)
Hardware Proteus for circuit simulation, KiCad for schematics and PCB layouts
Infrastructure Docker Compose, Prometheus and Grafana

Repositories

Repository What it is
phaemos The monorepo where all development happens. Start here
backend FastAPI ingest, alerting, tickets and anomaly scoring
frontend Next.js live monitoring dashboard
firmware Firmware for the ESP32, STM32, Arduino Nano and Pico 2W nodes
hardware Wiring tables, schematics, PCB layouts and the parts inventory
edge Rust store-and-forward gateway
client Python SDK, telemetry simulator and the phaemosctl Go tool
infra Docker Compose stack, monitoring and reporting SQL

Every component repository is a read-only copy published from the monorepo. Issues, discussions and pull requests all go to phaemos/phaemos.

Get involved

Licence

The software is licensed under AGPL-3.0-or-later and the hardware designs under CERN-OHL-S-2.0. NOTICE.md explains which licence covers what.

Pinned Loading

  1. phaemos phaemos Public

    Open industrial IoT platform for predictive maintenance: four sensor nodes, a FastAPI backend, Isolation Forest anomaly detection and a live Next.js dashboard. Reveal before failure.

    TypeScript 3 1

  2. edge edge Public

    PHAEMOS edge gateway in Rust: spools sensor readings to disk and forwards them to the API in order, so an outage loses nothing. Read-only copy published from phaemos/phaemos.

    Rust 1

  3. frontend frontend Public

    PHAEMOS dashboard: Next.js live monitoring with real-time sensor grids, telemetry charts and maintenance ticket workflows. Read-only copy published from phaemos/phaemos.

    TypeScript 1

  4. backend backend Public

    PHAEMOS backend: FastAPI REST and WebSocket ingestion, Isolation Forest anomaly scoring, alert rules, tickets and PostgreSQL storage. Read-only copy published from phaemos/phaemos.

    Python 1

  5. firmware firmware Public

    Firmware for the four PHAEMOS sensor nodes: ESP32 gateway, STM32 Black Pill vibration FFT, Arduino Nano and Pico 2W MicroPython. Read-only copy published from phaemos/phaemos.

    C++ 1

  6. hardware hardware Public

    Hardware for the four PHAEMOS sensor nodes: Proteus schematics, PCB layout notes, wiring tables and the parts inventory. Read-only copy published from phaemos/phaemos.

    1

Repositories

Showing 9 of 9 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…