USE CASES
The release you'd have missed
- Persona
- Priya, solo founder of a CLI tool built on Bun.
- Scene
- Friday, 6pm. Bun ships a release that changes a flag Priya's CLI depends on. Priya finds out on Monday, from an issue titled "broken since the weekend".
The old loop
Every morning: open GitHub releases, scroll, close the tab. Sometimes ask an assistant “anything new in Bun?”, which works until the day it doesn’t get asked.
The new loop
One sentence to Claude Code: “Tell me in Slack when oven-sh/bun ships a release.” It clones the GitHub release watcher, shadows it (ten tags read, remembered, nothing sent) and deploys it. Every hour, Caedos fetches the release list, diffs the tags against memory and, on a new one, queues the Slack message. Priya pressed Allow after the first one.
The one capability that matters
The fast-path diff. Every hour it checks; almost every hour it’s idle · $0. No model is ever called.
The synth
# Watches a GitHub repo for new releases via the public API (no token needed
# for public repos). Edit the repo in the URL.
blueprint:
id: github-release-watcher
title: GitHub release watcher
description: >-
Alerts you when a repository publishes a new release. Works on any public
repo with no GitHub token. Ships watching Bun; edit the repo in the URL.
config:
synth:
name: Release watcher
goal: Tell me when the repo I'm watching ships a new release.
schedule_seconds: 3600
requires_credentials:
- WEBHOOK_URL
sources:
- id: releases
primitive: rest_api
config:
url: https://api.github.com/repos/oven-sh/bun/releases
max_pages: 1
max_items: 10
transforms:
- id: tags
primitive: extract
config:
items: $sources.releases.items
field: tag_name
fast_path:
primitive: fast_path_diff
inputs:
current: $transforms.tags.values
previous: $state.seen_tags
actions:
- if: $fast_path.triggered
primitive: notify_webhook
config:
url: $secrets.WEBHOOK_URL
body:
alert: New release published
releases: $fast_path.diff
- always: true
primitive: write_state
config:
seen_tags: $transforms.tags.values
checked_at: $tick.started_at What it costs
Cost: $0 in model calls.