factoryflow / README.md
oabolade23's picture
Honor GRADIO_SHARE and GRADIO_PORT env vars; add live demo links
751f645
|
Raw
History Blame Contribute Delete
4.75 kB
---
title: FactoryFlow
emoji: ⚙️
colorFrom: red
colorTo: yellow
sdk: docker
app_port: 7860
pinned: false
---
# FactoryFlow
**Autonomous predictive maintenance and parts procurement for small manufacturers.**
Vibration sensor → MOMENT-1-large anomaly detection on AMD MI300X → CrewAI
agents (Qwen3-8B) → Proxlock authorization → X402 programmable payment.
End-to-end autonomous procurement with one human-in-the-loop step.
Built for the **AMD x LabLab.ai Developer Hackathon** (May 2026).
## Live demo
- **AMD MI300X (DigitalOcean):** http://165.245.133.72:7860 — full pipeline running on AMD GPU
- **Hugging Face Space (CPU mirror):** https://huggingface.co/spaces/oabolade23/factoryflow
- **Source:** https://github.com/oabolade/factoryflow
---
## What it does
Manufacturers lose **~$50k per hour** of unplanned machine downtime. FactoryFlow
turns a vibration sensor on the factory floor into an autonomous procurement
loop:
1. A simulated RPi sensor streams 512-point FFT windows over an MCP server
2. **MOMENT-1-large** scores each window for bearing/gear/imbalance faults on
AMD GPU hardware (MI300X via ROCm)
3. The **Engineer Agent** maps the dominant fault frequency to a part SKU
4. The **Procurement Agent** (powered by **Qwen3-8B**) scrapes suppliers
via Apify and selects the best price-vs-RUL trade-off
5. **Proxlock** gates the purchase with a human authorization step
6. **X402** executes the payment programmatically
From sensor spike to confirmed PO: under a minute.
---
## Architecture
```
[RPi sensor sim]
│ MCP / SSE
[AMD MI300X / ROCm]
MOMENT-1-large → anomaly_score, rul_hours, dominant_hz
Qwen3-8B → agent reasoning backbone
[CrewAI Crew]
Engineer Agent → identify SKU from fault signature
Procurement Agent → Apify scrape, pick best supplier
[Proxlock] ── human-in-the-loop authorization
[X402] ── autonomous programmable payment
[Gradio HF Space] — live demo UI (this Space)
```
---
## Prize tracks
- **AMD MI300X** — MOMENT inference + Qwen3-8B serving both run on AMD ROCm hardware
- **Qwen / vLLM** — Qwen3-8B is the CrewAI LLM backbone via vLLM (`OPENAI_API_BASE` swap)
- **Hugging Face** — this Docker Space; share the URL to drive likes
- **X402** — autonomous payment execution on agent decision
- **MCP** — sensor stream is exposed as an MCP server with SSE transport
- **Apify** — supplier discovery via the `apify/web-scraper` actor
- **MindsDB** — procurement history queried via SQL+AI
---
## Local run
```bash
python3.12 -m venv .venv && source .venv/bin/activate
pip install torch # CPU/MPS for local dev
pip install -r requirements.txt
pip install --no-deps momentfm==0.1.4 # see note below
cp .env.example .env # add OPENAI_API_KEY
PYTHONPATH=. python -m src.demo.app
```
Open http://localhost:7860. The chart auto-polls every 2 seconds.
### Smoke tests by checkpoint
```bash
PYTHONPATH=. python -m src.inference.rocm_check # device detection
PYTHONPATH=. python scripts/smoke.py # MOMENT inference
PYTHONPATH=. python -m src.agents.orchestrator # full agent cycle
PYTHONPATH=. python -m src.sensor.mcp_server # MCP SSE on :8765
```
---
## AMD GPU evidence
Run `python -m src.inference.rocm_check` on the AMD cloud box. Expected output:
```
torch: 2.x.x+rocm6.x
backend: rocm
torch_device: cuda
name: AMD Instinct MI300X
vram_gb: 192.0
runtime_version: 6.x
✓ AMD ROCm GPU detected — ready for MI300X demo run.
```
A screenshot of this output is included in the LabLab submission.
---
## Demo mode vs live
`DEMO_MODE=true` (default) keeps the demo working without third-party API keys
by using fixtures for Apify, mock approvals for Proxlock, and simulated
transactions for X402. The UI is visually identical to live operation.
To run live, set `DEMO_MODE=false` and fill in: `APIFY_API_TOKEN`,
`PROXLOCK_API_KEY` + `PROXLOCK_DEVICE_ID`, `X402_API_KEY` + `X402_MERCHANT_ID`,
and (optional) `MINDSDB_*`.
---
## Notes
- **`momentfm` install:** the package on PyPI hard-pins old `numpy` /
`transformers` that conflict with CrewAI and Gradio. Install it with
`--no-deps` after the rest of `requirements.txt` — the actual code works
fine on modern stacks.
- **HF Space hardware:** this Space runs MOMENT on CPU (~1–2s per window).
The live judge demo runs on a separate AMD MI300X cloud box.
---
## Repo layout
See `CLAUDE.md` and `docs/architecture.md` for the full layout and per-file
responsibilities. `memory.md` tracks live build state.