The Orchestration Engine for Your Homelab

Not just a data hub — an orchestration center that connects isolated self-hosted apps into a unified, programmable data stream.

Chaos to Order

In a typical homelab, dozens of self-hosted apps run independently. Each has its own API, auth model, pagination convention, and data format.

Before Flowbot

  • Dozens of independent apps under /home/
  • Fragmented APIs with no unified interface
  • Different authentication models per app
  • Inconsistent pagination: offset, page, cursor, token
  • No cross-service automation
  • No audit trail for data operations
How do I make all these apps work together?

With Flowbot

  • Auto-discovery of apps via Homelab Scanner
  • Unified capability abstraction (bookmark, archive, reader, ...)
  • Single AuthContext across all surfaces
  • Standard pagination: limit + opaque cursor
  • Declarative Pipelines for cross-service data flow
  • Durable events, execution history, full audit trail

Modular. Orthogonal. Composable.

Each capability abstracts over one or more providers, exposing a unified invocation pattern regardless of the underlying app.

Declarative Pipeline

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"

App Discovery

Homelab Scanner automatically scans docker-compose.yaml and registers apps. Bind apps to capabilities with one command.

Unified Interfaces

Every capability is accessible through every interaction surface. Chat is just one of many.

REST CLI Chat Form Webhook Cron Workflow

AuthContext

Single authentication context that spans REST, CLI, Chat, Webhook, Cron, Pipeline, and Workflow. No per-app auth fragmentation.

Standard Errors & Pagination

All providers wrapped in adapter layer with ErrNotFound, ErrForbidden, ErrProvider. Pagination unified as limit + opaque cursor.

Audit Trail & Replay

Every event, pipeline run, and operation is persisted. Traceable, recoverable, and replayable.

2026-04-30T22:14:03Z [pipeline:archive-on-bookmark] triggered by bookmark.created
2026-04-30T22:14:03Z [pipeline:archive-on-bookmark] step 1/2 archive.submit -> OK
2026-04-30T22:14:04Z [pipeline:archive-on-bookmark] step 2/2 notify.send -> OK
2026-04-30T22:14:04Z [pipeline:archive-on-bookmark] completed in 1.2s
2026-04-30T22:15:00Z [pipeline:backup-weekly] step 4/5 archive.create -> ERR_PROVIDER

Composable Automation

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.

cron trigger
reader.fetch
llm.summarize
bookmark.create
notify.send

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})