How to Follow GitHub Releases in an RSS Reader
Every repository has a release feed
GitHub publishes a feed of releases for every public repository. Add /releases.atom to the end of the repository's address:
https://github.com/OWNER/REPO/releases.atomFor the GitHub CLI, whose repository is cli/cli, that's:
https://github.com/cli/cli/releases.atomThe feed is in Atom, a feed format that RSS readers handle the same way as RSS. Each entry is one release, with the release title, a link to the release page, the publish time and the release notes as the maintainers wrote them on GitHub. The feed holds the 10 most recent releases. You don't need a GitHub account, a token or a third-party service to use it.
Add a release feed to SereneReader
- Open the repository on GitHub and copy the
OWNER/REPOpart of the address, for examplecli/cli. - Build the feed URL:
https://github.com/cli/cli/releases.atom. - In SereneReader, click Add feed at the bottom of the sidebar and paste the URL into Feed URL.
- Fill in Custom title. GitHub names the feed after the repository only, so the GitHub CLI feed arrives as "Release notes from cli". A title such as "GitHub CLI releases" is easier to find in the sidebar.
- Pick a Folder if you have one for releases, then click Add feed.
New releases then arrive with your other articles, and the release notes open in the reader like any other post.
Keep release feeds in one folder
If you follow more than a few projects, make a folder for them. Click New folder in the sidebar, call it something like "Releases", and choose it when you add each feed. Open the folder when you want to see what changed in the tools you use, and leave it closed the rest of the time.
Other feeds GitHub publishes
The same pattern works for a few other pages. We checked each of these against real repositories on November 3, 2026.
| What you want to follow | Feed URL | What each entry contains |
|---|---|---|
| Releases | https://github.com/OWNER/REPO/releases.atom |
Release title and full release notes (10 most recent) |
| Tags | https://github.com/OWNER/REPO/tags.atom |
Tag or release title, with the tagged commit's message instead of the release notes (10 most recent) |
| Commits on a branch | https://github.com/OWNER/REPO/commits/BRANCH.atom |
Commit message (20 most recent) |
| Commits to one file or folder | https://github.com/OWNER/REPO/commits/BRANCH/PATH.atom |
Commit message for commits that touched that path (20 most recent) |
| Discussions | https://github.com/OWNER/REPO/discussions.atom |
New discussions, for repositories that have Discussions turned on |
| A user's public activity | https://github.com/USER.atom |
Pushes, deleted branches and other public events (30 most recent) |
Some copy-paste examples:
https://github.com/cli/cli/tags.atom
https://github.com/cli/cli/commits/trunk.atom
https://github.com/cli/cli/commits.atom
https://github.com/cli/cli/discussions.atom
https://github.com/vitejs/vite/commits/main/packages/vite/CHANGELOG.md.atom
https://github.com/torvalds.atomA few details that help:
/commits.atomwithout a branch follows the repository's default branch. Forcli/cliit returns the same entries as/commits/trunk.atom.- A branch that doesn't exist returns a 404 error, so check the branch name if a reader says it can't find the feed.
- The file feed is useful for changelogs. Some projects write their notes in a
CHANGELOG.mdfile instead of in GitHub releases. Following commits to that file tells you when the changelog changes, as in the Vite example above. - Projects that tag versions without publishing GitHub releases still have a working release feed. Linux and Go publish no GitHub releases, and their
releases.atomfeeds list their tags instead. The entry text is the commit message, so it's short.
What about a whole organization?
GitHub doesn't publish a feed of releases across an organization. https://github.com/ORG.atom returns a valid feed, but it holds organization events such as people being added to repositories. For the cli and github organizations it was empty. https://github.com/orgs/ORG.atom returns a web page, not a feed.
To follow every repository in an organization, subscribe to each repository's release feed. You don't need to do that by hand: the script below asks GitHub's API for the organization's public repositories and writes an OPML file, the format readers use to import a list of feeds. It needs curl and jq, reads up to 100 repositories, and skips archived ones.
ORG=cli
curl -s "https://api.github.com/orgs/$ORG/repos?per_page=100&type=public" \
| jq -r --arg org "$ORG" '
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
"<opml version=\"2.0\">",
" <head><title>\($org) releases</title></head>",
" <body>",
" <outline text=\"\($org) releases\">",
(.[] | select(.archived | not) | " <outline type=\"rss\" text=\"\(.full_name)\" xmlUrl=\"https://github.com/\(.full_name)/releases.atom\"/>"),
" </outline>",
" </body>",
"</opml>"' > "$ORG-releases.opml"Change ORG to the organization you want, run it, and import the file: in SereneReader, click Add feed, then Import OPML. The feeds land in one folder, named "cli releases" in this example. Large organizations can have hundreds of repositories, so check the file before you import it. On the Free plan an import stops at the 150-feed limit.
Can you skip pre-releases?
Not in the feed itself. The release feed includes pre-releases, and nothing in an entry marks it as one. We checked with TypeScript: GitHub marks "TypeScript 7.1 Beta" as a pre-release, and its feed entry looks the same as a stable release. Adding ?prerelease=false to the feed URL doesn't change what GitHub returns.
What you can filter on is the release title. Many projects put "beta", "rc" or "alpha" in the names of pre-releases. In SereneReader, add a phrase under Settings > Data > Hidden phrases, or open a release, click Hide article, and choose Hide by phrase. Articles whose title or summary contains the phrase are hidden, including ones that arrive later. For example, the phrase -rc hides Linux release candidates such as v7.4-rc1.
Pick the phrase with care. Hidden phrases apply to every feed you follow, and they match the summary as well as the title. A phrase like beta also hides a stable release whose notes mention a beta, and posts in your other feeds that use the word.
One more thing to watch for: a repository that holds several packages often publishes releases for all of them in the same feed. The TypeScript feed also lists releases of its VS Code extension, titled vscode-typescript/v1.0.1. A hidden phrase such as vscode-typescript/ removes those.
Read releases with an AI agent
If you follow many projects, you may want a summary instead of every set of notes. SereneReader's API returns your articles as JSON, including the ones from release feeds, so an agent or a short script can read the past week's releases and tell you which ones affect you. How to connect your RSS feeds to AI agents walks through the setup. The API is part of the Pro and Team plans.
When a feed isn't enough
A release feed is a quiet way to keep up with the software you use. It has limits:
- The notes are only as good as the release. The feed carries the release text and nothing else. Linux release entries contain only a line like "Linux 7.4-rc1", and the TypeScript beta entry is a link to a blog post. The files attached to a release aren't listed either. For projects like these, follow the project's blog feed or its changelog file as well.
- Private repositories don't work. A private repository's feed returns a 404 error unless you're signed in to GitHub, and an RSS reader fetches feeds without your GitHub session. Use GitHub's own notifications for those (below).
- New releases arrive on the reader's schedule. A reader checks each feed periodically, so a release shows up at the next check, not the moment it's published. That's fine for reading. It isn't the right tool when something has to happen right away.
- Busy feeds can skip entries. The feed only ever holds the 10 most recent releases. A repository that publishes more than 10 releases between two checks, such as a large monorepo on release day, pushes some of them out before a reader sees them.
When those limits matter, use one of these instead:
- GitHub's Watch menu. On the repository page, click Watch, choose Custom, and select Releases. GitHub then sends a notification, and an email if you've turned email on, for each new release. This also works for private repositories you can access.
- A webhook. If a release should start something automatically, such as a build or a deploy, a repository webhook with the release event calls your server when the release is published. You can only add webhooks to repositories you administer.
- Dependency update tools. If the goal is to keep a project's dependencies current, a tool such as Dependabot or Renovate opens pull requests when new versions come out.
For keeping up with the tools you depend on, without another inbox to manage, the feed is usually enough.
Feed URLs and their contents checked against GitHub on November 3, 2026. If a feed stops updating, open its URL in a browser to check that GitHub still serves it.