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%
29.8 KB · 196 lines python
Raw Blame History
1# Second half of the spec for config/sources.d/47-open-source-long-tail.yaml .23GEO = ["open-source", "developer", "science"]45SPEC2 = [6    "Geospatial",7    src("osgeo", "OSGeo (GDAL, GRASS, GeoServer, PostGIS, QGIS)", "osgeo.org", ["osgeo", "gdal", "grass gis", "geoserver", "postgis", "qgis", "proj", "geos", "mapserver", "pdal"], categories=GEO,8        products=["GDAL", "GRASS GIS", "GeoServer", "PostGIS", "QGIS", "PROJ", "GEOS", "MapServer", "PDAL", "GeoNode", "pgRouting", "GeoTools"],9        repos=["OSGeo/gdal", "OSGeo/grass", "geoserver/geoserver", "postgis/postgis", "qgis/QGIS", "OSGeo/PROJ", "libgeos/geos", "MapServer/MapServer", "PDAL/PDAL", "GeoNode/geonode", "pgRouting/pgrouting", "geotools/geotools"]),10    src("openstreetmap", "OpenStreetMap ecosystem", "openstreetmap.org", ["osm", "openstreetmap", "osm2pgsql", "osrm", "valhalla", "nominatim", "id editor", "josm", "tippecanoe", "planetiler", "pmtiles", "protomaps", "organic maps", "streetcomplete"],11        categories=["open-source", "developer", "technology"], country="GB",12        products=["osm2pgsql", "OSRM", "Valhalla", "Nominatim", "Photon", "iD", "JOSM", "Tippecanoe", "Planetiler", "PMTiles", "Osmium", "OpenMapTiles", "TileServer GL", "OsmAnd", "Organic Maps", "StreetComplete", "OpenStreetMap Carto", "Mapnik"],13        repos=["osm2pgsql-dev/osm2pgsql", "Project-OSRM/osrm-backend", "valhalla/valhalla", "osm-search/Nominatim", "komoot/photon", "openstreetmap/iD", ("JOSM/josm", T), "felt/tippecanoe", "onthegomap/planetiler",14               "protomaps/PMTiles", "osmcode/osmium-tool", "openmaptiles/openmaptiles", "maptiler/tileserver-gl", "osmandapp/OsmAnd", "organicmaps/organicmaps", "streetcomplete/StreetComplete",15               "gravitystorm/openstreetmap-carto", "mapnik/mapnik", "openstreetmap/openstreetmap-website"],16        feeds=[("osm blog", "https://blog.openstreetmap.org/feed/")]),17    src("turfjs", "Turf.js", "turfjs.org", ["turf js", "turfjs"], repos=["Turfjs/turf"]),1819    "Diagrams and editors",20    src("mermaid", "Mermaid", "mermaid.js.org", ["mermaid js", "mermaidjs", "mermaid diagrams", "mermaid chart"], tier="B", products=["Mermaid", "Mermaid CLI", "Mermaid Live Editor"],21        repos=["mermaid-js/mermaid", "mermaid-js/mermaid-cli", "mermaid-js/mermaid-live-editor"]),22    src("excalidraw", "Excalidraw", "excalidraw.com", ["excalidraw"], repos=["excalidraw/excalidraw"]),23    src("tldraw", "tldraw", "tldraw.dev", ["tldraw", "tldraw sdk"], country="GB", repos=["tldraw/tldraw"]),24    src("drawio", "draw.io (diagrams.net)", "drawio.com", ["draw.io", "drawio", "diagrams.net", "jgraph"], country="GB", products=["draw.io", "draw.io Desktop"], repos=["jgraph/drawio", "jgraph/drawio-desktop"]),25    src("plantuml", "PlantUML", "plantuml.com", ["plantuml", "plant uml"], country="FR", repos=["plantuml/plantuml", "plantuml/plantuml-server"]),26    src("d2lang", "D2 (Terrastruct)", "d2lang.com", ["d2 diagram language", "terrastruct", "d2lang"], country="US", repos=["terrastruct/d2"]),27    src("penpot", "Penpot", "penpot.app", ["penpot", "kaleidos penpot"], country="ES", repos=["penpot/penpot"]),28    src("codemirror", "CodeMirror / ProseMirror", "codemirror.net", ["codemirror", "codemirror 6", "prosemirror", "lezer", "marijn haverbeke"], country="NL", products=["CodeMirror 6", "Lezer", "ProseMirror"],29        repos=["codemirror/dev", "codemirror/view", "codemirror/state", "lezer-parser/lezer", "ProseMirror/prosemirror-view", "ProseMirror/prosemirror-state", "ProseMirror/prosemirror-model"]),30    src("tiptap", "Tiptap", "tiptap.dev", ["tiptap", "tiptap editor", "ueberdosis", "hocuspocus"], country="DE", repos=["ueberdosis/tiptap", "ueberdosis/hocuspocus"]),31    src("slatejs", "Slate", "slatejs.org", ["slate js", "slatejs", "slate editor"], repos=["ianstormtaylor/slate"]),32    src("quill", "Quill", "quilljs.com", ["quill js", "quilljs", "quill editor", "slab quill"], repos=["slab/quill", "slab/parchment"]),33    src("yjs", "Yjs", "yjs.dev", ["yjs", "y.js", "crdt", "y-websocket", "y-webrtc", "y-prosemirror", "lib0"], products=["Yjs", "y-websocket", "y-webrtc", "y-indexeddb", "y-prosemirror", "y-protocols", "lib0", "Y-Sweet"],34        repos=["yjs/yjs", "yjs/y-websocket", "yjs/y-webrtc", "yjs/y-indexeddb", "yjs/y-prosemirror", "yjs/y-protocols", "dmonad/lib0", "jamsocket/y-sweet"]),35    src("automerge", "Automerge / local-first CRDTs", "automerge.org", ["automerge", "loro crdt", "local-first", "electric sql", "powersync", "replicache", "zero sync", "liveblocks", "partykit"],36        products=["Automerge", "Loro", "ElectricSQL", "PowerSync", "Replicache", "Zero", "Liveblocks", "PartyKit"],37        repos=["automerge/automerge", "loro-dev/loro", "electric-sql/electric", "powersync-ja/powersync-js", "rocicorp/replicache", "rocicorp/mono", "liveblocks/liveblocks", "partykit/partykit"]),3839    "Databases, data engineering and messaging",40    ext("postgresql", products=["pgvector", "PgBouncer", "Patroni", "pgBackRest", "Citus", "pgAdmin", "PostgREST", "pg_auto_failover", "pgroonga", "Postgres.app"],41        repos=[("postgres/postgres", T), "pgvector/pgvector", "pgbouncer/pgbouncer", "patroni/patroni", "pgbackrest/pgbackrest", "citusdata/citus", ("pgadmin-org/pgadmin4", T), "PostgREST/postgrest", "PostgresApp/PostgresApp", "pgroonga/pgroonga"]),42    ext("sqlite", repos=[("sqlite/sqlite", T), "sqlitebrowser/sqlitebrowser", "asg017/sqlite-vec"], products=["DB Browser for SQLite", "sqlite-vec"]),43    ext("mongodb", repos=["mongodb/mongosh", "mongodb/node-mongodb-native", "mongodb/mongo-python-driver", "mongodb-js/compass"], products=["mongosh", "Compass", "Node.js driver", "PyMongo"]),44    ext("mysql", repos=["mysql/mysql-shell", "mysql/mysql-connector-python", "mysql/mysql-connector-nodejs"], products=["MySQL Shell", "MySQL Connector/Python", "MySQL Connector/Node.js"]),45    ext("mariadb", repos=["MariaDB/mariadb-connector-c", "MariaDB/mariadb-connector-j", "mariadb-corporation/MaxScale"], products=["MariaDB MaxScale", "Connector/C", "Connector/J"]),46    ext("redis", repos=["redis/redis-om-node", "redis/RedisInsight", "redis/rueidis", "redis/jedis", "redis/lettuce"], products=["RedisInsight", "Jedis", "Lettuce", "rueidis"]),47    ext("duckdb", repos=["duckdb/duckdb-wasm", "duckdb/duckdb-node-neo", "duckdb/duckdb-python", "duckdb/dbt-duckdb"], products=["DuckDB-Wasm", "DuckDB Node Neo", "DuckDB Python", "dbt-duckdb"]),48    ext("clickhouse", repos=["ClickHouse/clickhouse-js", "ClickHouse/clickhouse-go", "ClickHouse/clickhouse-connect", "ClickHouse/clickhouse-java"], products=["clickhouse-js", "clickhouse-go", "clickhouse-connect", "clickhouse-java"]),49    ext("elastic", repos=["elastic/logstash", "elastic/beats", "elastic/elastic-agent", "elastic/eland"], products=["Logstash", "Beats", "Elastic Agent", "Eland"]),50    ext("neo4j", repos=["neo4j/neo4j-python-driver", "neo4j/neo4j-javascript-driver", "neo4j/graph-data-science", "neo4j/apoc", "neo4j-labs/llm-graph-builder"], products=["Neo4j Python driver", "Neo4j JavaScript driver", "Graph Data Science", "APOC"]),51    ext("cassandra", repos=["datastax/java-driver", "datastax/python-driver", "k8ssandra/k8ssandra-operator", "apache/cassandra-java-driver"], products=["DataStax Java driver", "DataStax Python driver", "K8ssandra"]),52    ext("kafka", repos=["kafbat/kafka-ui", "confluentinc/librdkafka", "tulios/kafkajs", "AutoMQ/automq", "provectus/kafka-ui"], products=["Kafbat UI", "librdkafka", "KafkaJS", "AutoMQ"]),53    ext("rabbitmq", repos=["rabbitmq/cluster-operator", "rabbitmq/rabbitmq-java-client", "rabbitmq/amqp091-go", "rabbitmq/rabbitmq-dotnet-client", "rabbitmq/rabbitmq-perf-test"], products=["RabbitMQ Cluster Operator", "RabbitMQ Java client", "amqp091-go", ".NET client"]),54    ext("airflow", repos=["astronomer/astro-sdk", "astronomer/astronomer-cosmos", "astronomer/astro-cli", "apache/airflow-client-python", "apache/airflow-site"], products=["Astro CLI", "Cosmos", "Astro SDK"]),55    ext("dbt", repos=["dbt-labs/dbt-postgres", "dbt-labs/dbt-snowflake", "dbt-labs/dbt-bigquery", "dbt-labs/metricflow", "dbt-labs/dbt-utils", "dbt-labs/dbt-adapters"], products=["dbt-postgres", "dbt-snowflake", "dbt-bigquery", "MetricFlow", "dbt-utils"]),56    ext("redpanda", repos=["redpanda-data/connect", "redpanda-data/console", "redpanda-data/helm-charts", "redpanda-data/redpanda-operator"], products=["Redpanda Connect", "Redpanda Console"]),57    ext("kong", repos=["Kong/insomnia", "Kong/kubernetes-ingress-controller", "Kong/kong-js-pdk", "Kong/deck", "Kong/kong-plugin-prometheus"], products=["Insomnia", "Kong Ingress Controller", "decK"]),58    ext("caddy", repos=["caddyserver/xcaddy", "caddyserver/certmagic", "caddyserver/cache-handler", "caddyserver/caddy-docker", "caddyserver/ingress"], products=["xcaddy", "CertMagic"]),59    ext("nginx", repos=["nginx/unit", "nginx/njs", "nginx/kubernetes-ingress", "nginx/nginx-prometheus-exporter", "nginx/agent"], products=["NGINX Unit", "njs", "NGINX Ingress Controller", "NGINX Agent"]),60    src("questdb", "QuestDB", "questdb.io", ["questdb", "quest db"], categories=OSINF, country="GB", repos=["questdb/questdb"]),61    src("arangodb", "ArangoDB", "arangodb.com", ["arangodb", "arango"], categories=OSINF, country="US", repos=["arangodb/arangodb"]),62    src("scylladb", "ScyllaDB", "scylladb.com", ["scylla", "scylladb"], categories=OSINF, country="US", repos=[("scylladb/scylladb", T), "scylladb/scylla-operator", "scylladb/scylla-manager"]),63    src("opensearch", "OpenSearch", "opensearch.org", ["opensearch", "opensearch project", "opensearch dashboards"], tier="B", categories=OSINF, country="US", products=["OpenSearch", "OpenSearch Dashboards", "Data Prepper"],64        repos=["opensearch-project/OpenSearch", "opensearch-project/OpenSearch-Dashboards", "opensearch-project/data-prepper", "opensearch-project/opensearch-py", "opensearch-project/opensearch-js"],65        feeds=[("blog feed", "https://opensearch.org/blog/feed.xml")]),66    src("milvus", "Milvus (Zilliz)", "milvus.io", ["milvus", "zilliz", "attu"], categories=OSINF, country="US", products=["Milvus", "pymilvus", "Attu"], repos=["milvus-io/milvus", "milvus-io/pymilvus", "zilliztech/attu"]),67    src("pingcap", "PingCAP / TiDB", "pingcap.com", ["pingcap", "tidb", "tikv", "tiflash"], categories=OSINF, country="CN", products=["TiDB", "TiFlash", "TiDB Operator"], repos=["pingcap/tidb", "pingcap/tiflash", "pingcap/tidb-operator"]),68    src("yugabyte", "YugabyteDB", "yugabyte.com", ["yugabyte", "yugabytedb"], categories=OSINF, country="US", repos=["yugabyte/yugabyte-db"]),69    src("dragonflydb", "Dragonfly", "dragonflydb.io", ["dragonflydb", "dragonfly db"], categories=OSINF, country="IL", repos=["dragonflydb/dragonfly"]),70    src("valkey", "Valkey", "valkey.io", ["valkey", "valkey io"], tier="B", categories=OSINF, country="US", repos=["valkey-io/valkey", "valkey-io/valkey-glide", "valkey-io/valkey-go"]),71    src("surrealdb", "SurrealDB", "surrealdb.com", ["surrealdb", "surreal db"], categories=OSINF, country="GB", repos=["surrealdb/surrealdb"]),72    src("dolthub", "Dolt", "dolthub.com", ["dolt", "dolthub", "doltgres"], categories=OSINF, country="US", repos=["dolthub/dolt", "dolthub/doltgresql"]),73    src("influxdata", "InfluxData", "influxdata.com", ["influxdb", "influxdata", "telegraf", "flux language"], tier="B", categories=OSINF, country="US", products=["InfluxDB", "Telegraf"],74        repos=["influxdata/influxdb", "influxdata/telegraf", "influxdata/influxdb-client-python"]),75    src("couchbase", "Couchbase", "couchbase.com", ["couchbase", "couchbase server", "couchbase lite"], categories=OSINF, country="US", repos=["couchbase/couchbase-python-client", "couchbase/couchnode", "couchbase/gocb"]),76    src("tarantool", "Tarantool", "tarantool.io", ["tarantool"], categories=OSINF, country="RU", repos=["tarantool/tarantool"]),77    src("eventstore", "KurrentDB (EventStoreDB)", "kurrent.io", ["eventstoredb", "event store", "kurrent", "kurrentdb"], categories=OSINF, repos=["kurrent-io/KurrentDB"]),78    src("trino", "Trino", "trino.io", ["trino", "trinodb", "presto sql"], tier="B", categories=OSINF, country="US", repos=["trinodb/trino", "trinodb/trino-gateway", "trinodb/trino-python-client"], feeds=[("blog feed", "https://trino.io/feed.xml")]),79    src("presto", "Presto (Linux Foundation)", "prestodb.io", ["presto", "prestodb", "presto foundation"], categories=OSINF, country="US", repos=["prestodb/presto"]),80    src("debezium", "Debezium", "debezium.io", ["debezium", "change data capture"], tier="B", categories=OSINF, repos=["debezium/debezium", "debezium/debezium-server", "debezium/debezium-operator"], feeds=[("blog feed", "https://debezium.io/blog.atom", "ATOM")]),81    src("materialize", "Materialize", "materialize.com", ["materialize", "materialize inc"], categories=OSINF, country="US", repos=["MaterializeInc/materialize"]),82    src("risingwave", "RisingWave", "risingwave.com", ["risingwave", "rising wave"], categories=OSINF, country="US", repos=["risingwavelabs/risingwave"]),83    src("metabase", "Metabase", "metabase.com", ["metabase"], tier="B", categories=OSINF, country="US", repos=["metabase/metabase"]),84    src("redash", "Redash", "redash.io", ["redash"], categories=OSINF, repos=["getredash/redash"]),85    src("cube", "Cube (Cube.js)", "cube.dev", ["cube js", "cubejs", "cube dev", "semantic layer"], categories=OSINF, country="US", repos=["cube-js/cube"]),86    src("datahub", "DataHub (Acryl)", "datahubproject.io", ["datahub", "acryl data", "linkedin datahub"], categories=OSINF, country="US", repos=["datahub-project/datahub"]),87    src("openmetadata", "OpenMetadata", "open-metadata.org", ["openmetadata", "collate"], categories=OSINF, country="US", repos=["open-metadata/OpenMetadata"]),88    src("openlineage", "OpenLineage / Marquez", "openlineage.io", ["openlineage", "marquez"], categories=OSINF, country="US", repos=["OpenLineage/OpenLineage", "MarquezProject/marquez"]),89    src("prefect", "Prefect", "prefect.io", ["prefect", "prefect io", "prefect cloud"], tier="B", categories=OSINF, country="US", repos=["PrefectHQ/prefect", "PrefectHQ/fastmcp", "PrefectHQ/marvin"]),90    src("dagster", "Dagster", "dagster.io", ["dagster", "dagster labs"], tier="B", categories=OSINF, country="US", repos=["dagster-io/dagster"]),91    src("kestra", "Kestra", "kestra.io", ["kestra"], categories=OSINF, country="FR", repos=["kestra-io/kestra"]),92    src("mage-ai", "Mage", "mage.ai", ["mage ai", "mage-ai"], categories=OSINF, country="US", repos=["mage-ai/mage-ai"]),93    src("flyte", "Flyte", "flyte.org", ["flyte", "flyteorg", "union.ai flyte"], categories=OSML, country="US", repos=["flyteorg/flyte", "flyteorg/flytekit"]),94    src("meltano", "Meltano / Singer", "meltano.com", ["meltano", "singer taps"], categories=OSINF, country="US", repos=["meltano/meltano", "meltano/sdk"]),95    src("dlt", "dlt (data load tool)", "dlthub.com", ["dlt hub", "dlthub", "data load tool"], categories=OSINF, country="DE", repos=["dlt-hub/dlt"]),96    src("sqlmesh", "SQLMesh / SQLGlot (Tobiko)", "sqlmesh.com", ["sqlmesh", "sqlglot", "tobiko data"], categories=OSINF, country="US", products=["SQLMesh", "SQLGlot"], repos=["TobikoData/sqlmesh", "tobymao/sqlglot"]),97    src("sqlfluff", "SQLFluff", "sqlfluff.com", ["sqlfluff"], repos=["sqlfluff/sqlfluff"]),98    src("ibis", "Ibis", "ibis-project.org", ["ibis project", "ibis dataframe"], categories=OSINF, repos=["ibis-project/ibis"]),99    src("lakefs", "lakeFS (Treeverse)", "lakefs.io", ["lakefs", "treeverse"], categories=OSINF, country="IL", repos=["treeverse/lakeFS"]),100    src("delta-lake", "Delta Lake", "delta.io", ["delta lake", "delta-io", "delta-rs", "unity catalog"], categories=OSINF, country="US", products=["Delta Lake", "delta-rs", "Unity Catalog"],101        repos=["delta-io/delta", "delta-io/delta-rs", "unitycatalog/unitycatalog"]),102    src("windmill", "Windmill", "windmill.dev", ["windmill dev", "windmill labs"], categories=OSINF, country="US", repos=["windmill-labs/windmill"]),103    src("activepieces", "Activepieces", "activepieces.com", ["activepieces"], categories=OSINF, repos=["activepieces/activepieces"]),104    src("appsmith", "Appsmith", "appsmith.com", ["appsmith"], categories=OSINF, country="US", repos=["appsmithorg/appsmith"]),105    src("tooljet", "ToolJet", "tooljet.com", ["tooljet"], categories=OSINF, country="US", repos=["ToolJet/ToolJet"]),106    src("budibase", "Budibase", "budibase.com", ["budibase"], categories=OSINF, country="GB", repos=["Budibase/budibase"]),107    src("nocodb", "NocoDB", "nocodb.com", ["nocodb"], categories=OSINF, repos=["nocodb/nocodb"]),108    src("baserow", "Baserow", "baserow.io", ["baserow"], categories=OSINF, country="NL", feeds=[("gitlab tags", "https://gitlab.com/baserow/baserow/-/tags?format=atom", "ATOM")]),109    src("appwrite", "Appwrite", "appwrite.io", ["appwrite"], tier="B", categories=OSINF, country="US", repos=["appwrite/appwrite", "appwrite/sdk-for-web", "appwrite/console"]),110    src("pocketbase", "PocketBase", "pocketbase.io", ["pocketbase"], categories=OSINF, repos=["pocketbase/pocketbase"]),111    src("parse-platform", "Parse Platform", "parseplatform.org", ["parse server", "parse platform"], categories=OSINF, repos=["parse-community/parse-server", "parse-community/parse-dashboard", "parse-community/Parse-SDK-JS"]),112    src("nhost", "Nhost", "nhost.io", ["nhost"], categories=OSINF, repos=["nhost/nhost"]),113    src("convex", "Convex", "convex.dev", ["convex dev", "convex backend"], categories=OSINF, country="US", repos=["get-convex/convex-backend", "get-convex/convex-js"]),114    src("vespa", "Vespa", "vespa.ai", ["vespa ai", "vespa search"], categories=OSINF, country="NO", repos=["vespa-engine/vespa", "vespa-engine/pyvespa"]),115    src("quickwit", "Quickwit / tantivy", "quickwit.io", ["quickwit", "tantivy"], categories=OSINF, country="FR", products=["Quickwit", "tantivy"], repos=["quickwit-oss/quickwit", "quickwit-oss/tantivy"]),116    src("lancedb", "LanceDB", "lancedb.com", ["lancedb", "lance format"], categories=OSINF, country="US", products=["LanceDB", "Lance"], repos=["lancedb/lancedb", "lancedb/lance"]),117    src("manticore", "Manticore Search", "manticoresearch.com", ["manticore search", "manticoresearch"], categories=OSINF, repos=["manticoresoftware/manticoresearch"]),118    src("emqx", "EMQX", "emqx.com", ["emqx", "emq technologies", "nanomq", "mqttx"], categories=OSINF, country="CN", products=["EMQX", "NanoMQ", "MQTTX"], repos=["emqx/emqx", "emqx/nanomq", "emqx/MQTTX"]),119    src("zeromq", "ZeroMQ", "zeromq.org", ["zeromq", "zmq", "libzmq", "0mq"], categories=OSINF, repos=["zeromq/libzmq", "zeromq/cppzmq", "zeromq/pyzmq", "zeromq/zeromq.js"]),120    src("centrifugo", "Centrifugo", "centrifugal.dev", ["centrifugo", "centrifugal"], categories=OSINF, repos=["centrifugal/centrifugo", "centrifugal/centrifuge"]),121    src("camunda", "Camunda", "camunda.com", ["camunda", "zeebe", "camunda platform", "bpmn.io"], tier="B", categories=OSINF, country="DE", products=["Camunda 8", "Zeebe", "Camunda 7", "bpmn-js", "Camunda Modeler"],122        repos=["camunda/camunda", "camunda/camunda-bpm-platform", "bpmn-io/bpmn-js", "camunda/camunda-modeler", "camunda/zeebe-process-test"]),123    src("flowable", "Flowable", "flowable.com", ["flowable", "flowable bpm"], categories=OSINF, country="CH", repos=["flowable/flowable-engine"]),124    src("conductor-oss", "Conductor OSS (Orkes)", "conductor-oss.org", ["conductor oss", "netflix conductor", "orkes conductor"], categories=OSINF, country="US", repos=["conductor-oss/conductor", "orkes-io/orkes-conductor-community"]),125    ext("inngest", repos=["inngest/inngest", "inngest/inngest-js"], products=["Inngest CLI", "Inngest JS SDK"]),126    src("trigger-dev", "Trigger.dev", "trigger.dev", ["trigger.dev", "triggerdotdev"], categories=OSINF, country="GB", repos=["triggerdotdev/trigger.dev"]),127    src("hatchet", "Hatchet", "hatchet.run", ["hatchet run", "hatchet workflows"], categories=OSINF, country="US", repos=["hatchet-dev/hatchet"]),128    src("dbeaver", "DBeaver", "dbeaver.io", ["dbeaver", "cloudbeaver"], categories=OSINF, country="US", products=["DBeaver", "CloudBeaver"], repos=["dbeaver/dbeaver", "dbeaver/cloudbeaver"]),129    src("openresty", "OpenResty", "openresty.org", ["openresty", "agentzh"], categories=OSINF, repos=["openresty/openresty", "openresty/lua-resty-core"]),130    src("varnish", "Varnish Cache", "varnish-cache.org", ["varnish", "varnish cache", "varnish software"], categories=OSINF, country="NO", repos=["varnishcache/varnish-cache"]),131    src("lighttpd", "lighttpd", "lighttpd.net", ["lighttpd"], categories=OSINF, repos=[("lighttpd/lighttpd1.4", T)]),132    src("litespeed", "LiteSpeed / OpenLiteSpeed", "openlitespeed.org", ["openlitespeed", "litespeed", "lscache"], categories=OSINF, country="US", repos=["litespeedtech/openlitespeed", "litespeedtech/lscache_wp"]),133    src("h2o", "H2O HTTP server", "h2o.examp1e.net", ["h2o server", "h2o http/2"], categories=OSINF, country="JP", repos=[("h2o/h2o", T)]),134    src("mitmproxy", "mitmproxy", "mitmproxy.org", ["mitmproxy", "mitmweb"], categories=OSSEC, repos=["mitmproxy/mitmproxy", "mitmproxy/pdoc"]),135    src("httpie", "HTTPie", "httpie.io", ["httpie", "http cli"], repos=["httpie/cli", "httpie/desktop"]),136    src("hoppscotch", "Hoppscotch", "hoppscotch.io", ["hoppscotch"], repos=["hoppscotch/hoppscotch"]),137    src("bruno", "Bruno", "usebruno.com", ["bruno api client", "usebruno"], repos=["usebruno/bruno"]),138    src("swagger", "Swagger (SmartBear)", "swagger.io", ["swagger", "swagger ui", "swagger editor", "swagger codegen", "smartbear swagger"], tier="B", categories=OSD, country="US", products=["Swagger UI", "Swagger Editor", "Swagger Core", "Swagger Parser", "Swagger Codegen"],139        repos=["swagger-api/swagger-ui", "swagger-api/swagger-editor", "swagger-api/swagger-core", "swagger-api/swagger-parser", "swagger-api/swagger-codegen"]),140    src("openapi-tools", "OpenAPI tooling", "openapis.org", ["openapi generator", "redoc", "redocly", "stoplight", "spectral", "scalar", "oapi-codegen", "openapi typescript", "orval", "kiota"], categories=["open-source", "developer", "standards"],141        products=["OpenAPI Generator", "Redoc", "Redocly CLI", "Spectral", "Prism", "Scalar", "openapi-typescript", "Orval", "Kiota", "oapi-codegen"],142        repos=["OpenAPITools/openapi-generator", "Redocly/redoc", "Redocly/redocly-cli", "stoplightio/spectral", "stoplightio/prism", "scalar/scalar", "openapi-ts/openapi-typescript", "orval-labs/orval", "microsoft/kiota", "oapi-codegen/oapi-codegen"]),143    src("wiremock", "WireMock", "wiremock.org", ["wiremock"], repos=["wiremock/wiremock", "wiremock/wiremock-docker"]),144    src("mockoon", "Mockoon", "mockoon.com", ["mockoon"], repos=["mockoon/mockoon"]),145    src("locust", "Locust", "locust.io", ["locust load testing", "locustio"], repos=["locustio/locust"]),146    src("gatling", "Gatling", "gatling.io", ["gatling load testing"], country="FR", repos=["gatling/gatling"]),147    src("artillery", "Artillery", "artillery.io", ["artillery load testing", "artilleryio"], repos=["artilleryio/artillery"]),148    src("hurl", "Hurl", "hurl.dev", ["hurl http", "orange hurl"], country="FR", repos=["Orange-OpenSource/hurl"]),149150    "Observability and monitoring",151    ext("grafana", repos=["grafana/k6", "grafana/pyroscope", "grafana/beyla", "grafana/oncall", "grafana/grafana-operator", "grafana/faro-web-sdk", "grafana/xk6", "grafana/k6-operator"], products=["k6", "Pyroscope", "Beyla", "Grafana OnCall", "Grafana Operator", "Faro"]),152    ext("sentry", repos=["getsentry/sentry-javascript", "getsentry/sentry-python", "getsentry/sentry-cli", "getsentry/sentry-go", "getsentry/sentry-java", "getsentry/sentry-react-native", "getsentry/spotlight", "getsentry/relay"],153        products=["Sentry JavaScript SDK", "Sentry Python SDK", "sentry-cli", "Sentry Go SDK", "Sentry Java SDK", "Sentry React Native", "Spotlight", "Relay"]),154    ext("datadog", repos=["vectordotdev/vector", "DataDog/dd-trace-js", "DataDog/dd-trace-py", "DataDog/dd-trace-go", "DataDog/dd-trace-java", "DataDog/datadog-operator", "DataDog/browser-sdk"],155        products=["Vector", "dd-trace-js", "dd-trace-py", "dd-trace-go", "dd-trace-java", "Datadog Operator", "Browser SDK"]),156    ext("posthog", repos=["PostHog/posthog-js", "PostHog/posthog-python", "PostHog/posthog-android", "PostHog/posthog-ios"], products=["posthog-js", "posthog-python", "posthog-android", "posthog-ios"]),157    ext("victoriametrics", repos=["VictoriaMetrics/VictoriaLogs", "VictoriaMetrics/operator", "VictoriaMetrics/helm-charts", "VictoriaMetrics/VictoriaTraces"], products=["VictoriaLogs", "VictoriaMetrics Operator", "VictoriaTraces"]),158    src("netdata", "Netdata", "netdata.cloud", ["netdata", "netdata cloud"], tier="B", categories=OSINF, country="US", repos=["netdata/netdata"]),159    src("uptime-kuma", "Uptime Kuma", "uptime.kuma.pet", ["uptime kuma", "louislam"], categories=OSINF, repos=["louislam/uptime-kuma", "louislam/dockge"]),160    src("signoz", "SigNoz", "signoz.io", ["signoz"], categories=OSINF, country="IN", repos=["SigNoz/signoz", "SigNoz/signoz-otel-collector", "SigNoz/charts"]),161    src("highlight", "Highlight.io", "highlight.io", ["highlight io", "highlight.io"], categories=OSINF, country="US", repos=["highlight/highlight"]),162    src("openobserve", "OpenObserve", "openobserve.ai", ["openobserve", "zinc observe"], categories=OSINF, country="US", repos=["openobserve/openobserve"]),163    src("zipkin", "Zipkin", "zipkin.io", ["zipkin", "openzipkin", "brave tracing"], categories=OSINF, repos=["openzipkin/zipkin", "openzipkin/brave", "openzipkin/zipkin-go", "openzipkin/zipkin-js", "openzipkin/zipkin-reporter-java"]),164    src("plausible", "Plausible Analytics", "plausible.io", ["plausible", "plausible analytics"], categories=OSINF, country="EE", repos=["plausible/analytics", "plausible/community-edition", "plausible/plausible-tracker"]),165    src("umami", "Umami", "umami.is", ["umami analytics"], categories=OSINF, repos=["umami-software/umami"]),166    src("matomo", "Matomo", "matomo.org", ["matomo", "piwik"], tier="B", categories=OSINF, country="NZ", repos=["matomo-org/matomo", "matomo-org/tag-manager", "matomo-org/docker"], feeds=[("blog feed", "https://matomo.org/feed/")]),167    src("graylog", "Graylog", "graylog.org", ["graylog"], categories=OSINF, country="US", repos=["Graylog2/graylog2-server", "Graylog2/graylog-docker"]),168    src("zabbix", "Zabbix", "zabbix.com", ["zabbix"], tier="B", categories=OSINF, country="LV", repos=[("zabbix/zabbix", T), "zabbix/zabbix-docker"], feeds=[("blog feed", "https://blog.zabbix.com/feed/")]),169    src("nagios", "Nagios", "nagios.org", ["nagios", "nagios core", "nagios plugins"], categories=OSINF, country="US", repos=["NagiosEnterprises/nagioscore", "nagios-plugins/nagios-plugins", "NagiosEnterprises/nrpe", "NagiosEnterprises/ncpa"]),170    src("icinga", "Icinga", "icinga.com", ["icinga", "icinga2", "icinga web"], categories=OSINF, country="DE", repos=["Icinga/icinga2", "Icinga/icingaweb2", "Icinga/icingadb"]),171    src("checkmk", "Checkmk", "checkmk.com", ["checkmk", "check_mk", "tribe29"], categories=OSINF, country="DE", repos=[("Checkmk/checkmk", T)]),172    src("librenms", "LibreNMS", "librenms.org", ["librenms"], categories=OSINF, repos=["librenms/librenms"]),173    src("healthchecks", "Healthchecks.io", "healthchecks.io", ["healthchecks io", "healthchecks.io", "cron monitoring"], categories=OSINF, repos=["healthchecks/healthchecks"]),174    src("gatus", "Gatus", "gatus.io", ["gatus", "twin gatus"], categories=OSINF, repos=["TwiN/gatus"]),175    src("cachet", "Cachet", "cachethq.io", ["cachet status page", "cachethq"], categories=OSINF, repos=["cachethq/cachet"]),176    src("glitchtip", "GlitchTip", "glitchtip.com", ["glitchtip"], categories=OSINF, feeds=[("gitlab tags", "https://gitlab.com/glitchtip/glitchtip-backend/-/tags?format=atom", "ATOM")]),177    src("perses", "Perses", "perses.dev", ["perses dashboards"], categories=OSINF, repos=["perses/perses"]),178    src("openstatus", "OpenStatus", "openstatus.dev", ["openstatus"], categories=OSINF, repos=["openstatusHQ/openstatus"]),179    src("kener", "Kener", "kener.ing", ["kener status page"], categories=OSINF, repos=["rajnandan1/kener"]),180    src("statping", "Statping-ng", "statping-ng.github.io", ["statping", "statping-ng"], categories=OSINF, repos=["statping-ng/statping-ng"]),181    src("coroot", "Coroot", "coroot.com", ["coroot"], categories=OSINF, repos=["coroot/coroot"]),182    src("hyperdx", "HyperDX (ClickStack)", "hyperdx.io", ["hyperdx", "clickstack"], categories=OSINF, repos=["hyperdxio/hyperdx"]),183    src("parca", "Parca (Polar Signals)", "parca.dev", ["parca", "polar signals"], categories=OSINF, repos=["parca-dev/parca", "parca-dev/parca-agent"]),184    src("pixie", "Pixie", "px.dev", ["pixie observability", "pixie labs"], categories=OSINF, repos=["pixie-io/pixie"]),185    src("odigos", "Odigos", "odigos.io", ["odigos", "keyval odigos"], categories=OSINF, repos=["odigos-io/odigos"]),186    src("kubeshark", "Kubeshark", "kubeshark.co", ["kubeshark", "mizu"], categories=OSINF, repos=["kubeshark/kubeshark"]),187    src("robusta", "Robusta / HolmesGPT", "robusta.dev", ["robusta dev", "holmesgpt"], categories=OSINF, repos=["robusta-dev/robusta", "robusta-dev/holmesgpt"]),188    src("komodor", "Komodor / Helm Dashboard", "komodor.com", ["komodor", "helm dashboard", "validkube"], categories=OSINF, repos=["komodorio/helm-dashboard"]),189    src("botkube", "Botkube", "botkube.io", ["botkube"], categories=OSINF, repos=["kubeshop/botkube"]),190    src("kubeshop", "Kubeshop (Testkube, Monokle, Tracetest)", "kubeshop.io", ["kubeshop", "testkube", "monokle", "tracetest", "kusk"], categories=OSINF, products=["Testkube", "Monokle", "Tracetest"], repos=["kubeshop/testkube", "kubeshop/monokle", "kubeshop/tracetest"]),191    src("keploy", "Keploy", "keploy.io", ["keploy"], categories=OSINF, repos=["keploy/keploy"]),192    src("testcontainers", "Testcontainers (AtomicJar / Docker)", "testcontainers.com", ["testcontainers", "testcontainers cloud", "atomicjar"], products=["Testcontainers for Go", "Testcontainers for Node", "Testcontainers for Python", "Testcontainers for .NET", "Testcontainers Desktop"],193        repos=["testcontainers/testcontainers-go", "testcontainers/testcontainers-node", "testcontainers/testcontainers-python", "testcontainers/testcontainers-dotnet", "testcontainers/testcontainers-rs"]),194    src("localstack", "LocalStack", "localstack.cloud", ["localstack"], categories=OSINF, country="CH", repos=["localstack/localstack", "localstack/terraform-local", "localstack/awscli-local"]),195]196