Not just a data hub — an orchestration center that connects isolated self-hosted apps into a unified, programmable data stream.
In a typical homelab, dozens of self-hosted apps run independently. Each has its own API, auth model, pagination convention, and data format.
/home/
bookmark, archive,
reader, ...)
Each capability abstracts over one or more providers, exposing a unified invocation pattern regardless of the underlying app.
Event-driven, idempotent, auditable cross-service data flows defined in YAML.
# When a new bookmark is saved, archive it & notify trigger: event: "bookmark.created" steps: - action: archive.submit input: $.event.url - action: notify.send input: channel: slack message: "Archived: $.event.url"
Homelab Scanner automatically scans
docker-compose.yaml and registers apps.
Bind apps to capabilities with one command.
Every capability is accessible through every interaction surface. Chat is just one of many.
Single authentication context that spans REST, CLI, Chat, Webhook, Cron, Pipeline, and Workflow. No per-app auth fragmentation.
All providers wrapped in adapter layer with
ErrNotFound, ErrForbidden,
ErrProvider. Pagination unified as
limit + opaque cursor.
Every event, pipeline run, and operation is persisted. Traceable, recoverable, and replayable.
Connect capabilities like building blocks. Each step invokes a capability through the unified ability layer. The DAG execution engine handles parallelism, error recovery, and idempotency.
Built-in step types: Capability,
Message, Fetch,
Feed, LLM,
Docker, Grep,
Unique, Torrent
// Every step invokes through the same pattern result, err := ability.Invoke(ctx, "bookmark", ability.OpList, ability.Params{Limit: 20})