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