InfoHub

InfoHub

Overview

InfoHub is a personal homelab project I built to put household and machine status on one Lenovo Tab One. A Go API on an OCI VM owns enrollment, telemetry, and SQLite history, while low-impact agents on Linux and Windows collect host metrics and run togglable modules as child processes. The React PWA is a swipeable kiosk: each module ID maps to a purpose-built page, covering HomeBot, RustTools, UPS, weather, commute, game-server hosting, and more—without shipping frontend code from the modules themselves.

Role: Creator

Dates: July 2026 - Current

Platform: Linux/Windows agents, Web (self-hosted API + tablet PWA)

GoReactTypeScriptSQLiteLinuxWindows

Duties

InfoHub tablet overview with weather, commute, and host tiles

Overview — weather, commute, and host health on the Lenovo Tab One PWA

InfoHub system page with CPU, RAM, temperature, and 24-hour charts

System — host telemetry, expiry warnings, and 24-hour charts

InfoHub HomeBot module snapshot on a host

HomeBot module — household snapshot from local SQLite on the same host

Process

The project started from a practical need: see household apps, game servers, and the machines that run them at a glance on a wall tablet, without opening a dozen dashboards or putting API keys for every service on the kiosk.

Architecture. The API is the source of truth (latest state plus a 7-day metric history). Agents authenticate, heartbeat, and push host plus module payloads. Modules are small executables with a JSON stdin/stdout contract; for HomeBot and RustTools they read the local database on that VM instead of calling those apps’ HTTP APIs.

Product surface. The PWA page list comes from the server; swipeable module pages live in a compile-time React registry. Unknown module IDs render a safe fallback. Overview tiles cover weather, commute, and host health; dedicated pages cover UPS, OCI free-tier caps, speedtest, AMP instances, and playit.gg tunnels.

Reliability and safety. Credentials are stored hashed. Tailscale limits who can reach the API; application auth is still required. Module runs are bounded by timeout and output size, and enablement is per-host so a collector cannot be turned on where it is not installed.

Artifacts: GitHub repository