SPB Git forge

spb/websensor

Public
33commits 1branches 0releases
3.4 MBsize
maindefault branch
11 days agolast push
TypeScript 55.4% Python 43.2% SQL 1.2%
65.9 KB · 1,405 lines yaml
Raw Blame History
1# config/sources.d/10-open-source.yaml — open-source foundations, languages, frameworks, Linux/BSD2# distributions and developer tools (2026-09-08). Every sensor below was fetched and parsed by3# `apps/engine/src/validate.ts` before being written; GitHub release/tag Atom feeds are the backbone,4# with the project's own news/blog feed and status page when one exists. Sources whose release stream5# is a firehose (canaries, nightlies, per-package monorepo tags) carry `llm: false`.6sources:7  # ───────────────────────── Foundations ─────────────────────────8  - id: linux-foundation9    name: Linux Foundation10    domain: linuxfoundation.org11    homepage: https://www.linuxfoundation.org12    categories: [open-source, developer, ngo]13    tier: B14    weight: 1.215    aliases: [lf, the linux foundation]16    discover: { rss: true, sitemap: true }17    sensors:18      - { name: blog feed, url: "https://www.linuxfoundation.org/blog/rss.xml", type: RSS, connector: rss, tier: B }19  - id: cncf20    name: Cloud Native Computing Foundation21    domain: cncf.io22    homepage: https://www.cncf.io23    categories: [open-source, developer, cloud]24    tier: B25    weight: 1.226    aliases: [cncf, cloud native computing foundation]27    discover: { rss: true, sitemap: true }28    sensors:29      - { name: news feed, url: "https://www.cncf.io/feed/", type: RSS, connector: rss, tier: B }30  - id: apache31    name: Apache Software Foundation32    domain: apache.org33    homepage: https://www.apache.org34    categories: [open-source, developer]35    tier: B36    weight: 1.237    aliases: [asf, apache software foundation, apache foundation]38    discover: { rss: true, sitemap: false }39    sensors:40      - { name: news feed, url: "https://news.apache.org/feed/", type: RSS, connector: rss, tier: B }41  - id: eclipse42    name: Eclipse Foundation43    domain: eclipse.org44    homepage: https://www.eclipse.org45    categories: [open-source, developer]46    tier: B47    aliases: [eclipse foundation]48    products:49      - { name: Eclipse IDE, type: software, aliases: [eclipse ide] }50      - { name: Jakarta EE, type: software, aliases: [jakarta ee] }51    discover: { rss: true }52    sensors:53      - { name: newsroom feed, url: "https://newsroom.eclipse.org/rss.xml", type: RSS, connector: rss, tier: B }54      - { name: blog feed, url: "https://blogs.eclipse.org/blog/feed", type: RSS, connector: rss, tier: C }55  - id: openjs56    name: OpenJS Foundation57    domain: openjsf.org58    categories: [open-source, developer]59    tier: C60    aliases: [openjs foundation, openjsf]61    discover: { rss: true, sitemap: true, pages: true }62    notes: "No feed; blog is a Next.js shell. Sitemap is the only server-side signal."63    sensors:64      - { name: sitemap, url: "https://openjsf.org/sitemap.xml", type: SITEMAP, connector: sitemap, tier: C, config: { maxUrls: 1000 } }65  - id: rust-foundation66    name: Rust Foundation67    domain: rustfoundation.org68    categories: [open-source, developer]69    tier: B70    aliases: [rust foundation]71    discover: { rss: true }72    sensors:73      - { name: news feed, url: "https://rustfoundation.org/feed/", type: RSS, connector: rss, tier: B }74  - id: openssf75    name: Open Source Security Foundation76    domain: openssf.org77    categories: [open-source, developer, cyber]78    tier: B79    aliases: [openssf, open source security foundation]80    products:81      - { name: Sigstore, type: software }82      - { name: OpenSSF Scorecard, type: software, aliases: [scorecard] }83    discover: { rss: true }84    sensors:85      - { name: blog feed, url: "https://openssf.org/feed/", type: RSS, connector: rss, tier: B }86  - id: python87    extend: true88    aliases: [python software foundation, psf]89    sensors:90      - { name: psf blog feed, url: "https://pyfound.blogspot.com/feeds/posts/default?max-results=25", type: ATOM, connector: rss, tier: B }9192  # ───────────────────────── BSD ─────────────────────────93  - id: freebsd94    name: FreeBSD95    domain: freebsd.org96    homepage: https://www.freebsd.org97    categories: [open-source, developer, infrastructure]98    tier: B99    weight: 1.1100    aliases: [freebsd project, freebsd foundation]101    discover: { rss: true }102    sensors:103      - { name: news feed, url: "https://www.freebsd.org/news/feed.xml", type: RSS, connector: rss, tier: B }104      - { name: security advisories feed, url: "https://www.freebsd.org/security/feed.xml", type: RSS, connector: rss, tier: A }105  - id: openbsd106    name: OpenBSD107    domain: openbsd.org108    homepage: https://www.openbsd.org109    categories: [open-source, developer, infrastructure, cyber]110    tier: B111    weight: 1.1112    aliases: [openbsd project]113    discover: { rss: false, pages: true }114    notes: "No official feed; the per-release errata page (7.9 as of 2026-09) is server-rendered — bump the number at each release. Undeadly is the community OpenBSD Journal."115    sensors:116      - { name: errata 7.9, url: "https://www.openbsd.org/errata79.html", type: HTML, connector: http, tier: B }117      - { name: openbsd journal feed, url: "https://undeadly.org/cgi?action=rss", type: RSS, connector: rss, tier: C }118  - id: netbsd119    name: NetBSD120    domain: netbsd.org121    homepage: https://www.netbsd.org122    categories: [open-source, developer, infrastructure]123    tier: C124    aliases: [netbsd project, netbsd foundation]125    discover: { rss: true }126    sensors:127      - { name: news feed, url: "https://www.netbsd.org/changes/rss-netbsd.xml", type: RSS, connector: rss, tier: C }128129  # ───────────────────────── Linux distributions ─────────────────────────130  - id: linux-kernel131    name: Linux Kernel132    domain: kernel.org133    homepage: https://www.kernel.org134    categories: [open-source, developer, infrastructure]135    tier: A136    weight: 1.4137    aliases: [linux, the linux kernel, kernel.org, linux kernel organization]138    discover: { rss: true }139    sensors:140      - { name: releases api, url: "https://www.kernel.org/releases.json", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: releases, keyField: version, titleTemplate: "Linux {version} ({moniker})", dateField: released.isodate, urlField: source, compareFields: [version, released.isodate, iseol] } }141      - { name: releases feed, url: "https://www.kernel.org/feeds/kdist.xml", type: RSS, connector: rss, tier: A }142  - id: debian143    name: Debian144    domain: debian.org145    homepage: https://www.debian.org146    categories: [open-source, developer, infrastructure]147    tier: A148    weight: 1.3149    aliases: [debian project, debian gnu/linux]150    discover: { rss: true }151    sensors:152      - { name: news feed, url: "https://www.debian.org/News/news", type: RSS, connector: rss, tier: A }153      - { name: security advisories feed, url: "https://www.debian.org/security/dsa-long", type: RSS, connector: rss, tier: S }154  - id: ubuntu155    name: Ubuntu / Canonical156    domain: ubuntu.com157    categories: [open-source, developer, infrastructure, cloud]158    tier: A159    weight: 1.3160    aliases: [canonical, ubuntu linux]161    products:162      - { name: Ubuntu, type: software }163      - { name: Snapcraft, type: software, aliases: [snap] }164      - { name: LXD, type: software }165    discover: { rss: true, status: true }166    sensors:167      - { name: blog feed, url: "https://ubuntu.com/blog/feed", type: RSS, connector: rss, tier: B }168      - { name: security notices feed, url: "https://ubuntu.com/security/notices/rss.xml", type: RSS, connector: rss, tier: S, config: { maxItems: 60 } }169      - { name: canonical blog feed, url: "https://canonical.com/blog/feed", type: RSS, connector: rss, tier: B }170  - id: fedora171    name: Fedora Project172    domain: fedoraproject.org173    categories: [open-source, developer]174    tier: B175    aliases: [fedora, fedora linux]176    discover: { rss: true }177    sensors:178      - { name: fedora magazine feed, url: "https://fedoramagazine.org/feed/", type: RSS, connector: rss, tier: B }179  - id: red-hat180    name: Red Hat181    domain: redhat.com182    homepage: https://www.redhat.com183    categories: [open-source, enterprise, cloud, infrastructure]184    tier: A185    weight: 1.3186    aliases: [redhat, rhel]187    products:188      - { name: Red Hat Enterprise Linux, type: software, aliases: [rhel] }189      - { name: OpenShift, type: software }190      - { name: Ansible Automation Platform, type: software }191    discover: { rss: true, status: true }192    sensors:193      - { name: status, url: "https://status.redhat.com/api/v2/summary.json", type: STATUSPAGE, connector: statuspage, tier: S }194      - { name: blog feed, url: "https://www.redhat.com/en/rss/blog", type: RSS, connector: rss, tier: B }195  - id: arch-linux196    name: Arch Linux197    domain: archlinux.org198    categories: [open-source, developer]199    tier: B200    aliases: [arch, archlinux]201    discover: { rss: true }202    sensors:203      - { name: news feed, url: "https://archlinux.org/feeds/news/", type: RSS, connector: rss, tier: B }204      - { name: security advisories feed, url: "https://security.archlinux.org/advisory/feed.atom", type: ATOM, connector: rss, tier: A }205  - id: alpine206    name: Alpine Linux207    domain: alpinelinux.org208    categories: [open-source, developer, infrastructure]209    tier: B210    aliases: [alpine, alpine linux]211    discover: { rss: true }212    sensors:213      - { name: news feed, url: "https://alpinelinux.org/atom.xml", type: ATOM, connector: rss, tier: B }214  - id: nixos215    name: NixOS216    domain: nixos.org217    categories: [open-source, developer, packages]218    tier: B219    aliases: [nix, nixpkgs, nixos foundation]220    products:221      - { name: Nix, type: software }222      - { name: Nixpkgs, type: software }223    discover: { rss: true }224    sensors:225      - { name: announcements feed, url: "https://nixos.org/blog/announcements-rss.xml", type: RSS, connector: rss, tier: B }226      - { name: discourse announcements feed, url: "https://discourse.nixos.org/c/announcements/8.rss", type: RSS, connector: rss, tier: B }227      - { name: nix releases, url: "https://github.com/NixOS/nix/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: NixOS/nix, kind: releases } }228  - id: opensuse229    name: openSUSE230    domain: opensuse.org231    homepage: https://www.opensuse.org232    categories: [open-source, developer]233    tier: B234    aliases: [opensuse project, tumbleweed, leap]235    discover: { rss: true }236    sensors:237      - { name: news feed, url: "https://news.opensuse.org/feed.xml", type: RSS, connector: rss, tier: B }238  - id: suse239    name: SUSE240    domain: suse.com241    homepage: https://www.suse.com242    categories: [open-source, enterprise, infrastructure]243    tier: B244    aliases: [suse linux, sles]245    products:246      - { name: SUSE Linux Enterprise Server, type: software, aliases: [sles] }247      - { name: Rancher, type: software }248    discover: { rss: true }249    sensors:250      - { name: blog feed, url: "https://www.suse.com/c/feed/", type: RSS, connector: rss, tier: B }251252  # ───────────────────────── Desktop environments ─────────────────────────253  - id: gnome254    name: GNOME255    domain: gnome.org256    homepage: https://www.gnome.org257    categories: [open-source, developer]258    tier: C259    aliases: [gnome foundation, gnome project]260    discover: { rss: true, sitemap: true }261    notes: "Foundation site has no feed; Planet GNOME aggregates developer blogs."262    sensors:263      - { name: planet gnome feed, url: "https://planet.gnome.org/rss20.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 60 } }264  - id: kde265    name: KDE266    domain: kde.org267    categories: [open-source, developer]268    tier: B269    aliases: [kde community, kde e.v., plasma]270    products:271      - { name: KDE Plasma, type: software, aliases: [plasma] }272    discover: { rss: true }273    sensors:274      - { name: announcements feed, url: "https://kde.org/announcements/index.xml", type: RSS, connector: rss, tier: B }275      - { name: news feed, url: "https://kde.org/index.xml", type: RSS, connector: rss, tier: B }276277  # ───────────────────────── Core toolchain & libraries ─────────────────────────278  - id: git279    name: Git280    domain: git-scm.com281    categories: [open-source, developer]282    tier: B283    weight: 1.2284    aliases: [git scm]285    discover: { rss: true }286    sensors:287      - { name: tags, url: "https://github.com/git/git/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: git/git, kind: tags } }288  - id: curl289    name: curl290    domain: curl.se291    categories: [open-source, developer, infrastructure, cyber]292    tier: B293    weight: 1.2294    aliases: [libcurl, curl project]295    discover: { rss: true }296    sensors:297      - { name: releases, url: "https://github.com/curl/curl/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: curl/curl, kind: releases } }298      - { name: vulnerabilities api, url: "https://curl.se/docs/vuln.json", type: REST_API, connector: jsonlist, tier: A, config: { keyField: id, titleTemplate: "{id}: {summary}", urlField: database_specific.www, dateField: published, summaryField: details, compareFields: [summary, database_specific.severity], maxItems: 100 } }299      - { name: daniel stenberg blog feed, url: "https://daniel.haxx.se/blog/feed/", type: RSS, connector: rss, tier: C }300  - id: openssl301    name: OpenSSL302    domain: openssl-library.org303    categories: [open-source, developer, infrastructure, cyber]304    tier: A305    weight: 1.3306    aliases: [openssl project, openssl library]307    discover: { rss: true }308    sensors:309      - { name: releases, url: "https://github.com/openssl/openssl/releases.atom", type: GITHUB_RELEASE, connector: github, tier: A, config: { repo: openssl/openssl, kind: releases } }310      - { name: news feed, url: "https://openssl-library.org/news/index.xml", type: RSS, connector: rss, tier: A, config: { maxItems: 50 } }311  - id: openssh312    name: OpenSSH313    domain: openssh.com314    homepage: https://www.openssh.com315    categories: [open-source, developer, infrastructure, cyber]316    tier: A317    weight: 1.2318    aliases: [openssh portable]319    discover: { rss: false, pages: true }320    sensors:321      - { name: portable tags, url: "https://github.com/openssh/openssh-portable/tags.atom", type: GITHUB_RELEASE, connector: github, tier: A, config: { repo: openssh/openssh-portable, kind: tags } }322      - { name: release notes, url: "https://www.openssh.org/releasenotes.html", type: HTML, connector: http, tier: B }323  - id: llvm324    name: LLVM Project325    domain: llvm.org326    categories: [open-source, developer]327    tier: B328    weight: 1.1329    aliases: [llvm, clang]330    products:331      - { name: Clang, type: software }332      - { name: LLDB, type: software }333    discover: { rss: true }334    sensors:335      - { name: releases, url: "https://github.com/llvm/llvm-project/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: llvm/llvm-project, kind: releases } }336      - { name: discourse announcements feed, url: "https://discourse.llvm.org/c/announce/46.rss", type: RSS, connector: rss, tier: B }337  - id: gcc338    name: GCC339    domain: gcc.gnu.org340    categories: [open-source, developer]341    tier: C342    aliases: [gnu compiler collection, gnu gcc]343    discover: { rss: false, pages: true }344    notes: "No feed; the gcc-mirror tags feed is dominated by basepoints. Releases page is server-rendered."345    sensors:346      - { name: releases page, url: "https://gcc.gnu.org/releases.html", type: HTML, connector: http, tier: C }347348  # ───────────────────────── Web frameworks ─────────────────────────349  - id: react350    name: React351    domain: react.dev352    categories: [open-source, developer]353    tier: A354    weight: 1.3355    aliases: [reactjs, react.js]356    discover: { rss: true }357    sensors:358      - { name: blog feed, url: "https://react.dev/rss.xml", type: RSS, connector: rss, tier: A }359      - { name: releases, url: "https://github.com/react/react/releases.atom", type: GITHUB_RELEASE, connector: github, tier: A, config: { repo: react/react, kind: releases } }360  - id: nextjs361    name: Next.js362    domain: nextjs.org363    categories: [open-source, developer]364    tier: A365    weight: 1.2366    aliases: [next.js, next js, nextjs]367    llm: false368    discover: { rss: true }369    notes: "Releases feed is dominated by daily canaries — heuristics only."370    sensors:371      - { name: blog feed, url: "https://nextjs.org/feed.xml", type: RSS, connector: rss, tier: A }372      - { name: releases, url: "https://github.com/vercel/next.js/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: vercel/next.js, kind: releases } }373  - id: vue374    name: Vue.js375    domain: vuejs.org376    categories: [open-source, developer]377    tier: B378    weight: 1.1379    aliases: [vue, vuejs]380    discover: { rss: true }381    sensors:382      - { name: blog feed, url: "https://blog.vuejs.org/feed.rss", type: RSS, connector: rss, tier: B }383      - { name: releases, url: "https://github.com/vuejs/core/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: vuejs/core, kind: releases } }384  - id: angular385    name: Angular386    domain: angular.dev387    categories: [open-source, developer]388    tier: B389    weight: 1.1390    aliases: [angularjs]391    discover: { rss: true }392    sensors:393      - { name: blog feed, url: "https://blog.angular.dev/feed", type: RSS, connector: rss, tier: B }394      - { name: releases, url: "https://github.com/angular/angular/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: angular/angular, kind: releases } }395  - id: svelte396    name: Svelte397    domain: svelte.dev398    categories: [open-source, developer]399    tier: B400    aliases: [sveltekit, svelte kit]401    llm: false402    discover: { rss: true }403    notes: "Monorepo releases feed mixes every package — heuristics only."404    sensors:405      - { name: blog feed, url: "https://svelte.dev/blog/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }406      - { name: releases, url: "https://github.com/sveltejs/svelte/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: sveltejs/svelte, kind: releases } }407  - id: astro408    name: Astro409    domain: astro.build410    categories: [open-source, developer]411    tier: B412    aliases: [astro build, withastro]413    llm: false414    discover: { rss: true }415    sensors:416      - { name: blog feed, url: "https://astro.build/rss.xml", type: RSS, connector: rss, tier: B }417      - { name: releases, url: "https://github.com/withastro/astro/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: withastro/astro, kind: releases } }418  - id: django419    name: Django420    domain: djangoproject.com421    homepage: https://www.djangoproject.com422    categories: [open-source, developer]423    tier: B424    weight: 1.1425    aliases: [django software foundation, dsf]426    discover: { rss: true }427    sensors:428      - { name: weblog feed, url: "https://www.djangoproject.com/rss/weblog/", type: RSS, connector: rss, tier: A }429      - { name: tags, url: "https://github.com/django/django/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: django/django, kind: tags } }430  - id: flask431    name: Flask / Pallets432    domain: palletsprojects.com433    categories: [open-source, developer]434    tier: B435    aliases: [pallets, pallets projects, werkzeug, jinja]436    products:437      - { name: Werkzeug, type: software }438      - { name: Jinja, type: software }439    discover: { rss: true }440    sensors:441      - { name: blog feed, url: "https://palletsprojects.com/blog/feed.xml", type: ATOM, connector: rss, tier: B }442      - { name: releases, url: "https://github.com/pallets/flask/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: pallets/flask, kind: releases } }443  - id: fastapi444    name: FastAPI445    domain: fastapi.tiangolo.com446    categories: [open-source, developer]447    tier: B448    aliases: [fast api]449    discover: { rss: false }450    sensors:451      - { name: releases, url: "https://github.com/fastapi/fastapi/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: fastapi/fastapi, kind: releases } }452  - id: rails453    name: Ruby on Rails454    domain: rubyonrails.org455    categories: [open-source, developer]456    tier: B457    weight: 1.1458    aliases: [rails, ror]459    discover: { rss: true }460    sensors:461      - { name: blog feed, url: "https://rubyonrails.org/feed.xml", type: ATOM, connector: rss, tier: B }462      - { name: releases, url: "https://github.com/rails/rails/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: rails/rails, kind: releases } }463  - id: laravel464    name: Laravel465    domain: laravel.com466    categories: [open-source, developer]467    tier: B468    aliases: [laravel framework]469    discover: { rss: true }470    sensors:471      - { name: blog feed, url: "https://laravel.com/feed", type: RSS, connector: rss, tier: B }472      - { name: framework releases, url: "https://github.com/laravel/framework/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: laravel/framework, kind: releases } }473  - id: spring474    name: Spring475    domain: spring.io476    categories: [open-source, developer, enterprise]477    tier: B478    weight: 1.1479    aliases: [spring framework, spring boot, pivotal spring]480    products:481      - { name: Spring Boot, type: software }482      - { name: Spring Framework, type: software }483    discover: { rss: true }484    sensors:485      - { name: blog feed, url: "https://spring.io/blog.atom", type: RSS, connector: rss, tier: B }486      - { name: spring boot releases, url: "https://github.com/spring-projects/spring-boot/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: spring-projects/spring-boot, kind: releases } }487488  # ───────────────────────── Languages & runtimes ─────────────────────────489  - id: dotnet490    name: .NET491    domain: dotnet.microsoft.com492    categories: [open-source, developer, enterprise]493    tier: A494    weight: 1.2495    aliases: [dotnet, .net core, asp.net, c#]496    products:497      - { name: ASP.NET Core, type: software, aliases: [asp.net] }498      - { name: C#, type: software, aliases: [csharp] }499    discover: { rss: true }500    sensors:501      - { name: releases index api, url: "https://builds.dotnet.microsoft.com/dotnet/release-metadata/releases-index.json", type: REST_API, connector: jsonlist, tier: A, config: { itemsPath: releases-index, keyField: channel-version, titleTemplate: ".NET {channel-version} → {latest-release} ({support-phase})", dateField: latest-release-date, urlField: releases.json, compareFields: [latest-release, latest-release-date, support-phase, security] } }502      - { name: dotnet blog feed, url: "https://devblogs.microsoft.com/dotnet/feed/", type: RSS, connector: rss, tier: B }503      - { name: runtime releases, url: "https://github.com/dotnet/runtime/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: dotnet/runtime, kind: releases } }504  - id: typescript505    name: TypeScript506    domain: typescriptlang.org507    homepage: https://www.typescriptlang.org508    categories: [open-source, developer]509    tier: A510    weight: 1.2511    aliases: [ts, typescript language]512    discover: { rss: true }513    sensors:514      - { name: blog feed, url: "https://devblogs.microsoft.com/typescript/feed/", type: RSS, connector: rss, tier: A }515      - { name: releases, url: "https://github.com/microsoft/TypeScript/releases.atom", type: GITHUB_RELEASE, connector: github, tier: A, config: { repo: microsoft/TypeScript, kind: releases } }516  - id: kotlin517    name: Kotlin518    domain: kotlinlang.org519    categories: [open-source, developer]520    tier: B521    weight: 1.1522    aliases: [kotlin language, kotlin foundation]523    discover: { rss: true }524    notes: "The GitHub releases feed is dominated by dev builds; the Kotlin blog carries the real releases."525    sensors:526      - { name: blog feed, url: "https://blog.jetbrains.com/kotlin/feed/", type: RSS, connector: rss, tier: B }527  - id: jetbrains528    name: JetBrains529    domain: jetbrains.com530    homepage: https://www.jetbrains.com531    categories: [developer, technology]532    tier: B533    weight: 1.1534    aliases: [intellij, jetbrains ides]535    products:536      - { name: IntelliJ IDEA, type: software, aliases: [intellij] }537      - { name: PyCharm, type: software }538      - { name: WebStorm, type: software }539      - { name: JetBrains AI Assistant, type: product, aliases: [junie] }540    discover: { rss: true, status: true }541    sensors:542      - { name: blog feed, url: "https://blog.jetbrains.com/feed/", type: RSS, connector: rss, tier: B }543  - id: swift544    name: Swift.org545    domain: swift.org546    homepage: https://www.swift.org547    categories: [open-source, developer]548    tier: B549    weight: 1.1550    aliases: [swift language, swift programming language]551    discover: { rss: true }552    notes: "GitHub releases feed is flooded by nightly development snapshots; the swift.org feed announces releases."553    sensors:554      - { name: blog feed, url: "https://www.swift.org/atom.xml", type: ATOM, connector: rss, tier: B }555  - id: deno556    name: Deno557    domain: deno.com558    categories: [open-source, developer, cloud]559    tier: B560    aliases: [deno land, deno deploy]561    products:562      - { name: Deno Deploy, type: service }563    discover: { rss: true, status: true }564    sensors:565      - { name: blog feed, url: "https://deno.com/feed", type: ATOM, connector: rss, tier: B }566      - { name: releases, url: "https://github.com/denoland/deno/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: denoland/deno, kind: releases } }567  - id: bun568    name: Bun569    domain: bun.sh570    categories: [open-source, developer]571    tier: B572    aliases: [bun runtime, oven]573    discover: { rss: true }574    sensors:575      - { name: blog feed, url: "https://bun.sh/rss.xml", type: RSS, connector: rss, tier: B }576      - { name: releases, url: "https://github.com/oven-sh/bun/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: oven-sh/bun, kind: releases } }577  - id: zig578    name: Zig579    domain: ziglang.org580    categories: [open-source, developer]581    tier: C582    aliases: [zig language, zig software foundation]583    discover: { rss: true }584    sensors:585      - { name: news feed, url: "https://ziglang.org/news/index.xml", type: RSS, connector: rss, tier: C }586      - { name: tags, url: "https://github.com/ziglang/zig/tags.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: ziglang/zig, kind: tags } }587  - id: julia588    name: Julia589    domain: julialang.org590    categories: [open-source, developer, science]591    tier: C592    aliases: [julia language, julialang]593    discover: { rss: true }594    sensors:595      - { name: blog feed, url: "https://julialang.org/feed.xml", type: RSS, connector: rss, tier: C }596      - { name: releases, url: "https://github.com/JuliaLang/julia/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: JuliaLang/julia, kind: releases } }597  - id: r-project598    name: R Project599    domain: r-project.org600    homepage: https://www.r-project.org601    categories: [open-source, developer, statistics, science]602    tier: C603    aliases: [r, r language, r foundation, cran]604    discover: { rss: true }605    sensors:606      - { name: blog feed, url: "https://blog.r-project.org/index.xml", type: RSS, connector: rss, tier: C }607608  # ───────────────────────── AI / ML / data science ─────────────────────────609  - id: jupyter610    name: Project Jupyter611    domain: jupyter.org612    categories: [open-source, developer, ai, science]613    tier: B614    aliases: [jupyter, jupyterlab, jupyter notebook]615    products:616      - { name: JupyterLab, type: software }617    discover: { rss: true }618    sensors:619      - { name: blog feed, url: "https://blog.jupyter.org/feed", type: RSS, connector: rss, tier: B }620      - { name: jupyterlab tags, url: "https://github.com/jupyterlab/jupyterlab/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: jupyterlab/jupyterlab, kind: tags } }621      - { name: notebook releases, url: "https://github.com/jupyter/notebook/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: jupyter/notebook, kind: releases } }622  - id: pytorch623    name: PyTorch624    domain: pytorch.org625    categories: [open-source, developer, ai]626    tier: A627    weight: 1.3628    aliases: [pytorch foundation, torch]629    discover: { rss: true }630    notes: "GitHub releases feed is polluted by viable/strict CI tags; the blog announces releases."631    sensors:632      - { name: blog feed, url: "https://pytorch.org/blog/feed/", type: RSS, connector: rss, tier: A }633  - id: tensorflow634    name: TensorFlow635    domain: tensorflow.org636    homepage: https://www.tensorflow.org637    categories: [open-source, developer, ai]638    tier: B639    weight: 1.1640    aliases: [tf, keras]641    discover: { rss: true }642    sensors:643      - { name: blog feed, url: "https://blog.tensorflow.org/feeds/posts/default?max-results=25", type: ATOM, connector: rss, tier: B }644      - { name: releases, url: "https://github.com/tensorflow/tensorflow/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: tensorflow/tensorflow, kind: releases } }645  - id: jax646    name: JAX647    domain: jax.dev648    homepage: https://docs.jax.dev649    categories: [open-source, developer, ai]650    tier: B651    aliases: [jax ml, google jax]652    discover: { rss: false }653    sensors:654      - { name: releases, url: "https://github.com/jax-ml/jax/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: jax-ml/jax, kind: releases } }655      - { name: changelog, url: "https://docs.jax.dev/en/latest/changelog.html", type: HTML, connector: http, tier: B }656  - id: langchain657    name: LangChain658    domain: langchain.com659    homepage: https://www.langchain.com660    categories: [open-source, developer, ai]661    tier: B662    weight: 1.1663    aliases: [langgraph, langsmith]664    products:665      - { name: LangGraph, type: software }666      - { name: LangSmith, type: service }667    llm: false668    discover: { rss: true, status: true }669    notes: "Monorepo releases feed publishes every package tag — heuristics only."670    sensors:671      - { name: blog feed, url: "https://www.langchain.com/blog/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }672      - { name: releases, url: "https://github.com/langchain-ai/langchain/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: langchain-ai/langchain, kind: releases } }673      - { name: langsmith pricing, url: "https://www.langchain.com/pricing", type: HTML, connector: http, tier: C }674  - id: vllm675    name: vLLM676    domain: vllm.ai677    categories: [open-source, developer, ai]678    tier: B679    aliases: [vllm project]680    discover: { rss: true }681    notes: "Blog has no feed (Next.js)."682    sensors:683      - { name: releases, url: "https://github.com/vllm-project/vllm/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: vllm-project/vllm, kind: releases } }684  - id: ollama685    name: Ollama686    domain: ollama.com687    categories: [open-source, developer, ai]688    tier: B689    weight: 1.1690    discover: { rss: true, pages: true }691    notes: "Blog has no feed; the blog index is server-rendered."692    sensors:693      - { name: releases, url: "https://github.com/ollama/ollama/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: ollama/ollama, kind: releases } }694      - { name: blog index, url: "https://ollama.com/blog", type: HTML, connector: http, tier: B }695696  # ───────────────────────── Infrastructure, DevOps, cloud native ─────────────────────────697  - id: ansible698    name: Ansible699    domain: ansible.com700    homepage: https://www.ansible.com701    categories: [open-source, developer, infrastructure]702    tier: B703    weight: 1.1704    aliases: [ansible core, ansible community]705    discover: { rss: true }706    sensors:707      - { name: community news feed, url: "https://forum.ansible.com/c/news/5.rss", type: RSS, connector: rss, tier: B }708      - { name: releases, url: "https://github.com/ansible/ansible/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: ansible/ansible, kind: releases } }709  - id: opentofu710    name: OpenTofu711    domain: opentofu.org712    categories: [open-source, developer, infrastructure, cloud]713    tier: B714    aliases: [open tofu]715    discover: { rss: true }716    sensors:717      - { name: blog feed, url: "https://opentofu.org/blog/rss.xml", type: RSS, connector: rss, tier: B }718      - { name: releases, url: "https://github.com/opentofu/opentofu/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: opentofu/opentofu, kind: releases } }719  - id: pulumi720    name: Pulumi721    domain: pulumi.com722    homepage: https://www.pulumi.com723    categories: [open-source, developer, infrastructure, cloud]724    tier: B725    aliases: [pulumi cloud]726    llm: false727    discover: { rss: true, status: true }728    notes: "Releases feed mixes pkg/ and sdk/ tags several times a week — heuristics only."729    sensors:730      - { name: status, url: "https://status.pulumi.com/api/v2/summary.json", type: STATUSPAGE, connector: statuspage, tier: S }731      - { name: blog feed, url: "https://www.pulumi.com/blog/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }732      - { name: releases, url: "https://github.com/pulumi/pulumi/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: pulumi/pulumi, kind: releases } }733  - id: prometheus734    name: Prometheus735    domain: prometheus.io736    categories: [open-source, developer, infrastructure, cloud]737    tier: B738    weight: 1.1739    aliases: [prometheus monitoring]740    discover: { rss: true }741    sensors:742      - { name: blog feed, url: "https://prometheus.io/blog/feed.xml", type: ATOM, connector: rss, tier: B }743      - { name: releases, url: "https://github.com/prometheus/prometheus/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: prometheus/prometheus, kind: releases } }744  - id: istio745    name: Istio746    domain: istio.io747    categories: [open-source, developer, infrastructure, cloud]748    tier: B749    aliases: [istio service mesh]750    discover: { rss: true }751    sensors:752      - { name: news feed, url: "https://istio.io/latest/news/feed.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }753      - { name: releases, url: "https://github.com/istio/istio/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: istio/istio, kind: releases } }754  - id: envoy755    name: Envoy Proxy756    domain: envoyproxy.io757    homepage: https://www.envoyproxy.io758    categories: [open-source, developer, infrastructure, cloud]759    tier: B760    aliases: [envoy, envoyproxy]761    discover: { rss: true }762    notes: "Medium blog (blog.envoyproxy.io) does not resolve from the engine."763    sensors:764      - { name: releases, url: "https://github.com/envoyproxy/envoy/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: envoyproxy/envoy, kind: releases } }765  - id: helm766    name: Helm767    domain: helm.sh768    categories: [open-source, developer, infrastructure, cloud, packages]769    tier: B770    aliases: [helm charts]771    discover: { rss: true }772    sensors:773      - { name: blog feed, url: "https://helm.sh/blog/index.xml", type: RSS, connector: rss, tier: B }774      - { name: releases, url: "https://github.com/helm/helm/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: helm/helm, kind: releases } }775  - id: argo776    name: Argo Project777    domain: argoproj.github.io778    categories: [open-source, developer, infrastructure, cloud]779    tier: B780    aliases: [argo, argo cd, argocd, argo workflows]781    products:782      - { name: Argo CD, type: software, aliases: [argocd] }783      - { name: Argo Workflows, type: software }784    discover: { rss: true }785    sensors:786      - { name: blog feed, url: "https://blog.argoproj.io/feed", type: RSS, connector: rss, tier: B }787      - { name: argo cd releases, url: "https://github.com/argoproj/argo-cd/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: argoproj/argo-cd, kind: releases } }788  - id: nginx789    name: NGINX790    domain: nginx.org791    categories: [open-source, developer, infrastructure]792    tier: A793    weight: 1.2794    aliases: [nginx open source, f5 nginx]795    discover: { rss: true }796    sensors:797      - { name: releases, url: "https://github.com/nginx/nginx/releases.atom", type: GITHUB_RELEASE, connector: github, tier: A, config: { repo: nginx/nginx, kind: releases } }798      - { name: blog feed, url: "https://blog.nginx.org/feed", type: RSS, connector: rss, tier: B }799  - id: apache-httpd800    name: Apache HTTP Server801    domain: httpd.apache.org802    categories: [open-source, developer, infrastructure, cyber]803    tier: A804    weight: 1.1805    aliases: [apache httpd, httpd, apache web server]806    discover: { rss: false, pages: true }807    sensors:808      - { name: tags, url: "https://github.com/apache/httpd/tags.atom", type: GITHUB_RELEASE, connector: github, tier: A, config: { repo: apache/httpd, kind: tags } }809      - { name: 2.4 vulnerabilities, url: "https://httpd.apache.org/security/vulnerabilities_24.html", type: HTML, connector: http, tier: A }810  - id: caddy811    name: Caddy812    domain: caddyserver.com813    categories: [open-source, developer, infrastructure]814    tier: B815    aliases: [caddy server, caddy web server]816    discover: { rss: true }817    sensors:818      - { name: releases, url: "https://github.com/caddyserver/caddy/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: caddyserver/caddy, kind: releases } }819  - id: haproxy820    name: HAProxy821    domain: haproxy.org822    homepage: https://www.haproxy.org823    categories: [open-source, developer, infrastructure]824    tier: B825    aliases: [haproxy technologies]826    discover: { rss: true }827    sensors:828      - { name: tags, url: "https://github.com/haproxy/haproxy/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: haproxy/haproxy, kind: tags } }829      - { name: haproxy technologies blog feed, url: "https://www.haproxy.com/feed", type: RSS, connector: rss, tier: C }830831  # ───────────────────────── Databases & data platforms ─────────────────────────832  - id: sqlite833    name: SQLite834    domain: sqlite.org835    homepage: https://www.sqlite.org836    categories: [open-source, developer, infrastructure]837    tier: B838    weight: 1.2839    aliases: [sqlite3]840    discover: { rss: false, pages: true }841    notes: "No feed; GitHub mirror tags are dominated by bug-* branches. Server-rendered news/changes pages instead."842    sensors:843      - { name: news page, url: "https://www.sqlite.org/news.html", type: HTML, connector: http, tier: B }844      - { name: release history, url: "https://www.sqlite.org/changes.html", type: HTML, connector: http, tier: C }845  - id: mariadb846    name: MariaDB847    domain: mariadb.org848    categories: [open-source, developer, infrastructure]849    tier: B850    weight: 1.1851    aliases: [mariadb foundation, mariadb server]852    discover: { rss: true }853    sensors:854      - { name: foundation blog feed, url: "https://mariadb.org/feed/", type: RSS, connector: rss, tier: B }855      - { name: server tags, url: "https://github.com/MariaDB/server/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: MariaDB/server, kind: tags } }856  - id: clickhouse857    name: ClickHouse858    domain: clickhouse.com859    categories: [open-source, developer, infrastructure, cloud]860    tier: B861    weight: 1.1862    aliases: [clickhouse cloud]863    discover: { rss: true, status: true }864    sensors:865      - { name: status, url: "https://status.clickhouse.com/api/v2/summary.json", type: STATUSPAGE, connector: statuspage, tier: S }866      - { name: blog feed, url: "https://clickhouse.com/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }867      - { name: releases, url: "https://github.com/ClickHouse/ClickHouse/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: ClickHouse/ClickHouse, kind: releases } }868  - id: duckdb869    name: DuckDB870    domain: duckdb.org871    categories: [open-source, developer, infrastructure]872    tier: B873    weight: 1.1874    aliases: [duckdb labs, duckdb foundation, motherduck]875    discover: { rss: true }876    sensors:877      - { name: blog feed, url: "https://duckdb.org/feed.xml", type: ATOM, connector: rss, tier: B }878      - { name: releases, url: "https://github.com/duckdb/duckdb/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: duckdb/duckdb, kind: releases } }879  - id: neo4j880    name: Neo4j881    domain: neo4j.com882    categories: [open-source, developer, infrastructure, enterprise]883    tier: B884    aliases: [neo4j aura, cypher]885    discover: { rss: true, status: true }886    sensors:887      - { name: blog feed, url: "https://neo4j.com/blog/feed/", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }888      - { name: tags, url: "https://github.com/neo4j/neo4j/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: neo4j/neo4j, kind: tags } }889  - id: cassandra890    name: Apache Cassandra891    domain: cassandra.apache.org892    categories: [open-source, developer, infrastructure]893    tier: B894    aliases: [cassandra]895    discover: { rss: false, pages: true }896    sensors:897      - { name: tags, url: "https://github.com/apache/cassandra/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: apache/cassandra, kind: tags } }898      - { name: blog index, url: "https://cassandra.apache.org/_/blog.html", type: HTML, connector: http, tier: C }899  - id: kafka900    name: Apache Kafka901    domain: kafka.apache.org902    categories: [open-source, developer, infrastructure]903    tier: B904    weight: 1.1905    aliases: [kafka]906    discover: { rss: false, pages: true }907    sensors:908      - { name: releases, url: "https://github.com/apache/kafka/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: apache/kafka, kind: releases } }909      - { name: blog index, url: "https://kafka.apache.org/blog", type: HTML, connector: http, tier: C }910  - id: rabbitmq911    name: RabbitMQ912    domain: rabbitmq.com913    homepage: https://www.rabbitmq.com914    categories: [open-source, developer, infrastructure]915    tier: B916    aliases: [rabbit mq]917    discover: { rss: true }918    sensors:919      - { name: blog feed, url: "https://www.rabbitmq.com/blog/rss.xml", type: RSS, connector: rss, tier: B }920      - { name: server releases, url: "https://github.com/rabbitmq/rabbitmq-server/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: rabbitmq/rabbitmq-server, kind: releases } }921  - id: airflow922    name: Apache Airflow923    domain: airflow.apache.org924    categories: [open-source, developer, infrastructure]925    tier: B926    aliases: [airflow]927    llm: false928    discover: { rss: false, pages: true }929    notes: "Releases feed is dominated by provider packages — heuristics only."930    sensors:931      - { name: releases, url: "https://github.com/apache/airflow/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: apache/airflow, kind: releases } }932      - { name: blog index, url: "https://airflow.apache.org/blog/", type: HTML, connector: http, tier: C }933  - id: dbt934    name: dbt Labs935    domain: getdbt.com936    homepage: https://www.getdbt.com937    categories: [open-source, developer, infrastructure, enterprise]938    tier: B939    aliases: [dbt, dbt core, dbt cloud]940    products:941      - { name: dbt Core, type: software }942      - { name: dbt Cloud, type: service }943    discover: { rss: true, status: true }944    sensors:945      - { name: status, url: "https://status.getdbt.com/api/v2/summary.json", type: STATUSPAGE, connector: statuspage, tier: S }946      - { name: blog feed, url: "https://www.getdbt.com/blog/feed.xml", type: RSS, connector: rss, tier: B }947      - { name: dbt core releases, url: "https://github.com/dbt-labs/dbt-core/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: dbt-labs/dbt-core, kind: releases } }948949  # ───────────────────────── Applications & CMS ─────────────────────────950  - id: blender951    name: Blender952    domain: blender.org953    homepage: https://www.blender.org954    categories: [open-source, developer, entertainment]955    tier: B956    aliases: [blender foundation]957    discover: { rss: true }958    sensors:959      - { name: news feed, url: "https://www.blender.org/feed/", type: RSS, connector: rss, tier: B }960      - { name: tags, url: "https://github.com/blender/blender/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: blender/blender, kind: tags } }961  - id: vlc962    name: VideoLAN / VLC963    domain: videolan.org964    homepage: https://www.videolan.org965    categories: [open-source, developer, consumer-tech]966    tier: C967    aliases: [videolan, vlc media player]968    discover: { rss: false }969    notes: "videolan.org answers 418 to bots; releases are followed on the project GitLab tags feed."970    sensors:971      - { name: vlc tags, url: "https://code.videolan.org/videolan/vlc/-/tags?format=atom", type: ATOM, connector: rss, tier: C }972  - id: libreoffice973    name: LibreOffice / The Document Foundation974    domain: libreoffice.org975    homepage: https://www.libreoffice.org976    categories: [open-source, developer, consumer-tech]977    tier: B978    aliases: [the document foundation, tdf, libre office]979    discover: { rss: true }980    sensors:981      - { name: tdf blog feed, url: "https://blog.documentfoundation.org/feed/", type: RSS, connector: rss, tier: B }982      - { name: core tags, url: "https://github.com/LibreOffice/core/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: LibreOffice/core, kind: tags } }983  - id: wordpress984    name: WordPress985    domain: wordpress.org986    categories: [open-source, developer, internet]987    tier: A988    weight: 1.3989    aliases: [wordpress.org, wp]990    discover: { rss: true }991    sensors:992      - { name: news feed, url: "https://wordpress.org/news/feed/", type: RSS, connector: rss, tier: A }993      - { name: releases feed, url: "https://wordpress.org/news/category/releases/feed/", type: RSS, connector: rss, tier: A }994      - { name: tags, url: "https://github.com/WordPress/WordPress/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: WordPress/WordPress, kind: tags } }995  - id: drupal996    name: Drupal997    domain: drupal.org998    homepage: https://www.drupal.org999    categories: [open-source, developer, internet]1000    tier: B1001    weight: 1.11002    aliases: [drupal association]1003    discover: { rss: true }1004    sensors:1005      - { name: security advisories feed, url: "https://www.drupal.org/security/all/rss.xml", type: RSS, connector: rss, tier: A }1006      - { name: news feed, url: "https://www.drupal.org/rss.xml", type: RSS, connector: rss, tier: B }1007      - { name: tags, url: "https://github.com/drupal/drupal/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: drupal/drupal, kind: tags } }1008  - id: joomla1009    name: Joomla1010    domain: joomla.org1011    homepage: https://www.joomla.org1012    categories: [open-source, developer, internet]1013    tier: B1014    aliases: [joomla!, open source matters]1015    discover: { rss: true }1016    sensors:1017      - { name: announcements feed, url: "https://www.joomla.org/announcements.feed?type=rss", type: RSS, connector: rss, tier: B }1018      - { name: security centre feed, url: "https://developer.joomla.org/security-centre.feed?type=rss", type: RSS, connector: rss, tier: A }1019      - { name: releases, url: "https://github.com/joomla/joomla-cms/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: joomla/joomla-cms, kind: releases } }1020  - id: ghost1021    name: Ghost1022    domain: ghost.org1023    categories: [open-source, developer, internet, media]1024    tier: B1025    aliases: [ghost cms, ghost foundation]1026    discover: { rss: true }1027    sensors:1028      - { name: changelog feed, url: "https://ghost.org/changelog/rss/", type: RSS, connector: rss, tier: B }1029      - { name: releases, url: "https://github.com/TryGhost/Ghost/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: TryGhost/Ghost, kind: releases } }1030  - id: matrix1031    name: Matrix.org1032    domain: matrix.org1033    categories: [open-source, developer, internet, standards]1034    tier: B1035    aliases: [matrix protocol, matrix.org foundation, element, synapse]1036    products:1037      - { name: Synapse, type: software }1038      - { name: Element, type: product }1039    discover: { rss: true }1040    sensors:1041      - { name: blog feed, url: "https://matrix.org/atom.xml", type: ATOM, connector: rss, tier: B, config: { maxItems: 40 } }1042      - { name: synapse releases, url: "https://github.com/element-hq/synapse/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: element-hq/synapse, kind: releases } }1043  - id: signal1044    name: Signal1045    domain: signal.org1046    categories: [open-source, consumer-tech, cyber]1047    tier: B1048    weight: 1.21049    aliases: [signal messenger, signal foundation]1050    discover: { rss: true }1051    sensors:1052      - { name: blog feed, url: "https://signal.org/blog/rss.xml", type: RSS, connector: rss, tier: B }1053      - { name: android releases, url: "https://github.com/signalapp/Signal-Android/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: signalapp/Signal-Android, kind: releases } }1054  - id: tor-project1055    name: Tor Project1056    domain: torproject.org1057    homepage: https://www.torproject.org1058    categories: [open-source, cyber, internet, ngo]1059    tier: B1060    weight: 1.21061    aliases: [tor, tor browser, the tor project]1062    products:1063      - { name: Tor Browser, type: software }1064    discover: { rss: true }1065    sensors:1066      - { name: blog feed, url: "https://blog.torproject.org/feed.xml", type: ATOM, connector: rss, tier: B }1067      - { name: tor tags, url: "https://gitlab.torproject.org/tpo/core/tor/-/tags?format=atom", type: ATOM, connector: rss, tier: B }1068  - id: wireshark1069    name: Wireshark1070    domain: wireshark.org1071    homepage: https://www.wireshark.org1072    categories: [open-source, developer, cyber]1073    tier: B1074    aliases: [wireshark foundation]1075    discover: { rss: false, pages: true }1076    notes: "Astro site without feeds; security advisories page is server-rendered."1077    sensors:1078      - { name: tags, url: "https://github.com/wireshark/wireshark/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: wireshark/wireshark, kind: tags } }1079      - { name: security advisories, url: "https://www.wireshark.org/security/", type: HTML, connector: http, tier: A }1080  - id: qemu1081    name: QEMU1082    domain: qemu.org1083    homepage: https://www.qemu.org1084    categories: [open-source, developer, infrastructure]1085    tier: B1086    aliases: [qemu project]1087    discover: { rss: true }1088    sensors:1089      - { name: blog feed, url: "https://www.qemu.org/feed.xml", type: ATOM, connector: rss, tier: B }1090      - { name: tags, url: "https://github.com/qemu/qemu/tags.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: qemu/qemu, kind: tags } }1091  - id: proxmox1092    name: Proxmox1093    domain: proxmox.com1094    homepage: https://www.proxmox.com1095    categories: [open-source, developer, infrastructure, enterprise]1096    tier: B1097    aliases: [proxmox ve, pve, proxmox server solutions]1098    products:1099      - { name: Proxmox VE, type: software, aliases: [pve] }1100      - { name: Proxmox Backup Server, type: software, aliases: [pbs] }1101    discover: { rss: true }1102    sensors:1103      - { name: press releases feed, url: "https://www.proxmox.com/en/about/company-details/press-releases?format=feed&type=rss", type: RSS, connector: rss, tier: B }1104      - { name: pve roadmap, url: "https://pve.proxmox.com/wiki/Roadmap", type: HTML, connector: http, tier: C }1105  - id: home-assistant1106    name: Home Assistant1107    domain: home-assistant.io1108    homepage: https://www.home-assistant.io1109    categories: [open-source, consumer-tech, developer]1110    tier: B1111    weight: 1.11112    aliases: [hass, nabu casa, open home foundation]1113    discover: { rss: true, status: true }1114    sensors:1115      - { name: status, url: "https://status.home-assistant.io/api/v2/summary.json", type: STATUSPAGE, connector: statuspage, tier: S }1116      - { name: blog feed, url: "https://www.home-assistant.io/atom.xml", type: ATOM, connector: rss, tier: B }1117      - { name: core releases, url: "https://github.com/home-assistant/core/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: home-assistant/core, kind: releases } }1118  - id: obs-studio1119    name: OBS Studio1120    domain: obsproject.com1121    categories: [open-source, consumer-tech, media]1122    tier: B1123    aliases: [obs, obs project, open broadcaster software]1124    discover: { rss: true }1125    sensors:1126      - { name: blog feed, url: "https://obsproject.com/blog/rss", type: RSS, connector: rss, tier: B }1127      - { name: releases, url: "https://github.com/obsproject/obs-studio/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: obsproject/obs-studio, kind: releases } }11281129  # ───────────────────────── Developer tools & editors ─────────────────────────1130  - id: jenkins1131    name: Jenkins1132    domain: jenkins.io1133    homepage: https://www.jenkins.io1134    categories: [open-source, developer, infrastructure, cyber]1135    tier: B1136    weight: 1.11137    aliases: [jenkins ci]1138    discover: { rss: true }1139    sensors:1140      - { name: security advisories feed, url: "https://www.jenkins.io/security/advisories/rss.xml", type: RSS, connector: rss, tier: A }1141      - { name: changelog feed, url: "https://www.jenkins.io/changelog/rss.xml", type: RSS, connector: rss, tier: B }1142      - { name: blog feed, url: "https://www.jenkins.io/rss.xml", type: ATOM, connector: rss, tier: B }1143  - id: homebrew1144    name: Homebrew1145    domain: brew.sh1146    categories: [open-source, developer, packages]1147    tier: B1148    aliases: [brew]1149    discover: { rss: true }1150    sensors:1151      - { name: blog feed, url: "https://brew.sh/atom.xml", type: ATOM, connector: rss, tier: B }1152      - { name: releases, url: "https://github.com/Homebrew/brew/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: Homebrew/brew, kind: releases } }1153  - id: neovim1154    name: Neovim1155    domain: neovim.io1156    categories: [open-source, developer]1157    tier: B1158    aliases: [nvim]1159    discover: { rss: true }1160    sensors:1161      - { name: news feed, url: "https://neovim.io/news.xml", type: RSS, connector: rss, tier: B }1162      - { name: releases, url: "https://github.com/neovim/neovim/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: neovim/neovim, kind: releases } }1163  - id: vim1164    name: Vim1165    domain: vim.org1166    homepage: https://www.vim.org1167    categories: [open-source, developer]1168    tier: C1169    aliases: [vi improved]1170    llm: false1171    discover: { rss: false }1172    notes: "Patch tags land several times a day — heuristics only."1173    sensors:1174      - { name: tags, url: "https://github.com/vim/vim/tags.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: vim/vim, kind: tags } }1175  - id: microsoft1176    extend: true1177    aliases: [vs code, visual studio code]1178    products:1179      - { name: Visual Studio Code, type: software, aliases: [vs code, vscode] }1180    sensors:1181      - { name: vs code releases, url: "https://github.com/microsoft/vscode/releases.atom", type: GITHUB_RELEASE, connector: github, tier: A, config: { repo: microsoft/vscode, kind: releases } }1182      - { name: vs code updates feed, url: "https://code.visualstudio.com/feed.xml", type: ATOM, connector: rss, tier: B }1183  - id: zed1184    name: Zed1185    domain: zed.dev1186    categories: [open-source, developer, ai]1187    tier: B1188    aliases: [zed editor, zed industries]1189    discover: { rss: true }1190    notes: "GitHub releases feed is flooded by nightlies; zed.dev publishes a stable-releases feed."1191    sensors:1192      - { name: stable releases feed, url: "https://zed.dev/stable-releases.rss", type: RSS, connector: rss, tier: B }1193      - { name: blog feed, url: "https://zed.dev/blog.rss", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1194  - id: godot1195    name: Godot Engine1196    domain: godotengine.org1197    categories: [open-source, developer, gaming]1198    tier: B1199    weight: 1.11200    aliases: [godot, godot foundation]1201    discover: { rss: true }1202    sensors:1203      - { name: news feed, url: "https://godotengine.org/rss.xml", type: RSS, connector: rss, tier: B }1204      - { name: releases, url: "https://github.com/godotengine/godot/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: godotengine/godot, kind: releases } }1205  - id: electron1206    name: Electron1207    domain: electronjs.org1208    homepage: https://www.electronjs.org1209    categories: [open-source, developer]1210    tier: B1211    aliases: [electronjs]1212    llm: false1213    discover: { rss: true }1214    notes: "Releases feed publishes nightlies daily — heuristics only."1215    sensors:1216      - { name: blog feed, url: "https://www.electronjs.org/blog/rss.xml", type: RSS, connector: rss, tier: B }1217      - { name: releases, url: "https://github.com/electron/electron/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: electron/electron, kind: releases } }1218  - id: tauri1219    name: Tauri1220    domain: tauri.app1221    homepage: https://v2.tauri.app1222    categories: [open-source, developer]1223    tier: C1224    aliases: [tauri apps]1225    llm: false1226    discover: { rss: true }1227    notes: "Monorepo releases feed publishes every crate/package tag — heuristics only."1228    sensors:1229      - { name: blog feed, url: "https://v2.tauri.app/blog/rss.xml", type: RSS, connector: rss, tier: C }1230      - { name: releases, url: "https://github.com/tauri-apps/tauri/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: tauri-apps/tauri, kind: releases } }1231  - id: flutter1232    name: Flutter1233    domain: flutter.dev1234    categories: [open-source, developer]1235    tier: B1236    weight: 1.11237    aliases: [flutter sdk, dart]1238    products:1239      - { name: Dart, type: software }1240    llm: false1241    discover: { rss: true }1242    notes: "Releases feed publishes beta cherry-picks continuously — heuristics only."1243    sensors:1244      - { name: blog feed, url: "https://medium.com/feed/flutter", type: RSS, connector: rss, tier: B }1245      - { name: releases, url: "https://github.com/flutter/flutter/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: flutter/flutter, kind: releases } }1246  - id: react-native1247    name: React Native1248    domain: reactnative.dev1249    categories: [open-source, developer]1250    tier: B1251    weight: 1.11252    aliases: [rn]1253    discover: { rss: true }1254    sensors:1255      - { name: blog feed, url: "https://reactnative.dev/blog/rss.xml", type: RSS, connector: rss, tier: B, config: { maxItems: 40 } }1256      - { name: releases, url: "https://github.com/react/react-native/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: react/react-native, kind: releases } }1257  - id: expo1258    name: Expo1259    domain: expo.dev1260    categories: [open-source, developer, cloud]1261    tier: B1262    aliases: [expo go, eas]1263    products:1264      - { name: EAS, type: service, aliases: [expo application services] }1265    discover: { rss: true, status: true }1266    notes: "expo/expo has neither GitHub releases nor tags feeds; changelog + blog + status instead."1267    sensors:1268      - { name: status, url: "https://status.expo.dev/api/v2/summary.json", type: STATUSPAGE, connector: statuspage, tier: S }1269      - { name: changelog feed, url: "https://expo.dev/changelog/rss.xml", type: RSS, connector: rss, tier: B }1270      - { name: blog feed, url: "https://expo.dev/blog/rss.xml", type: RSS, connector: rss, tier: B }1271  - id: tailwind1272    name: Tailwind CSS1273    domain: tailwindcss.com1274    categories: [open-source, developer]1275    tier: B1276    aliases: [tailwind, tailwind labs]1277    discover: { rss: true }1278    sensors:1279      - { name: blog feed, url: "https://tailwindcss.com/feeds/feed.xml", type: RSS, connector: rss, tier: B }1280      - { name: releases, url: "https://github.com/tailwindlabs/tailwindcss/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: tailwindlabs/tailwindcss, kind: releases } }1281  - id: vite1282    name: Vite1283    domain: vite.dev1284    categories: [open-source, developer]1285    tier: B1286    aliases: [vitejs, void zero, rolldown]1287    llm: false1288    discover: { rss: true }1289    notes: "Monorepo releases feed mixes plugins and betas — heuristics only."1290    sensors:1291      - { name: blog feed, url: "https://vite.dev/blog.rss", type: RSS, connector: rss, tier: B }1292      - { name: releases, url: "https://github.com/vitejs/vite/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: vitejs/vite, kind: releases } }1293  - id: webpack1294    name: webpack1295    domain: webpack.js.org1296    categories: [open-source, developer]1297    tier: C1298    discover: { rss: true }1299    sensors:1300      - { name: blog feed, url: "https://medium.com/feed/webpack", type: RSS, connector: rss, tier: C }1301      - { name: releases, url: "https://github.com/webpack/webpack/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: webpack/webpack, kind: releases } }1302  - id: esbuild1303    name: esbuild1304    domain: esbuild.github.io1305    categories: [open-source, developer]1306    tier: C1307    discover: { rss: false }1308    sensors:1309      - { name: releases, url: "https://github.com/evanw/esbuild/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: evanw/esbuild, kind: releases } }1310  - id: rollup1311    name: Rollup1312    domain: rollupjs.org1313    categories: [open-source, developer]1314    tier: C1315    aliases: [rollup.js]1316    discover: { rss: false }1317    sensors:1318      - { name: releases, url: "https://github.com/rollup/rollup/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: rollup/rollup, kind: releases } }1319  - id: babel1320    name: Babel1321    domain: babeljs.io1322    categories: [open-source, developer]1323    tier: C1324    aliases: [babel js]1325    discover: { rss: true }1326    sensors:1327      - { name: blog feed, url: "https://babeljs.io/blog/rss.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 30 } }1328      - { name: releases, url: "https://github.com/babel/babel/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: babel/babel, kind: releases } }1329  - id: eslint1330    name: ESLint1331    domain: eslint.org1332    categories: [open-source, developer]1333    tier: B1334    discover: { rss: true }1335    sensors:1336      - { name: blog feed, url: "https://eslint.org/feed.xml", type: ATOM, connector: rss, tier: B }1337      - { name: releases, url: "https://github.com/eslint/eslint/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: eslint/eslint, kind: releases } }1338  - id: prettier1339    name: Prettier1340    domain: prettier.io1341    categories: [open-source, developer]1342    tier: C1343    discover: { rss: true }1344    sensors:1345      - { name: blog feed, url: "https://prettier.io/blog/rss.xml", type: RSS, connector: rss, tier: C, config: { maxItems: 30 } }1346      - { name: releases, url: "https://github.com/prettier/prettier/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: prettier/prettier, kind: releases } }1347  - id: pnpm1348    name: pnpm1349    domain: pnpm.io1350    categories: [open-source, developer, packages]1351    tier: B1352    discover: { rss: true }1353    sensors:1354      - { name: blog feed, url: "https://pnpm.io/blog/rss.xml", type: RSS, connector: rss, tier: C }1355      - { name: releases, url: "https://github.com/pnpm/pnpm/releases.atom", type: GITHUB_RELEASE, connector: github, tier: B, config: { repo: pnpm/pnpm, kind: releases } }1356  - id: yarn1357    name: Yarn1358    domain: yarnpkg.com1359    categories: [open-source, developer, packages]1360    tier: C1361    aliases: [yarn berry, yarnpkg]1362    discover: { rss: false }1363    sensors:1364      - { name: releases, url: "https://github.com/yarnpkg/berry/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: yarnpkg/berry, kind: releases } }1365  - id: bazel1366    name: Bazel1367    domain: bazel.build1368    categories: [open-source, developer]1369    tier: C1370    aliases: [bazelbuild]1371    discover: { rss: true }1372    sensors:1373      - { name: blog feed, url: "https://blog.bazel.build/feed.xml", type: RSS, connector: rss, tier: C }1374      - { name: releases, url: "https://github.com/bazelbuild/bazel/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: bazelbuild/bazel, kind: releases } }1375  - id: cmake1376    name: CMake / Kitware1377    domain: cmake.org1378    categories: [open-source, developer]1379    tier: C1380    aliases: [kitware]1381    discover: { rss: true }1382    sensors:1383      - { name: releases, url: "https://github.com/Kitware/CMake/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: Kitware/CMake, kind: releases } }1384      - { name: kitware blog feed, url: "https://www.kitware.com/feed/", type: RSS, connector: rss, tier: C }1385  - id: gradle1386    name: Gradle1387    domain: gradle.org1388    categories: [open-source, developer]1389    tier: C1390    aliases: [gradle build tool, develocity]1391    discover: { rss: true }1392    notes: "blog.gradle.org has no feed in 2026."1393    sensors:1394      - { name: releases, url: "https://github.com/gradle/gradle/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: gradle/gradle, kind: releases } }1395  - id: maven1396    name: Apache Maven1397    domain: maven.apache.org1398    categories: [open-source, developer, packages]1399    tier: C1400    aliases: [maven]1401    discover: { rss: false, pages: true }1402    sensors:1403      - { name: releases, url: "https://github.com/apache/maven/releases.atom", type: GITHUB_RELEASE, connector: github, tier: C, config: { repo: apache/maven, kind: releases } }1404      - { name: release history, url: "https://maven.apache.org/docs/history.html", type: HTML, connector: http, tier: C }1405