Goalfeed docs

Self-hosted goal detection for NHL, MLB, CFL, and NFL — fires a Home Assistant event the instant your team scores, or streams the same thing over REST and WebSocket for anything else you want to build.

This documentation follows the Diátaxis split: a tutorial to learn by doing, how-to guides for specific tasks, reference for exhaustive lookup, and explanation for the reasoning behind how Goalfeed works. Each mode stays in its own page — the reference pages don't narrate, and the tutorial doesn't try to be exhaustive.

New to Goalfeed?

Tutorial

Getting started

Binary to a visible goal event in about five minutes, using test-goals so you don't wait for a real game.

How-to guides

Task-oriented recipes for a specific outcome.

Install

Install

Every channel: Home Assistant add-on, prebuilt binaries, from source, and Docker's current caveats.

Home Assistant

Home Assistant automations

The event that fires, and real working automation YAML for the goal horn and a light flash.

Troubleshooting

Troubleshooting

Real error text Goalfeed produces, and the next step for each.

Reference

Exhaustive, dense, and neutral — every key, endpoint, and message type with its type, default, and a worked example.

Config

Configuration

Every CLI flag, YAML key, and GOALFEED_* env var.

REST

API

Every HTTP endpoint: params, response shape, a runnable curl example.

WebSocket

WebSocket

Connection lifecycle, message envelope, and the real (not idealized) event schema.

Leagues

Leagues

Upstream source and honest support tier for every league.

Explanation

How Goalfeed is put together, and why, for readers who want the reasoning rather than a recipe.

Design

Architecture

Clients → services → targets, why polling instead of push, and what a raw score-diff costs you.

Threat model

Security

No API authentication by design, and the two config keys that guard the Home Assistant token.

Elsewhere

Source and issues: github.com/goalfeed/goalfeed. Questions and bug reports go through GitHub Issues — that's the only supported contact channel.