Skip to content

Architecture

IceHive divides responsibilities between a centralized controller, interchangeable collector workers, interchangeable persister workers, and an optional browser frontend.

  External SaaS/APIs (GitHub, Azure, RSS/JMAP feeds, ...)
            |
       collector workloads  -->  RabbitMQ (topic exchanges) -->  persister workloads --> sink databases / files
                 |                                                          ^
                 |                                                          |
                 +------------------> Controller <---------------------------+
                                             |
                                          Frontend UI
  • Controllers authenticate scheduled work, expose an HTTP Connect RPC façade, persist collection recipes (collection_sources) and operator settings (icehive_meta), and issue WorkerBootstrap responses so every worker receives AMQP plus sink credentials without baking secrets into each container.
  • Collectors poll or stream remote systems, publish normalized JSON entities with routing key collector.entities, and report run outcomes back to the controller.
  • Persisters bind durable queues to the same routing key and land rows in MySQL (current production path) or future filesystem sinks.
  • Frontend is a static web bundle that points at the controller base URL (build-time or user-selected) to inspect service heartbeats and configuration.

For concrete deployment patterns (Service layout, configuration mounts, health checks, bootstrapping icehive_meta), read Deploying IceHive.