Skip to content

SheetMetalConnect/UMH-Core-Stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Luke's UMH Starter Kit

UMH Core TimescaleDB Grafana PgBouncer HiveMQ CE Node-RED NGINX Docker Compose

Opinionated, batteries-included starter kit to build your Unified Namespace with UMH Core. One docker compose up -d and you're running. Includes AI agents for autonomous stack operation via Claude Code.

This is a community starter kit to get you up and running quickly. For production deployments, enterprise support, and professional services, reach out to the UMH team directly -- they're the experts.

Official docs, configuration reference, and support: docs.umh.app

What's Inside

Layer What you get
UMH Official UMH Core, TimescaleDB, PgBouncer, Grafana
Addons HiveMQ CE (MQTT), Node-RED, Portainer, NGINX, PostgreSQL MCP
Data Flows Historian, ERP dedup + history, MQTT/OPC-UA/Tasmota bridges
Schema asset, tag, tag_string hypertables + ERP tables
AI Agents 5 Claude Code agents + CLI for autonomous operation

Quick Start

git clone https://github.com/SheetMetalConnect/UMH-Core-Stack.git
cd UMH-Core-Stack

cp .env.example .env
# Edit .env — paste your AUTH_TOKEN from https://management.umh.app

docker compose up -d
docker compose ps

Access Points

Service URL Credentials
Grafana http://localhost:3000 admin / changeme
Node-RED http://localhost:1880 --
Portainer http://localhost:9000 set on first login
MQTT mqtt://localhost:1883 --
PostgreSQL localhost:5432 postgres / changeme
MCP (Postgres) http://localhost:3003 --
NGINX http://localhost:80 --

Deploy Historian

Data does not automatically persist to TimescaleDB -- you need a DataFlow:

  1. Open Management Console -> your instance -> Data Flows -> Stand-alone
  2. Click Add, paste contents of examples/databridges/flows/historian.yaml
  3. Deploy

AI Agents

Five specialized Claude Code agents that can autonomously operate the UMH stack. Each agent has specific tools, MCP integrations, and domain knowledge.

Agent What it does
umh-operator Stack health, logs, restarts, service diagnostics
umh-flow Deploy/debug Benthos dataflows, protocol bridges (OPC-UA, MQTT, S7, Modbus)
umh-db Query historian data, design schemas, write SQL migrations
umh-grafana Manage dashboards, test datasources, create panels, export/import
umh-network Scan for industrial devices, identify protocols, suggest configs
umh-docs Fast documentation lookup via MCP (UMH docs + Benthos/Redpanda)
umh-maintainer Repo hygiene, release prep, doc consistency, dependency updates

Install Agents Into Any Project

The agent kit is portable -- symlink it into any UMH project:

# One-click install (agents + CLI + MCP servers)
.agents/install.sh /path/to/your-project

# Or symlink manually
mkdir -p /path/to/your-project/.claude/agents
ln -s $(pwd)/.agents/*.md /path/to/your-project/.claude/agents/
cp .claude/settings.json /path/to/your-project/.claude/settings.json

MCP Servers (Documentation Lookup)

Three MCP servers are configured in .claude/settings.json -- available automatically when you clone the repo:

Server URL Purpose
gitbook docs.umh.app UMH Core docs, config reference, benthos-umh plugins
redpanda docs.redpanda.com Benthos processors, bloblang functions
postgres-docs mcp.tigerdata.com TimescaleDB query patterns, SQL reference

No manual claude mcp add needed -- agents use these automatically for documentation lookup.

CLI Tool

The agents use umh CLI (.agents/tools/umh) -- all output is JSON, no interactive prompts. Works with both docker-compose and standalone container deployments.

umh status                          # Service health
umh flow ls                         # List dataflows
umh flow add historian flows/h.yaml # Deploy a flow
umh topic ls --filter "_raw"        # Browse UNS topics
umh db query "SELECT * FROM tag ORDER BY time DESC LIMIT 5"
umh grafana dashboards              # List Grafana dashboards
umh grafana ds-test                 # Test datasource health
umh scan 192.168.1.0/24 --probe     # Find industrial devices

Repo Structure

.
├── docker-compose.yaml          # Full stack
├── .env.example                 # Environment template -- start here
├── nginx.conf                   # Reverse proxy config
├── .agents/                     # AI agent kit (symlink-friendly)
│   ├── install.sh               # One-click agent installer
│   ├── umh-operator.md          # Stack operator agent
│   ├── umh-flow.md              # Dataflow expert agent
│   ├── umh-db.md                # Database specialist agent
│   ├── umh-grafana.md           # Grafana dashboard agent
│   ├── umh-network.md           # Network discovery agent
│   ├── umh-docs.md              # Documentation lookup agent
│   ├── umh-maintainer.md        # Repo maintainer agent
│   └── tools/umh               # CLI for agents (JSON output)
├── configs/
│   ├── nodered/settings.js
│   ├── grafana/provisioning/    # Datasources + dashboards
│   └── timescaledb-init/        # Historian schema (auto-runs on first boot)
├── examples/
│   ├── databridges/flows/       # DataFlow templates (historian, ERP, bridges)
│   ├── databridges/sql/         # ERP schema extensions
│   ├── simulator/               # MetalFab simulator overlay + flows
│   ├── historian/               # Reference overlay (not required)
│   └── mcp/                     # Standalone MCP overlay
└── docs/
    ├── operations.md            # Quick start and common commands
    ├── networking.md            # Network architecture, ports, DNS
    ├── data-modeling.md         # _raw vs data contracts
    ├── historian.md             # TimescaleDB setup, backup, sizing
    ├── integration-patterns.md  # ERP integration (3 patterns)
    ├── deployment-lessons.md    # Production-tested lessons
    └── troubleshooting.md       # Common issues and fixes

Passwords

All default passwords are changeme. Find and replace before production:

grep -r "changeme" . --include="*.yaml" --include="*.example" --include="*.sh"

Production Checklist

  • Replace all changeme passwords (see above)
  • Set AUTH_TOKEN from Management Console
  • Configure TLS -- place certs in ./certs, uncomment HTTPS block in nginx.conf
  • Restrict NGINX CORS headers (currently allows *)
  • Set up database backups

Demo Data (Optional)

Want to see data flowing end-to-end? Add the MetalFab UNS Simulator -- 22 simulated machines publishing sensor data through the full pipeline:

docker compose -f docker-compose.yaml -f examples/simulator/docker-compose.simulator.yaml up -d

Simulator -> HiveMQ -> UMH Core -> historian flow -> TimescaleDB -> Grafana. The simulator publishes both _raw (unvalidated) and _energy-monitor_v1 (validated data contract) topics -- see docs/data-modeling.md for the difference.

Documentation

Guide What it covers
Operations Quick start, common commands, updating
Networking Network architecture, ports, DNS, NGINX, security
Data Modeling _raw vs data contracts, topic structure
Historian TimescaleDB schema, sizing, backup
Integration Patterns 3 ERP integration patterns
Deployment Lessons Production-tested lessons (DSN, memory, migrations)
Troubleshooting Common issues and quick fixes

Contributing

Community-driven deployment package for UMH. Contributions welcome.

  • Test with fresh .env from .env.example
  • Verify: docker compose up -d && docker compose ps
  • Validate: docker compose config

Scaling Beyond This Starter Kit

This repo is designed to get small and medium businesses started with UMH quickly. When you're ready to scale -- multi-site deployments, enterprise integrations, high-availability, or dedicated support -- the UMH team offers professional services and enterprise editions:

License & Attribution

This project is licensed under the Apache License 2.0.

This is a community deployment template that supports the UMH mission of making industrial data accessible. It does not modify or redistribute UMH source code -- it pulls official Docker images and adds opinionated configuration, AI agents, and tooling to help teams get started faster.

Third-party components

Component License Source
UMH Core Apache 2.0 United Manufacturing Hub GmbH
TimescaleDB Timescale License / Apache 2.0 Timescale, Inc.
Grafana AGPL 3.0 Grafana Labs
HiveMQ CE Apache 2.0 HiveMQ GmbH
Node-RED Apache 2.0 OpenJS Foundation
Portainer CE Zlib Portainer.io
NGINX BSD-2 F5, Inc.

All trademarks remain property of their respective owners. "UMH" is used to describe compatibility with the United Manufacturing Hub platform.

Maintained by Luke van Enkhuizen -- independent, not affiliated with UMH.

Resources

About

⚡ Luke's UMH Starter Kit — batteries-included UMH Core stack to build your Unified Namespace. One command to deploy.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors