Areas we serve

Self-Hosted Kibitzr: YAML Page Watches Without Another Dashboard

You already know the loop: open the same URL, squint at a CSS-shifted price, close the tab, repeat at lunch. Browser extensions forget cookies. Hosted "page watch" tools want an account and a copy of every fetch. Kibitzr is the opposite personality: one YAML file, a Python process, and a ping when the page actually changed.

Kibitzr (kibitzr/kibitzr, ~720 GitHub stars, MIT, Python) calls itself a personal web assistant. You describe checks in kibitzr.yml: fetch a URL (or run a shell script), run transforms (CSS, XPath, text, Jinja, JSON, git-diff style changes), then notify. Docs live at kibitzr.readthedocs.io.

Fetch, transform, notify

That is the whole pipeline. A check has a name, a period (or a richer schedule), a source, and a list of transforms and notifiers. CSS selector first, then text, so you are not alerting on the cookie banner. If the transform output is empty, notifiers stay quiet.

checks:
  - name: Example time
    url: https://www.worldtimeserver.com/current_time_in_US-NY.aspx
    transform:
      - css: "span#theTime"
      - text
    notify:
      - python: print(content)
    period: 15

Notifiers include SMTP, Mailgun, Slack, Telegram, Discord, ntfy, Gotify, Twilio, Zapier hooks, plus Python or shell. Put tokens in kibitzr-creds.yml next to the config, mode 600, not in git. Selenium covers JS-heavy pages: delay after load, form helpers, or a Python scenario on the driver. Fetches can also be SSH or an arbitrary script when HTTP is not enough.

Vs changedetection.io and Huginn

changedetection.io is the Docker UI most homelabs pick: click a URL, pick a CSS filter, get Discord. Kibitzr has no dashboard. You edit YAML, run kibitzr, and live in the log. That is a feature if you want checks in git and no extra web port.

Huginn is a full agent graph with a Rails UI. Kibitzr is one process and a config file. If you need RSS-to-Slack plus ten other event types, Huginn (or n8n) is bigger. If you need "watch these five pages and ntfy me," Kibitzr is closer to a cron job with taste.

Why self-host?

The marketing line on the project site is "trust no one with your credentials." That is the point when checks hit a bank login, a VPN-only status page, or a cookie jar Selenium keeps. Hosted watchers would see the same HTML you see after auth. MIT license, tiny VM, credentials on disk you control.

Be honest about maintenance. The last tagged PyPI release in the public changelog is 7.0.6 (early 2024); the repo still gets commits, but this is not a venture-backed SaaS. Selenium and Firefox are the heavy path. Simple HTTP + CSS is light. Scraping still has robots.txt, rate limits, and ToS; Kibitzr does not make those optional.

Quick start

pip install kibitzr
# write kibitzr.yml, then:
kibitzr once    # one pass
kibitzr         # loop

Docker (official docs use peterdemin/kibitzr):

mkdir kzr-example && cd kzr-example
docker run -v "$PWD":/root --rm peterdemin/kibitzr init
docker run -v "$PWD":/root --rm peterdemin/kibitzr run

Config lookup order is ./kibitzr.yml, then ~/.config/kibitzr/kibitzr.yml, then ~/kibitzr.yml. There is no auth UI because there is no UI. If you put it on a VPS, lock down SSH and the creds file; do not publish the YAML.

Who it is for

Good fit: people who already think in YAML; one-off watches (library releases, CI status, "is my passport page updated"); ntfy/Telegram users who refuse another web app; scripts that need a browser for one login.

Skip it: if you want a pretty dashboard and shared team access (changedetection or Huginn); if you need a plugin marketplace (Kestra/n8n); if you will not maintain Firefox for JS pages.

Hosting in Canada

Kibitzr is happy on a small CloudBox VPS. Back up kibitzr.yml and the stash if you use it. Fetch from Canada if the page you watch is geo-sensitive. Keep polling polite. Pair with Healthchecks if the watcher itself must not die silently.

Bottom line

Kibitzr is a personal page-watcher for people who would rather commit YAML than click a GUI. It is not Huginn, and it is not changedetection.io. It is a quiet process that fetches, crops, and pokes you. If that is the job, it is still a good small tool.

Talk with Swift Host if you want a tiny Canadian VPS for Kibitzr (or changedetection, if you decide you want a UI after all). We are in St. Albert and actually answer the phone.

Tags:
  • Kibitzr
  • Web Monitor
  • YAML
  • Self-Hosted
  • Python

Need Help With Your Hosting?

Tell us about your application — we respond within 1 hour with honest recommendations.