Sources

Sources are modules that run continuously (or on a schedule) and emit events into the core via Emit(event).

See spec §6.

Supported sources

Source Planning page
HTTP ingest http-ingest
MQTT listener mqtt-source
Telegram bot telegram-source
Deferred capture (capture-classifier) deferred-capture

Later

  • Home Assistant WebSocket tapstate_changed events from HA's /api/websocket. See ha-source.

Contract (conceptual)

type Source interface {
    Name() string
    Run(ctx context.Context, emit func(Event)) error
}

Realized as RPC over the module socket (§8), not an in-process Go interface.

Batch importers (Google Takeout, photo folders) can POST to HTTP ingest as standalone scripts — no full Trove source module required for occasional jobs.