SPB Git forge

spb/websensor

Public
33commits 1branches 0releases
3.4 MBsize
maindefault branch
10 days agolast push
TypeScript 55.4% Python 43.2% SQL 1.2%
24.4 KB · 394 lines yaml
Raw Blame History
1# WebSensor — package-registry sensor class (added 2026-09-08, `package` connector): the version streams of the2# software supply chain, attached to the project/organization entities of the founding file and of3# 10-open-source.yaml. One sensor per (registry, package); `latest` moves and new versions become4# software_release events. Tier C (30 min–6 h) — registries are CDN-served; Docker Hub tier D (anonymous quota).5# High-volume canary streams: `maxItems` capped, `llm: false` set on the source in 10-open-source.yaml.6sources:7  # ── JavaScript / TypeScript (npm) ──8  - id: react9    extend: true10    categories: [packages]11    sensors:12      - { name: npm react, url: "https://www.npmjs.com/package/react", type: REST_API, connector: package, tier: C, config: { registry: npm, name: react, maxItems: 30 } }13      - { name: npm react-dom, url: "https://www.npmjs.com/package/react-dom", type: REST_API, connector: package, tier: C, config: { registry: npm, name: react-dom, maxItems: 30 } }14  - id: nextjs15    extend: true16    categories: [packages]17    sensors:18      - { name: npm next, url: "https://www.npmjs.com/package/next", type: REST_API, connector: package, tier: C, config: { registry: npm, name: next, maxItems: 30 } }19  - id: vue20    extend: true21    categories: [packages]22    sensors:23      - { name: npm vue, url: "https://www.npmjs.com/package/vue", type: REST_API, connector: package, tier: C, config: { registry: npm, name: vue, maxItems: 30 } }24      - { name: npm nuxt, url: "https://www.npmjs.com/package/nuxt", type: REST_API, connector: package, tier: C, config: { registry: npm, name: nuxt, maxItems: 30 } }25  - id: angular26    extend: true27    categories: [packages]28    sensors:29      - { name: npm @angular/core, url: "https://www.npmjs.com/package/@angular/core", type: REST_API, connector: package, tier: C, config: { registry: npm, name: "@angular/core", maxItems: 30 } }30  - id: svelte31    extend: true32    categories: [packages]33    sensors:34      - { name: npm svelte, url: "https://www.npmjs.com/package/svelte", type: REST_API, connector: package, tier: C, config: { registry: npm, name: svelte, maxItems: 30 } }35  - id: astro36    extend: true37    categories: [packages]38    sensors:39      - { name: npm astro, url: "https://www.npmjs.com/package/astro", type: REST_API, connector: package, tier: C, config: { registry: npm, name: astro, maxItems: 30 } }40  - id: typescript41    extend: true42    categories: [packages]43    sensors:44      - { name: npm typescript, url: "https://www.npmjs.com/package/typescript", type: REST_API, connector: package, tier: C, config: { registry: npm, name: typescript, maxItems: 30 } }45  - id: nodejs46    extend: true47    categories: [packages]48    sensors:49      - { name: docker hub node, url: "https://hub.docker.com/_/node", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/node, maxItems: 30 } }50      - { name: homebrew node, url: "https://formulae.brew.sh/formula/node", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: node } }51  - id: vite52    extend: true53    categories: [packages]54    sensors:55      - { name: npm vite, url: "https://www.npmjs.com/package/vite", type: REST_API, connector: package, tier: C, config: { registry: npm, name: vite, maxItems: 30 } }56  - id: webpack57    extend: true58    categories: [packages]59    sensors:60      - { name: npm webpack, url: "https://www.npmjs.com/package/webpack", type: REST_API, connector: package, tier: C, config: { registry: npm, name: webpack, maxItems: 30 } }61  - id: esbuild62    extend: true63    categories: [packages]64    sensors:65      - { name: npm esbuild, url: "https://www.npmjs.com/package/esbuild", type: REST_API, connector: package, tier: C, config: { registry: npm, name: esbuild, maxItems: 30 } }66  - id: eslint67    extend: true68    categories: [packages]69    sensors:70      - { name: npm eslint, url: "https://www.npmjs.com/package/eslint", type: REST_API, connector: package, tier: C, config: { registry: npm, name: eslint, maxItems: 30 } }71  - id: prettier72    extend: true73    categories: [packages]74    sensors:75      - { name: npm prettier, url: "https://www.npmjs.com/package/prettier", type: REST_API, connector: package, tier: C, config: { registry: npm, name: prettier, maxItems: 30 } }76  - id: tailwind77    extend: true78    categories: [packages]79    sensors:80      - { name: npm tailwindcss, url: "https://www.npmjs.com/package/tailwindcss", type: REST_API, connector: package, tier: C, config: { registry: npm, name: tailwindcss, maxItems: 30 } }81  - id: pnpm82    extend: true83    categories: [packages]84    sensors:85      - { name: npm pnpm, url: "https://www.npmjs.com/package/pnpm", type: REST_API, connector: package, tier: C, config: { registry: npm, name: pnpm, maxItems: 30 } }86  - id: electron87    extend: true88    categories: [packages]89    sensors:90      - { name: npm electron, url: "https://www.npmjs.com/package/electron", type: REST_API, connector: package, tier: C, config: { registry: npm, name: electron, maxItems: 30 } }91  - id: react-native92    extend: true93    categories: [packages]94    sensors:95      - { name: npm react-native, url: "https://www.npmjs.com/package/react-native", type: REST_API, connector: package, tier: C, config: { registry: npm, name: react-native, maxItems: 30 } }96  - id: expo97    extend: true98    categories: [packages]99    sensors:100      - { name: npm expo, url: "https://www.npmjs.com/package/expo", type: REST_API, connector: package, tier: C, config: { registry: npm, name: expo, maxItems: 30 } }101  - id: openai102    extend: true103    categories: [packages]104    sensors:105      - { name: npm openai, url: "https://www.npmjs.com/package/openai", type: REST_API, connector: package, tier: C, config: { registry: npm, name: openai, maxItems: 30 } }106      - { name: pypi openai, url: "https://pypi.org/project/openai/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: openai, maxItems: 30 } }107  - id: anthropic108    extend: true109    categories: [packages]110    sensors:111      - { name: npm @anthropic-ai/sdk, url: "https://www.npmjs.com/package/@anthropic-ai/sdk", type: REST_API, connector: package, tier: C, config: { registry: npm, name: "@anthropic-ai/sdk", maxItems: 30 } }112      - { name: npm @anthropic-ai/claude-code, url: "https://www.npmjs.com/package/@anthropic-ai/claude-code", type: REST_API, connector: package, tier: B, config: { registry: npm, name: "@anthropic-ai/claude-code", maxItems: 30 } }113      - { name: pypi anthropic, url: "https://pypi.org/project/anthropic/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: anthropic, maxItems: 30 } }114  - id: google-developers-ai115    extend: true116    categories: [packages]117    sensors:118      - { name: npm @google/genai, url: "https://www.npmjs.com/package/@google/genai", type: REST_API, connector: package, tier: C, config: { registry: npm, name: "@google/genai", maxItems: 30 } }119      - { name: pypi google-genai, url: "https://pypi.org/project/google-genai/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: google-genai, maxItems: 30 } }120  - id: mistral121    extend: true122    categories: [packages]123    sensors:124      - { name: pypi mistralai, url: "https://pypi.org/project/mistralai/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: mistralai, maxItems: 30 } }125  - id: cohere126    extend: true127    categories: [packages]128    sensors:129      - { name: pypi cohere, url: "https://pypi.org/project/cohere/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: cohere, maxItems: 30 } }130  - id: huggingface131    extend: true132    categories: [packages]133    sensors:134      - { name: pypi transformers, url: "https://pypi.org/project/transformers/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: transformers, maxItems: 30 } }135      - { name: pypi huggingface-hub, url: "https://pypi.org/project/huggingface-hub/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: huggingface-hub, maxItems: 30 } }136      - { name: pypi datasets, url: "https://pypi.org/project/datasets/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: datasets, maxItems: 30 } }137  - id: langchain138    extend: true139    categories: [packages]140    sensors:141      - { name: pypi langchain, url: "https://pypi.org/project/langchain/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: langchain, maxItems: 30 } }142      - { name: pypi langgraph, url: "https://pypi.org/project/langgraph/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: langgraph, maxItems: 30 } }143      - { name: npm langchain, url: "https://www.npmjs.com/package/langchain", type: REST_API, connector: package, tier: C, config: { registry: npm, name: langchain, maxItems: 30 } }144  - id: vllm145    extend: true146    categories: [packages]147    sensors:148      - { name: pypi vllm, url: "https://pypi.org/project/vllm/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: vllm, maxItems: 30 } }149  - id: ollama150    extend: true151    categories: [packages]152    sensors:153      - { name: docker hub ollama, url: "https://hub.docker.com/r/ollama/ollama", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: ollama/ollama, maxItems: 30 } }154      - { name: homebrew ollama, url: "https://formulae.brew.sh/formula/ollama", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: ollama } }155  # ── Python (PyPI) ──156  - id: python157    extend: true158    categories: [packages]159    sensors:160      - { name: pypi pip, url: "https://pypi.org/project/pip/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: pip, maxItems: 30 } }161      - { name: pypi uv, url: "https://pypi.org/project/uv/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: uv, maxItems: 30 } }162      - { name: docker hub python, url: "https://hub.docker.com/_/python", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/python, maxItems: 30 } }163  - id: django164    extend: true165    categories: [packages]166    sensors:167      - { name: pypi django, url: "https://pypi.org/project/Django/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: Django, maxItems: 30 } }168  - id: flask169    extend: true170    categories: [packages]171    sensors:172      - { name: pypi flask, url: "https://pypi.org/project/Flask/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: Flask, maxItems: 30 } }173  - id: fastapi174    extend: true175    categories: [packages]176    sensors:177      - { name: pypi fastapi, url: "https://pypi.org/project/fastapi/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: fastapi, maxItems: 30 } }178      - { name: pypi pydantic, url: "https://pypi.org/project/pydantic/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: pydantic, maxItems: 30 } }179  - id: pytorch180    extend: true181    categories: [packages]182    sensors:183      - { name: pypi torch, url: "https://pypi.org/project/torch/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: torch, maxItems: 30 } }184  - id: tensorflow185    extend: true186    categories: [packages]187    sensors:188      - { name: pypi tensorflow, url: "https://pypi.org/project/tensorflow/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: tensorflow, maxItems: 30 } }189      - { name: pypi keras, url: "https://pypi.org/project/keras/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: keras, maxItems: 30 } }190  - id: jax191    extend: true192    categories: [packages]193    sensors:194      - { name: pypi jax, url: "https://pypi.org/project/jax/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: jax, maxItems: 30 } }195  - id: jupyter196    extend: true197    categories: [packages]198    sensors:199      - { name: pypi jupyterlab, url: "https://pypi.org/project/jupyterlab/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: jupyterlab, maxItems: 30 } }200  - id: airflow201    extend: true202    categories: [packages]203    sensors:204      - { name: pypi apache-airflow, url: "https://pypi.org/project/apache-airflow/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: apache-airflow, maxItems: 30 } }205  - id: dbt206    extend: true207    categories: [packages]208    sensors:209      - { name: pypi dbt-core, url: "https://pypi.org/project/dbt-core/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: dbt-core, maxItems: 30 } }210  - id: ansible211    extend: true212    categories: [packages]213    sensors:214      - { name: pypi ansible-core, url: "https://pypi.org/project/ansible-core/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: ansible-core, maxItems: 30 } }215  - id: aws216    extend: true217    categories: [packages]218    sensors:219      - { name: pypi boto3, url: "https://pypi.org/project/boto3/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: boto3, maxItems: 30 } }220      - { name: npm aws-cdk, url: "https://www.npmjs.com/package/aws-cdk", type: REST_API, connector: package, tier: C, config: { registry: npm, name: aws-cdk, maxItems: 30 } }221      - { name: npm @aws-sdk/client-s3, url: "https://www.npmjs.com/package/@aws-sdk/client-s3", type: REST_API, connector: package, tier: C, config: { registry: npm, name: "@aws-sdk/client-s3", maxItems: 30 } }222  - id: stripe223    extend: true224    categories: [packages]225    sensors:226      - { name: npm stripe, url: "https://www.npmjs.com/package/stripe", type: REST_API, connector: package, tier: C, config: { registry: npm, name: stripe, maxItems: 30 } }227      - { name: pypi stripe, url: "https://pypi.org/project/stripe/", type: REST_API, connector: package, tier: C, config: { registry: pypi, name: stripe, maxItems: 30 } }228  - id: supabase229    extend: true230    categories: [packages]231    sensors:232      - { name: npm @supabase/supabase-js, url: "https://www.npmjs.com/package/@supabase/supabase-js", type: REST_API, connector: package, tier: C, config: { registry: npm, name: "@supabase/supabase-js", maxItems: 30 } }233  - id: firebase234    extend: true235    categories: [packages]236    sensors:237      - { name: npm firebase, url: "https://www.npmjs.com/package/firebase", type: REST_API, connector: package, tier: C, config: { registry: npm, name: firebase, maxItems: 30 } }238  - id: vercel239    extend: true240    categories: [packages]241    sensors:242      - { name: npm vercel, url: "https://www.npmjs.com/package/vercel", type: REST_API, connector: package, tier: C, config: { registry: npm, name: vercel, maxItems: 30 } }243      - { name: npm ai (AI SDK), url: "https://www.npmjs.com/package/ai", type: REST_API, connector: package, tier: C, config: { registry: npm, name: ai, maxItems: 30 } }244  - id: mongodb245    extend: true246    categories: [packages]247    sensors:248      - { name: npm mongodb, url: "https://www.npmjs.com/package/mongodb", type: REST_API, connector: package, tier: C, config: { registry: npm, name: mongodb, maxItems: 30 } }249      - { name: docker hub mongo, url: "https://hub.docker.com/_/mongo", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/mongo, maxItems: 30 } }250  - id: postgresql251    extend: true252    categories: [packages]253    sensors:254      - { name: docker hub postgres, url: "https://hub.docker.com/_/postgres", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/postgres, maxItems: 30 } }255      - { name: homebrew postgresql@17, url: "https://formulae.brew.sh/formula/postgresql@17", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: "postgresql@17" } }256  - id: redis257    extend: true258    categories: [packages]259    sensors:260      - { name: docker hub redis, url: "https://hub.docker.com/_/redis", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/redis, maxItems: 30 } }261      - { name: npm ioredis, url: "https://www.npmjs.com/package/ioredis", type: REST_API, connector: package, tier: C, config: { registry: npm, name: ioredis, maxItems: 30 } }262  - id: nginx263    extend: true264    categories: [packages]265    sensors:266      - { name: docker hub nginx, url: "https://hub.docker.com/_/nginx", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/nginx, maxItems: 30 } }267  - id: docker268    extend: true269    categories: [packages]270    sensors:271      - { name: docker hub alpine, url: "https://hub.docker.com/_/alpine", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/alpine, maxItems: 30 } }272      - { name: docker hub ubuntu, url: "https://hub.docker.com/_/ubuntu", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/ubuntu, maxItems: 30 } }273  - id: kubernetes274    extend: true275    categories: [packages]276    sensors:277      - { name: homebrew kubernetes-cli, url: "https://formulae.brew.sh/formula/kubernetes-cli", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: kubernetes-cli } }278      - { name: go k8s.io/client-go, url: "https://pkg.go.dev/k8s.io/client-go", type: REST_API, connector: package, tier: C, config: { registry: goproxy, name: k8s.io/client-go, maxItems: 30 } }279  - id: helm280    extend: true281    categories: [packages]282    sensors:283      - { name: homebrew helm, url: "https://formulae.brew.sh/formula/helm", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: helm } }284  # ── Rust (crates.io) ──285  - id: rust286    extend: true287    categories: [packages]288    sensors:289      - { name: crates serde, url: "https://crates.io/crates/serde", type: REST_API, connector: package, tier: C, config: { registry: crates, name: serde, maxItems: 30 } }290      - { name: crates tokio, url: "https://crates.io/crates/tokio", type: REST_API, connector: package, tier: C, config: { registry: crates, name: tokio, maxItems: 30 } }291      - { name: crates clap, url: "https://crates.io/crates/clap", type: REST_API, connector: package, tier: C, config: { registry: crates, name: clap, maxItems: 30 } }292      - { name: homebrew rust, url: "https://formulae.brew.sh/formula/rust", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: rust } }293  # ── Go (module proxy) ──294  - id: go295    extend: true296    categories: [packages]297    sensors:298      - { name: go golang.org/x/net, url: "https://pkg.go.dev/golang.org/x/net", type: REST_API, connector: package, tier: C, config: { registry: goproxy, name: golang.org/x/net, maxItems: 30 } }299      - { name: go golang.org/x/crypto, url: "https://pkg.go.dev/golang.org/x/crypto", type: REST_API, connector: package, tier: C, config: { registry: goproxy, name: golang.org/x/crypto, maxItems: 30 } }300      - { name: homebrew go, url: "https://formulae.brew.sh/formula/go", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: go } }301  - id: hashicorp302    extend: true303    categories: [packages]304    sensors:305      - { name: go terraform, url: "https://pkg.go.dev/github.com/hashicorp/terraform", type: REST_API, connector: package, tier: C, config: { registry: goproxy, name: github.com/hashicorp/terraform, maxItems: 30 } }306  - id: opentofu307    extend: true308    categories: [packages]309    sensors:310      - { name: homebrew opentofu, url: "https://formulae.brew.sh/formula/opentofu", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: opentofu } }311  - id: grafana312    extend: true313    categories: [packages]314    sensors:315      - { name: docker hub grafana, url: "https://hub.docker.com/r/grafana/grafana", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: grafana/grafana, maxItems: 30 } }316  - id: prometheus317    extend: true318    categories: [packages]319    sensors:320      - { name: docker hub prometheus, url: "https://hub.docker.com/r/prom/prometheus", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: prom/prometheus, maxItems: 30 } }321  # ── Ruby / PHP / .NET / Elixir ──322  - id: rails323    extend: true324    categories: [packages]325    sensors:326      - { name: rubygems rails, url: "https://rubygems.org/gems/rails", type: REST_API, connector: package, tier: C, config: { registry: rubygems, name: rails, maxItems: 30 } }327  - id: ruby328    extend: true329    categories: [packages]330    sensors:331      - { name: rubygems bundler, url: "https://rubygems.org/gems/bundler", type: REST_API, connector: package, tier: C, config: { registry: rubygems, name: bundler, maxItems: 30 } }332      - { name: homebrew ruby, url: "https://formulae.brew.sh/formula/ruby", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: ruby } }333  - id: laravel334    extend: true335    categories: [packages]336    sensors:337      - { name: packagist laravel/framework, url: "https://packagist.org/packages/laravel/framework", type: REST_API, connector: package, tier: C, config: { registry: packagist, name: laravel/framework, maxItems: 30 } }338  - id: php339    extend: true340    categories: [packages]341    sensors:342      - { name: packagist symfony/symfony, url: "https://packagist.org/packages/symfony/symfony", type: REST_API, connector: package, tier: C, config: { registry: packagist, name: symfony/symfony, maxItems: 30 } }343      - { name: homebrew php, url: "https://formulae.brew.sh/formula/php", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: php } }344  - id: wordpress345    extend: true346    categories: [packages]347    sensors:348      - { name: docker hub wordpress, url: "https://hub.docker.com/_/wordpress", type: REST_API, connector: package, tier: D, config: { registry: dockerhub, name: library/wordpress, maxItems: 30 } }349  - id: dotnet350    extend: true351    categories: [packages]352    sensors:353      - { name: nuget Microsoft.AspNetCore.App.Ref, url: "https://www.nuget.org/packages/Microsoft.AspNetCore.App.Ref", type: REST_API, connector: package, tier: C, config: { registry: nuget, name: Microsoft.AspNetCore.App.Ref, maxItems: 30 } }354      - { name: nuget Newtonsoft.Json, url: "https://www.nuget.org/packages/Newtonsoft.Json", type: REST_API, connector: package, tier: C, config: { registry: nuget, name: Newtonsoft.Json, maxItems: 30 } }355      - { name: nuget Microsoft.Extensions.AI, url: "https://www.nuget.org/packages/Microsoft.Extensions.AI", type: REST_API, connector: package, tier: C, config: { registry: nuget, name: Microsoft.Extensions.AI, maxItems: 30 } }356  # ── Tooling / system ──357  - id: git358    extend: true359    categories: [packages]360    sensors:361      - { name: homebrew git, url: "https://formulae.brew.sh/formula/git", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: git } }362  - id: curl363    extend: true364    categories: [packages]365    sensors:366      - { name: homebrew curl, url: "https://formulae.brew.sh/formula/curl", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: curl } }367  - id: openssl368    extend: true369    categories: [packages]370    sensors:371      - { name: homebrew openssl@3, url: "https://formulae.brew.sh/formula/openssl@3", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: "openssl@3" } }372  - id: deno373    extend: true374    categories: [packages]375    sensors:376      - { name: homebrew deno, url: "https://formulae.brew.sh/formula/deno", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: deno } }377  - id: bun378    extend: true379    categories: [packages]380    sensors:381      - { name: npm bun, url: "https://www.npmjs.com/package/bun", type: REST_API, connector: package, tier: C, config: { registry: npm, name: bun, maxItems: 30 } }382  - id: homebrew383    extend: true384    categories: [packages]385    sensors:386      - { name: homebrew ffmpeg, url: "https://formulae.brew.sh/formula/ffmpeg", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: ffmpeg } }387      - { name: homebrew sqlite, url: "https://formulae.brew.sh/formula/sqlite", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: sqlite } }388      - { name: homebrew tmux, url: "https://formulae.brew.sh/formula/tmux", type: REST_API, connector: package, tier: C, config: { registry: homebrew, name: tmux } }389  - id: ghost390    extend: true391    categories: [packages]392    sensors:393      - { name: npm ghost, url: "https://www.npmjs.com/package/ghost", type: REST_API, connector: package, tier: C, config: { registry: npm, name: ghost, maxItems: 30 } }394