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
| 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 |
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| 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 | -- |
Data does not automatically persist to TimescaleDB -- you need a DataFlow:
- Open Management Console -> your instance -> Data Flows -> Stand-alone
- Click Add, paste contents of
examples/databridges/flows/historian.yaml - Deploy
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 |
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.jsonThree 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.
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.
├── 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
All default passwords are changeme. Find and replace before production:
grep -r "changeme" . --include="*.yaml" --include="*.example" --include="*.sh"- Replace all
changemepasswords (see above) - Set
AUTH_TOKENfrom Management Console - Configure TLS -- place certs in
./certs, uncomment HTTPS block innginx.conf - Restrict NGINX CORS headers (currently allows
*) - Set up database backups
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 -dSimulator -> 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.
| 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 |
Community-driven deployment package for UMH. Contributions welcome.
- Test with fresh
.envfrom.env.example - Verify:
docker compose up -d && docker compose ps - Validate:
docker compose config
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:
- UMH Website -- Contact for enterprise & professional services
- UMH Documentation -- Official guides and configuration reference
- Management Console -- Cloud management for your UMH instances
- UMH GitHub -- Open-source core platform
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.
| 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.
- UMH Documentation -- start here for official guides
- Management Console
- UMH Core Repository