TypeScript 55.4%
Python 43.2%
SQL 1.2%
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