| title | Getting Started | ||
|---|---|---|---|
| type | tutorial | ||
| tags |
|
||
| summary | Build rss2msg and run your first one-shot and daemon polls against a feed. | ||
| updated | 2026-05-30 |
If you just want to run rss2msg, install a pre-built binary instead of building from source.
Homebrew (macOS):
brew install IAmBod/tap/rss2msg
rss2msg versionThis pulls the cask from the project's Homebrew tap, which the release pipeline updates on every stable tag. (Homebrew Cask is macOS-only; on Linux use a package or the image below.)
Linux packages: download a .deb / .rpm / .apk for your architecture from the
GitHub Releases page and install it with
your package manager (e.g. sudo dpkg -i rss2msg_*_amd64.deb).
Other options: download a raw .tar.gz / .zip binary from the same
Releases page, or run the container
image — see Run with Docker.
To build from source instead, read on.
task build # produces ./rss2msg
task test # unit tests (fast, no containers)
task test-integration # adds testcontainers (Postgres, Kafka, Redis, LocalStack)
task vet # go vet ./...
task tidy # go mod tidy
task # list all tasksRequires Go 1.22+ and task (go install github.com/go-task/task/v3/cmd/task@latest, or brew install go-task). Integration tests require a working Docker daemon.
# 1. Build
task build
# 2. Run Postgres + Kafka locally (skip what you don't need)
docker run -d --name pg -e POSTGRES_PASSWORD=test -p 5432:5432 postgres:16-alpine
docker run -d --name kafka -p 9092:9092 confluentinc/cp-kafka:7.6.0
# 3. Tell the example config where to find Postgres
export POSTGRES_DSN="postgres://postgres:test@localhost:5432/postgres?sslmode=disable"
# 4. One-shot: poll every feed once, publish, exit
./rss2msg run-once --config examples/config.example.yaml
# 5. Inspect what landed in Postgres
psql "$POSTGRES_DSN" -c 'SELECT feed_url, item_id, kind, detected_at FROM feed_changes;'
# 6. Or run as a daemon
./rss2msg serve --config examples/config.example.yamlTip: to start from your own copy instead of editing the checked-in example, generate the annotated reference config and edit it in place:
./rss2msg generate-config > config.yaml # or: generate-config -o config.yamlThe output is the same annotated reference as
examples/config.example.yamland runs as-is. See the CLI reference for-o/--force.
For SQS/SNS try LocalStack:
docker run -d --name ls -p 4566:4566 localstack/localstack:3.6
export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test
# add endpoint_url: http://localhost:4566 under each sqs/sns sinkFor multi-instance coordination, see Run Multiple Instances.
- CLI — every command and flag.
- Configure Feeds — replace the example feeds with your own.
- Choose a Sink — send changes somewhere other than the example.