Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"nodejs",
"mysql",
"php",
"docker",
"self-hosting",
"redis",
"svelte",
"databases",
"nextjs",
"coolify",
"deployment",
"docker-compose",
"inertiajs",
"laravel",
"mariadb",
"postgres",
"self-hosted",
"server",
"static-site",
"svelte5"
],
"is_fork": false,
"size_kb": 75851,
"has_wiki": false,
"homepage": "https://coolify.io",
"languages": {
"CSS": 22198,
"PHP": 9109610,
"Blade": 1943387,
"Shell": 151374,
"Dockerfile": 19781,
"JavaScript": 71961
},
"pushed_at": "2026-08-03T14:44:39Z",
"created_at": "2021-01-25T20:54:01Z",
"owner_type": "Organization",
"updated_at": "2026-08-03T14:23:01Z",
"description": "An open-source, self-hostable PaaS alternative to Vercel, Heroku & Netlify that lets you easily deploy static sites, databases, full-stack applications and 280+ one-click services on your own servers.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "v4.x",
"license_spdx_raw": "Apache-2.0",
"primary_language": "PHP",
"significant_languages": [
"PHP",
"Blade"
]
},
"owner": {
"blog": "https://coollabs.io",
"name": "coolLabs",
"type": "Organization",
"login": "coollabsio",
"company": null,
"location": null,
"followers": 1838,
"avatar_url": "https://avatars.githubusercontent.com/u/60715044?v=4",
"created_at": "2020-02-05T20:36:54Z",
"is_verified": null,
"public_repos": 43,
"account_age_days": 2370
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v4.2.0",
"kind": "minor",
"published_at": "2026-07-21T16:08:35Z"
},
{
"tag": "v4.1.2",
"kind": "patch",
"published_at": "2026-06-04T07:54:18Z"
},
{
"tag": "v4.1.1",
"kind": "patch",
"published_at": "2026-05-27T09:27:50Z"
},
{
"tag": "v4.1.0",
"kind": "minor",
"published_at": "2026-05-18T09:00:04Z"
},
{
"tag": "v4.0.0",
"kind": "major",
"published_at": "2026-04-27T08:55:25Z"
},
{
"tag": "v4.0.0-beta.474",
"kind": "prerelease",
"published_at": "2026-04-21T10:31:25Z"
},
{
"tag": "v4.0.0-beta.473",
"kind": "prerelease",
"published_at": "2026-04-13T09:33:58Z"
},
{
"tag": "v4.0.0-beta.472",
"kind": "prerelease",
"published_at": "2026-04-09T10:19:18Z"
},
{
"tag": "v4.0.0-beta.471",
"kind": "prerelease",
"published_at": "2026-04-09T07:16:21Z"
},
{
"tag": "v4.0.0-beta.470",
"kind": "prerelease",
"published_at": "2026-03-24T21:00:59Z"
},
{
"tag": "v4.0.0-beta.469",
"kind": "prerelease",
"published_at": "2026-03-20T15:39:04Z"
},
{
"tag": "v4.0.0-beta.468",
"kind": "prerelease",
"published_at": "2026-03-12T13:28:09Z"
},
{
"tag": "v4.0.0-beta.467",
"kind": "prerelease",
"published_at": "2026-03-11T17:23:16Z"
},
{
"tag": "v4.0.0-beta.466",
"kind": "prerelease",
"published_at": "2026-03-11T06:34:38Z"
},
{
"tag": "v4.0.0-beta.465",
"kind": "prerelease",
"published_at": "2026-03-10T20:18:11Z"
},
{
"tag": "v4.0.0-beta.464",
"kind": "prerelease",
"published_at": "2026-03-09T10:25:54Z"
},
{
"tag": "v4.0.0-beta.463",
"kind": "prerelease",
"published_at": "2026-02-09T11:57:33Z"
},
{
"tag": "v4.0.0-beta.462",
"kind": "prerelease",
"published_at": "2026-01-16T11:05:11Z"
},
{
"tag": "v4.0.0-beta.461",
"kind": "prerelease",
"published_at": "2026-01-16T07:24:15Z"
},
{
"tag": "v4.0.0-beta.460",
"kind": "prerelease",
"published_at": "2025-12-31T10:58:42Z"
},
{
"tag": "v4.0.0-beta.459",
"kind": "prerelease",
"published_at": "2025-12-23T14:40:52Z"
},
{
"tag": "v4.0.0-beta.458",
"kind": "prerelease",
"published_at": "2025-12-18T12:23:23Z"
},
{
"tag": "v4.0.0-beta.457",
"kind": "prerelease",
"published_at": "2025-12-18T12:05:25Z"
},
{
"tag": "v4.0.0-beta.456",
"kind": "prerelease",
"published_at": "2025-12-18T08:59:27Z"
},
{
"tag": "v4.0.0-beta.455",
"kind": "prerelease",
"published_at": "2025-12-17T09:24:10Z"
},
{
"tag": "v4.0.0-beta.454",
"kind": "prerelease",
"published_at": "2025-12-11T20:37:05Z"
},
{
"tag": "v4.0.0-beta.453",
"kind": "prerelease",
"published_at": "2025-12-08T20:23:48Z"
},
{
"tag": "v4.0.0-beta.452",
"kind": "prerelease",
"published_at": "2025-11-28T19:53:19Z"
},
{
"tag": "v4.0.0-beta.451",
"kind": "prerelease",
"published_at": "2025-11-27T14:09:46Z"
},
{
"tag": "v4.0.0-beta.450",
"kind": "prerelease",
"published_at": "2025-11-26T13:06:51Z"
},
{
"tag": "v4.0.0-beta.449",
"kind": "prerelease",
"published_at": "2025-11-26T09:05:43Z"
},
{
"tag": "v4.0.0-beta.448",
"kind": "prerelease",
"published_at": "2025-11-25T16:08:31Z"
},
{
"tag": "v4.0.0-beta.447",
"kind": "prerelease",
"published_at": "2025-11-25T15:44:40Z"
},
{
"tag": "v4.0.0-beta.446",
"kind": "prerelease",
"published_at": "2025-11-24T14:18:49Z"
},
{
"tag": "v4.0.0-beta.445",
"kind": "prerelease",
"published_at": "2025-11-24T12:51:35Z"
},
{
"tag": "v4.0.0-beta.444",
"kind": "prerelease",
"published_at": "2025-11-14T08:35:16Z"
},
{
"tag": "v4.0.0-beta.443",
"kind": "prerelease",
"published_at": "2025-11-13T14:37:31Z"
},
{
"tag": "v4.0.0-beta.442",
"kind": "prerelease",
"published_at": "2025-11-07T08:16:55Z"
},
{
"tag": "v4.0.0-beta.441",
"kind": "prerelease",
"published_at": "2025-11-05T08:12:09Z"
},
{
"tag": "v4.0.0-beta.440",
"kind": "prerelease",
"published_at": "2025-11-04T09:03:49Z"
},
{
"tag": "v4.0.0-beta.439",
"kind": "prerelease",
"published_at": "2025-11-03T10:09:01Z"
},
{
"tag": "v4.0.0-beta.438",
"kind": "prerelease",
"published_at": "2025-10-29T09:40:12Z"
},
{
"tag": "v4.0.0-beta.437",
"kind": "prerelease",
"published_at": "2025-10-21T07:12:25Z"
},
{
"tag": "v4.0.0-beta.436",
"kind": "prerelease",
"published_at": "2025-10-17T13:48:41Z"
},
{
"tag": "v4.0.0-beta.435",
"kind": "prerelease",
"published_at": "2025-10-16T08:10:16Z"
},
{
"tag": "v4.0.0-beta.434",
"kind": "prerelease",
"published_at": "2025-10-03T07:42:54Z"
},
{
"tag": "v4.0.0-beta.433",
"kind": "prerelease",
"published_at": "2025-10-01T18:37:28Z"
},
{
"tag": "v4.0.0-beta.432",
"kind": "prerelease",
"published_at": "2025-09-29T10:52:01Z"
},
{
"tag": "v4.0.0-beta.431",
"kind": "prerelease",
"published_at": "2025-09-24T18:55:40Z"
},
{
"tag": "v4.0.0-beta.430",
"kind": "prerelease",
"published_at": "2025-09-24T16:20:49Z"
},
{
"tag": "v4.0.0-beta.429",
"kind": "prerelease",
"published_at": "2025-09-23T16:20:49Z"
},
{
"tag": "v4.0.0-beta.428",
"kind": "prerelease",
"published_at": "2025-09-15T16:52:47Z"
},
{
"tag": "v4.0.0-beta.427",
"kind": "prerelease",
"published_at": "2025-09-15T10:48:47Z"
},
{
"tag": "v4.0.0-beta.426",
"kind": "prerelease",
"published_at": "2025-08-28T18:17:22Z"
},
{
"tag": "v4.0.0-beta.425",
"kind": "prerelease",
"published_at": "2025-08-28T09:33:10Z"
},
{
"tag": "v4.0.0-beta.424",
"kind": "prerelease",
"published_at": "2025-08-27T19:37:14Z"
},
{
"tag": "v4.0.0-beta.423",
"kind": "prerelease",
"published_at": "2025-08-27T16:39:15Z"
},
{
"tag": "v4.0.0-beta.422",
"kind": "prerelease",
"published_at": "2025-08-27T15:17:01Z"
},
{
"tag": "v4.0.0-beta.421",
"kind": "prerelease",
"published_at": "2025-08-26T19:47:05Z"
},
{
"tag": "v4.0.0-beta.420.9",
"kind": "prerelease",
"published_at": "2025-08-26T16:24:37Z"
},
{
"tag": "v4.0.0-beta.420.8",
"kind": "prerelease",
"published_at": "2025-08-26T14:45:01Z"
},
{
"tag": "v4.0.0-beta.420.7",
"kind": "prerelease",
"published_at": "2025-08-26T13:32:59Z"
},
{
"tag": "v4.0.0-beta.420.6",
"kind": "prerelease",
"published_at": "2025-07-18T18:45:44Z"
},
{
"tag": "v4.0.0-beta.420.5",
"kind": "prerelease",
"published_at": "2025-07-08T19:14:04Z"
},
{
"tag": "v4.0.0-beta.420.4",
"kind": "prerelease",
"published_at": "2025-07-08T08:58:14Z"
},
{
"tag": "v4.0.0-beta.420.3",
"kind": "prerelease",
"published_at": "2025-07-03T19:31:13Z"
},
{
"tag": "v4.0.0-beta.420.2",
"kind": "prerelease",
"published_at": "2025-07-03T13:55:03Z"
},
{
"tag": "v4.0.0-beta.420.1",
"kind": "prerelease",
"published_at": "2025-06-26T20:27:21Z"
},
{
"tag": "v4.0.0-beta.420",
"kind": "prerelease",
"published_at": "2025-06-26T10:23:45Z"
},
{
"tag": "v4.0.0-beta.419",
"kind": "prerelease",
"published_at": "2025-06-17T12:39:00Z"
},
{
"tag": "v4.0.0-beta.418",
"kind": "prerelease",
"published_at": "2025-05-09T06:30:49Z"
},
{
"tag": "v4.0.0-beta.417",
"kind": "prerelease",
"published_at": "2025-05-07T21:14:23Z"
},
{
"tag": "v4.0.0-beta.416",
"kind": "prerelease",
"published_at": "2025-05-05T07:04:47Z"
},
{
"tag": "v4.0.0-beta.415",
"kind": "prerelease",
"published_at": "2025-04-29T08:54:51Z"
},
{
"tag": "v4.0.0-beta.414",
"kind": "prerelease",
"published_at": "2025-04-28T18:48:31Z"
},
{
"tag": "v4.0.0-beta.413",
"kind": "prerelease",
"published_at": "2025-04-28T08:46:03Z"
},
{
"tag": "v4.0.0-beta.412",
"kind": "prerelease",
"published_at": "2025-04-23T12:18:58Z"
},
{
"tag": "v4.0.0-beta.411",
"kind": "prerelease",
"published_at": "2025-04-23T11:49:15Z"
},
{
"tag": "v4.0.0-beta.410",
"kind": "prerelease",
"published_at": "2025-04-18T08:40:13Z"
},
{
"tag": "v4.0.0-beta.409",
"kind": "prerelease",
"published_at": "2025-04-16T08:09:16Z"
},
{
"tag": "v4.0.0-beta.408",
"kind": "prerelease",
"published_at": "2025-04-14T12:32:42Z"
},
{
"tag": "v4.0.0-beta.407",
"kind": "prerelease",
"published_at": "2025-04-09T07:21:51Z"
},
{
"tag": "v4.0.0-beta.406",
"kind": "prerelease",
"published_at": "2025-04-05T13:09:41Z"
},
{
"tag": "v4.0.0-beta.405",
"kind": "prerelease",
"published_at": "2025-04-04T05:44:01Z"
},
{
"tag": "v4.0.0-beta.404",
"kind": "prerelease",
"published_at": "2025-04-03T07:43:32Z"
},
{
"tag": "v4.0.0-beta.402",
"kind": "prerelease",
"published_at": "2025-04-01T09:07:42Z"
},
{
"tag": "v4.0.0-beta.401",
"kind": "prerelease",
"published_at": "2025-03-28T21:19:15Z"
},
{
"tag": "v4.0.0-beta.400",
"kind": "prerelease",
"published_at": "2025-03-27T09:37:57Z"
},
{
"tag": "v4.0.0-beta.399",
"kind": "prerelease",
"published_at": "2025-03-25T10:58:25Z"
},
{
"tag": "v4.0.0-beta.398",
"kind": "prerelease",
"published_at": "2025-03-01T11:49:31Z"
},
{
"tag": "v4.0.0-beta.397",
"kind": "prerelease",
"published_at": "2025-02-28T19:30:48Z"
},
{
"tag": "v4.0.0-beta.396",
"kind": "prerelease",
"published_at": "2025-02-28T12:41:46Z"
},
{
"tag": "v4.0.0-beta.395",
"kind": "prerelease",
"published_at": "2025-02-22T12:12:36Z"
},
{
"tag": "v4.0.0-beta.394",
"kind": "prerelease",
"published_at": "2025-02-17T09:17:09Z"
},
{
"tag": "v4.0.0-beta.393",
"kind": "prerelease",
"published_at": "2025-02-15T12:25:41Z"
},
{
"tag": "v4.0.0-beta.392",
"kind": "prerelease",
"published_at": "2025-02-13T12:33:44Z"
},
{
"tag": "v4.0.0-beta.391",
"kind": "prerelease",
"published_at": "2025-02-04T14:26:52Z"
},
{
"tag": "v4.0.0-beta.390",
"kind": "prerelease",
"published_at": "2025-01-28T12:48:47Z"
},
{
"tag": "v4.0.0-beta.389",
"kind": "prerelease",
"published_at": "2025-01-23T14:23:33Z"
},
{
"tag": "v4.0.0-beta.388",
"kind": "prerelease",
"published_at": "2025-01-22T16:23:43Z"
}
],
"recent_commits": [
{
"oid": "940571e16f5a0e6c73cf56b4bb1184bed3d60623",
"body": null,
"is_bot": false,
"headline": "feat(services): shared Redis cache for service templates (#11094)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-30T20:27:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a460a399d7b05e9e28bbe47451ec721730ab05a7",
"body": null,
"is_bot": false,
"headline": "chore: prepare for PR",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-30T19:15:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5711930189cb26cc94e09f8bf6936ead2fc5eb27",
"body": null,
"is_bot": false,
"headline": "fix(domains): allow clearing resource domains without TypeError (#11083)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-29T14:49:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "37d0699aae5f246b44821a112c54b59df4661488",
"body": null,
"is_bot": false,
"headline": "chore: prepare for PR",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-29T14:27:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2180a5e7effdf8a994eaeb871d0ac77fa0be8fea",
"body": null,
"is_bot": false,
"headline": "fix(traefik): track v3.7 and security patch updates (#11029)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-24T07:02:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8df830e5e9cf7934e4fff761755c7ff692184c1",
"body": "Track v3.7 and patch releases for supported Traefik branches.\nSet the stable Coolify v4 version to 4.1.2.",
"is_bot": false,
"headline": "fix(traefik): track v3.7 security updates",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-24T07:00:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da29fdcc69a4e3e536da0759207e9a75777be03d",
"body": null,
"is_bot": false,
"headline": "ci(images): add edge tag for v4.x SHA builds (#11022)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-23T17:15:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1fc294b90864d3d45388e5fa59967abfd4a88fd3",
"body": null,
"is_bot": false,
"headline": "refactor(ui): remove deploy confirmation modals (#11023)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-23T17:13:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee86c69f1583451166031994538d7181557a6e34",
"body": "Also publish the moving edge tag on GHCR and Docker Hub when the SHA build runs on v4.x, so edge always points at the latest production-line multi-arch image.",
"is_bot": false,
"headline": "ci: tag v4.x SHA images as edge",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-23T17:11:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec1762b083daf704034531107ea6b42bc900a0d8",
"body": null,
"is_bot": false,
"headline": "chore: prepare for PR",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-23T17:10:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "004c3ab3bc7bad94f0bc6dfd620e22b60c81e169",
"body": null,
"is_bot": false,
"headline": "internal stuffs (#10992)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-20T10:56:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "160278c7ebf370703317ce322bafdc994c1819b6",
"body": null,
"is_bot": false,
"headline": "ci: support main branch build and changelog workflows",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-20T10:54:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94a95cdf542c2229385abe87625fd502d5dfdb04",
"body": null,
"is_bot": false,
"headline": "docs(release): clarify branch strategy and SHA build flow",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-20T10:39:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b284973e1a60a7b8f8f4b123f0941a282edf585",
"body": null,
"is_bot": false,
"headline": "feat(backups): add scheduled storage volume backups (#10946)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-20T10:04:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bf72fd5d8823c788d5f1f8eb18898f9839ed6546",
"body": null,
"is_bot": false,
"headline": "refactor(backups): centralize storage deletion guard",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T21:20:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e03be755dac2bcae78de22ae5736542fb4aad3f",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into volume-backups-server-s3",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T21:16:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "72a0a57f0e9fc7e152ab3051a7aec71d7d200660",
"body": "- Gate volume backup retention and S3 controls by update permission\n- Preserve backup records when S3 deletion fails\n- Share SFTP download streaming with consistent missing-file handling\n- Handle schedule creation errors and link service database backups",
"is_bot": false,
"headline": "fix(backups): enforce authorization and safe retention",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T21:15:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "24bc4b04621822f7913cea7cd9f44259dbb39024",
"body": null,
"is_bot": false,
"headline": "docs(release): document SHA image promotion workflow",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T21:13:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99a8a96e7f2c92cd033829543a4f9df6500bdd81",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into volume-backups-server-s3",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T21:02:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b53ae426b881a1b895c4946253f8dd201a7f1747",
"body": null,
"is_bot": false,
"headline": "ci(release): promote SHA-tagged images on release (#10988)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T21:01:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7716e65eeafde98f763920268fe7e67e035a0e42",
"body": "Publish branch builds under immutable commit SHA tags, then promote the\nreleased image to its version tag and stable releases to latest.",
"is_bot": false,
"headline": "ci(release): promote SHA-tagged images on release",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T21:00:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "994eee83777c1ac7399c187e605d52ad7c99ed6a",
"body": null,
"is_bot": false,
"headline": "fix(backups): retain volume backups without server",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T20:35:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b97a97e9553adf8225f511cf02bfc72f24a805f5",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into volume-backups-server-s3",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T19:45:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f715fb69bb498ba03463f95c3515d668b05267bb",
"body": null,
"is_bot": false,
"headline": "v4.2 (#10872)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T19:21:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a92ca6e3b8e0791c3703fb3211a92f89cfb6216d",
"body": null,
"is_bot": false,
"headline": "version ++",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T19:18:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0633b543ee124a63bdc0f7751cefc3f6fe227559",
"body": "Make start/stop/restart, deploy, enable/disable, and server validate\nPOST-only, with GET returning 405. Server validate accepts optional\ninstall and uses ValidateAndInstallServerJob. Update OpenAPI and tests.",
"is_bot": false,
"headline": "feat(api): require POST for state-changing endpoints",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-19T09:42:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e2c2180f4fe6387b7745f60d543fa98249e8307e",
"body": "Keep the dev container as root for s6 init so composer can create\nvendor/ on root-owned mounts, then chown writable paths to www-data.\nMove init-setup into a shell script and expose VITE_HOST/PORT for\nremote HMR (LAN/Tailscale) with Vite listening on 0.0.0.0.",
"is_bot": false,
"headline": "fix(dev): support root bind mounts and LAN Vite access",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-18T18:56:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "662633399f125e16c4adf64a23253b06be3b8781",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into volume-backups-server-s3",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-18T14:07:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28f886756798135874d8261ae9ba82e2fe29fdb7",
"body": "Expose DELETE for application, database, and service storage backup\nschedules (with OpenAPI docs), reject storage deletes while schedules\nexist, skip retention cleanup when no limits are set, and remove S3\narchives using the execution’s S3 storage.",
"is_bot": false,
"headline": "feat(api): add volume backup schedule delete endpoints",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-16T19:44:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "913d033c75b310db7784ccb51b6effd84f0f93a4",
"body": null,
"is_bot": false,
"headline": "fix(resources): clarify build server hosting restrictions (#10961)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-16T19:35:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fab012b5c84786225dea6753427fff09e0a817f6",
"body": "Skip empty-password rejection so delete works when two-step confirmation is disabled; cover with a feature test.",
"is_bot": false,
"headline": "fix(backups): allow volume backup delete without password when 2FA off",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-16T12:43:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac36a590881c89f3a0fe1453d1be1dbc7e0ae1ae",
"body": "Store s3_storage_id on scheduled volume backup executions so retention\nand recovery use the S3 that received the upload. Extract\nDeleteScheduledVolumeBackup for UI and resource deletion, and isolate\ndatabase backup retention failures so cleanup errors do not fail the job.",
"is_bot": false,
"headline": "fix(backups): pin S3 per volume execution and harden deletes",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-16T12:30:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8cfa41a7d9cf7952cb2f6932c9058790ba51a2c2",
"body": "Subscribe BackupEdit to database status broadcasts and refresh the\ndatabase status so the Backup Now control updates without a full reload.",
"is_bot": false,
"headline": "fix(backups): sync Backup Now with live database status",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-16T12:01:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddbed9f8a655a62477b40ecf335a7d4f74120731",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into volume-backups-server-s3",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-16T11:47:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d699818e8f7395ab95471980bcbd889cf9dcf28",
"body": "Wrap Vultr server creation in DB transactions and delete the remote\ninstance when local persistence fails (API and Livewire). Scope\nplus/dot email normalization to gmail.com/googlemail.com only.\nUse throw:false on DigitalOcean/Vultr HTTP retries, and normalize\nservice log line counts via normalizeLogLines.",
"is_bot": false,
"headline": "fix: harden Vultr create, Gmail identity, and provider retries",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-16T11:42:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2719d6604244208f4464542ad49df9470df92e9f",
"body": "Enable scheduled ClickHouse backups across the job, API, and UI, and\nguard unsupported database types via isBackupSolutionAvailable().\nConvert Stripe subscription sync from a job to an action with clearer\ndiscrepancy resolution, and add cloud:export-users plus\ncloud:cleanup-unverified-users with tests.",
"is_bot": false,
"headline": "feat: add ClickHouse backups and cloud ops tools",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-16T09:57:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ae1b4eba2b91e9299200e0369aa34aee2e07a28",
"body": null,
"is_bot": false,
"headline": "fix(backups): show setup prompt when no S3 storage is available",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T18:36:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91d97bfad2903c7977a2db09ab4818bd36696a72",
"body": null,
"is_bot": false,
"headline": "fix(status): prevent health badge row height expansion",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T18:07:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e0f85de3fefeb100d268aa75c61fc2647a3157cf",
"body": null,
"is_bot": false,
"headline": "fix(backups): move S3 retention settings to retention page",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T18:00:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aef70eb053647da2f4fd69c1e7d7475cb7d79f00",
"body": null,
"is_bot": false,
"headline": "refactor(backups): consolidate volume backup retention columns",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T17:55:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d04bb7e594704c6ffcda7eb9fedb618df167611",
"body": null,
"is_bot": false,
"headline": "fix(backups): rename storage backup page heading",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T16:17:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "41eee14bd33d67e27e14f81b0d8c7bc78662c08c",
"body": "Queue manual database and volume backups before redirecting to their execution views, including schedules with unusable S3 storage.",
"is_bot": false,
"headline": "fix(backups): redirect to executions after manual backup queueing",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T15:39:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7385ad0c4bfa39e4e5155a6de20de73b17de0bc",
"body": "Add polymorphic volume backup scheduling for persistent volumes and directories, expose schedule management via API, and reorganize backup configuration and execution views.",
"is_bot": false,
"headline": "feat(backups): support scheduled backups for application storage targets",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T15:34:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "995ec5fbb60bd477c33e7a0cb595580d130ec8b6",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into volume-backups-server-s3",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T14:33:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4eec1ac54741da73716c239a4a954b385b25f735",
"body": "Track and recover stopped containers across interrupted backup executions.",
"is_bot": false,
"headline": "fix(backups): stop containers during volume backup creation",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T13:59:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "63961e0799fa5730d6854d30bbfd150fc33e3e77",
"body": null,
"is_bot": false,
"headline": "feat(backups): add scheduled persistent volume backups",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T13:47:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "908b5cc09d2edcf2fcce6d775961d6f14f092b9b",
"body": "Add service database CRUD, logs, and lifecycle actions, and document service application operations with OpenAPI tests.",
"is_bot": false,
"headline": "feat(api): add service database management endpoints",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T10:29:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64667574f6fdf3251df95e50370710a29a862c12",
"body": null,
"is_bot": false,
"headline": "fix(api): correct service and application OpenAPI schemas",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-15T10:29:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05dc2c65f6134f6491d51d0fcd04cd5645260264",
"body": null,
"is_bot": false,
"headline": "chore(deps): bump web-auth/webauthn-lib from 5.3.3 to 5.3.5 (#10901)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-14T12:18:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "198e9f8fff379cdfe9ef44d3f0589d501b2ef809",
"body": null,
"is_bot": false,
"headline": "fix(environment-variable): align settings and actions responsively",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-14T12:02:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "59605fe7d30d8a5e647495a7b7d90f3a9c93ac6f",
"body": null,
"is_bot": false,
"headline": "fix(environment-variable): keep delete button compact",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-14T11:58:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34e6a6dd5d5bb2068941117f7d39039b0e13bcaa",
"body": null,
"is_bot": false,
"headline": "feat(api): add application settings to application endpoints",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-14T11:44:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99e255a572f8c1c3e6a99637bdff498da7d2cefa",
"body": "Expand configuration snapshots, handle defaults from older snapshots, and refresh configuration state after Livewire setting changes.",
"is_bot": false,
"headline": "fix(deployment): detect application configuration changes consistently",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-14T10:54:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5381287606323fd8656f7c893f99f4d54dd1b5fc",
"body": null,
"is_bot": false,
"headline": "Update configuration for compatibility with EspoCRM v10 (#10848)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-13T13:06:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "683a2ce2e9acc603faee05e964385a0f8b253c1a",
"body": null,
"is_bot": false,
"headline": "feat(services): bump alexandrie to version 8.10.0 (#10864)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-13T13:06:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "47a292486cc6a6c8cd0d55393cec3435ac1fb5fd",
"body": null,
"is_bot": false,
"headline": "chore(deps): bump NGINX package to 1.31.2-r1",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-13T08:54:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8a332a3bc935064dcbb2f7703b1edeb2becfaae",
"body": "Track provider state independently, skip SSH work for placeholder IPs, and clean up failed cloud server provisioning.",
"is_bot": false,
"headline": "fix(servers): isolate cloud status checks from SSH checks",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-11T20:52:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e01b8a057e6437cf2a2bafe61db67943acc7bb39",
"body": "Persist DigitalOcean, Hetzner, and Vultr servers before public IP\nassignment, then backfill placeholder addresses from provider state.\n\nTreat partial Sentinel snapshots as non-authoritative and document the\ndestinations API with OpenAPI schemas.",
"is_bot": false,
"headline": "fix(servers): retain cloud instances awaiting IPs",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-11T19:35:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bd82b4c1cd977712f67c9efe2dd5457852872678",
"body": "Bumps [web-auth/webauthn-lib](https://github.com/web-auth/webauthn-lib) from 5.3.3 to 5.3.5.\n- [Commits](https://github.com/web-auth/webauthn-lib/compare/5.3.3...5.3.5)\n\n---\nupdated-dependencies:\n- dependency-name: web-auth/webauthn-lib\n dependency-version: 5.3.5\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump web-auth/webauthn-lib from 5.3.3 to 5.3.5",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-10T18:35:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d3fbb32c527bf880244330c3ce655ad8a672e935",
"body": "Replace the legacy sync:bunny flags with an interactive CDN sync flow for service templates and release metadata. Serve official service templates from the Coollabs CDN, update version metadata, and remove obsolete helper scripts.",
"is_bot": false,
"headline": "feat(cdn): sync release metadata through BunnyCDN",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-10T12:29:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e4f925ebbfc52d75d9921d22781054576c7783ea",
"body": null,
"is_bot": false,
"headline": "fix(meta): serve releases metadata from Coollabs CDN",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-10T08:49:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd10a90d8c82d2eee20a772bea28df7d60310ed4",
"body": null,
"is_bot": false,
"headline": "fix(meta): update social preview image URL",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-10T08:48:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bcadcc920083e5383869ce9bc3ca78ec927e3dcd",
"body": null,
"is_bot": false,
"headline": "docs(readme): serve sponsor images from Coollabs CDN",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-10T08:47:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a0183bfad2ab7252144e5d73eb8cf7b598a0625",
"body": "This reverts commit 8c1405e1689c7f26e27f062bb35025f76df02b05.",
"is_bot": false,
"headline": "Revert \"feat(notifications): deduplicate repeated email alerts\"",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-09T11:19:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c1405e1689c7f26e27f062bb35025f76df02b05",
"body": "Add notification-level deduplication keys and TTLs for deployment, backup,\nserver, container, scheduled task, SSL, token, and transactional emails.\nApply deduplication in email channels before sending rendered messages.",
"is_bot": false,
"headline": "feat(notifications): deduplicate repeated email alerts",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T13:23:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee620a54132689cc918fb6adb4141e6a476326c1",
"body": null,
"is_bot": false,
"headline": "fix(github): honor skip flags for PR preview syncs (#10873)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T13:06:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e325f93662d20330a09cf220fb9e22d4490a3584",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into 10870-pr-previews-ignore",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T13:06:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f24439f9c8410e00c6373b54a03850f84442e373",
"body": null,
"is_bot": false,
"headline": "test(github): cover PR previews without skip ci",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T12:44:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f960d94c350220c7928c7572772f421b757b0d0",
"body": null,
"is_bot": false,
"headline": "fix(github): skip opened PR previews with skip ci",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T12:41:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0217e2b0c029b88d851b050f8dc8c2bd61696ea5",
"body": "Add server private key generation from the dropdown, prevent deleting\nprivate keys that are still in use, and close cloud provider link modals\nafter successful linking.",
"is_bot": false,
"headline": "feat(server): improve private key and cloud link flows",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T11:35:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f4f4274ceea20754ecf4b314b63375946b0b976e",
"body": null,
"is_bot": false,
"headline": "fix(github): skip PR previews from head commit flags",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T11:31:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b8aeb47584099ceb617717aa629395e85bab35e",
"body": null,
"is_bot": false,
"headline": "feat(server): add private key creation to IP server form",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T11:05:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e200d881f55d03ccf371780987839e5dafcb17e1",
"body": "Add dedicated show/edit pages for cloud provider tokens and cloud-init\nscripts, including descriptions and UUID routes.\n\nGenerate private keys directly from the index and surface cloud provider\nAPI loading errors in server creation flows.",
"is_bot": false,
"headline": "feat(security): add editable cloud credential pages",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T10:58:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7236cb82287fa3fdc71a96039b40af093a16521b",
"body": null,
"is_bot": false,
"headline": "feat(server): add dedicated server creation flow",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T10:20:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18f0f7f6be2906a496c63fa1ed43047e8e070e96",
"body": null,
"is_bot": false,
"headline": "feat(digitalocean): add droplet provisioning support (#10871)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T08:50:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c303c34cfdd373b26aefd5efc970ce5640af7450",
"body": null,
"is_bot": false,
"headline": "feat(digitalocean): add droplet provisioning support",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T08:42:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5936874ffd21c9f6c0e51e54eafa37252c634dc9",
"body": null,
"is_bot": false,
"headline": "feat(vultr): add cloud provider integration (#10533)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T08:24:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2dd264f8024342e28872be44b16143b81f45a5b7",
"body": null,
"is_bot": false,
"headline": "fix(vultr): remove duplicate deletion error log",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T08:23:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d90a0a288c076eac87e07287c0a7606d5bb842d9",
"body": null,
"is_bot": false,
"headline": "fix: align server mobile menu spacing",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T07:49:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d74206f4a9f657b8538f8cb31a75657e6686c090",
"body": "…rovider",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into feature/vultr-cloud-p…",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T07:48:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0f0f7d8d03e6e5e3a6a3d0d98eb5825042cbe0f",
"body": "Add normalized email identity rate limiting for registration and forgot-password requests, and refresh Sentinel status from restart broadcasts.\n\nRework server sidebars and navbar for mobile menus and active status visibility.",
"is_bot": false,
"headline": "feat: harden auth flows and server mobile navigation",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-08T07:42:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94079c90f2962476c635b72b230f1797bb843006",
"body": null,
"is_bot": false,
"headline": "docs(readme): refresh sponsor listings",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T22:03:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6ed92cb97af582ee0f2cea2493b8e42dcefb69f9",
"body": "Require IPv6 when public IPv4 is disabled, constrain cloud token\nlookup by team and provider during deletion, and encode Vultr instance IDs\nin API paths.",
"is_bot": false,
"headline": "fix(vultr): validate public network and token scope",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T19:39:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31f904ef9fb334e90366f92365d969ee80337b15",
"body": "…rovider",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into feature/vultr-cloud-p…",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T19:23:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b93f1090ad9e1b9df1097a3b0621c9c06275d1a1",
"body": "…ironments (#8968)",
"is_bot": false,
"headline": "feat(api): add POST /move endpoints to relocate resources between env…",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T19:21:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6872f63f5f43192a7d9fe6d68730130e05ad4595",
"body": null,
"is_bot": false,
"headline": "fix(api): audit moved resources",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T19:20:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5699b7856751cf876c5a5fc6551aab888d796111",
"body": null,
"is_bot": false,
"headline": "fix(api): stop auditing sentinel metric pushes",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T19:17:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f244b5e25d1f91968333d6877b80184fd9d68e34",
"body": null,
"is_bot": false,
"headline": "test(api): assert target env authorization on moves",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T19:07:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "676161a627aab9291837e573b701701db4d141b3",
"body": null,
"is_bot": false,
"headline": "fix(api): authorize target environment moves",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T18:56:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf63c7d1546ae8e820f523757bf652134ab189e3",
"body": "…es-between-projects",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into feat/api-move-resourc…",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T16:13:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0cca267953af366212091bd47ae0902487a2e68d",
"body": null,
"is_bot": false,
"headline": "feat(api): Service Application Management API (#9249)",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T16:05:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f1343427323b5fcfe565e4a95ddfccce58ffedd",
"body": "Build container status commands with escaped container names in the\nDocker helper so callers can pass raw identifiers consistently.",
"is_bot": false,
"headline": "fix(docker): escape container status commands",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T16:00:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a165e03d06e00100970fbebf062f8e4857d41dc8",
"body": "Escape service application lifecycle command arguments for deploy, restart, stop, and log status checks.\nValidate API update payloads from JSON/form data before applying allowed fields, preserving explicit boolean and null values.\nAdd coverage for service application API authorization, team isolation, validation, and command escaping.",
"is_bot": false,
"headline": "fix(service-apps): harden updates and docker commands",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T13:10:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95a3c453d871ea04591e38008b00fa6437e5f20a",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into 9249-pr-investigation",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T12:45:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e81a2c69960d4e1cdca3b857da8ec3b98f16f7ac",
"body": "…works and backups when creating the Server (#9646)",
"is_bot": false,
"headline": "feat(cloud-provider): Add support for Hetzner firewalls, internal net…",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T12:42:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a8000ac2ad2fa0882223b8360028e21e9aaa6ad4",
"body": null,
"is_bot": false,
"headline": "fix(hetzner): require at least one public IP protocol",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T12:41:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9ffa0db961402e1faba8e7fb046fa459d0a5bbf",
"body": "…s-and-internal-networks",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/next' into feat/hetzner-firewall…",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T12:37:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b33eb4e9cddbb36b6c993c62e45f72105016cda",
"body": null,
"is_bot": false,
"headline": "fix(ui): constrain helper popup within viewport",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T12:37:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b939e09f12c717f665e5a933289931aee6c1ca72",
"body": null,
"is_bot": false,
"headline": "refactor(hetzner): move advanced options into dropdown",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T12:36:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d723a52d9cfc0c5a009b235d9bc30a7333ff8a59",
"body": "Authorize stored Hetzner cloud provider tokens before fetching\nfirewalls or networks, hide provider error details, and keep server\ncreation intact if backup activation fails.\n\nCollapse advanced Hetzner server options by default while preserving\nvisibility when advanced values are selected.",
"is_bot": false,
"headline": "fix(hetzner): secure token-backed option fetches",
"author_name": "Andras Bacsai",
"author_login": "andrasbacsai",
"committed_at": "2026-07-07T12:24:15Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 100,
"commits_last_year": 4299,
"latest_release_at": "2026-07-21T16:08:35Z",
"latest_release_tag": "v4.2.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 52,
"days_since_latest_release": 12,
"mean_days_between_releases": 13.2
},
"artifacts": {
"collected": true,
"structure": [
"tree.compose",
"tree.dockerfile",
"tree.migrations"
],
"declarations": [
{
"name": "coollabsio/coolify",
"path": "composer.json",
"tokens": [
"composer.type:project"
],
"ecosystem": "packagist"
},
{
"name": null,
"path": "docker/coolify-realtime/package.json",
"tokens": [
"npm.private"
],
"ecosystem": "npm"
},
{
"name": null,
"path": "package.json",
"tokens": [
"npm.private"
],
"ecosystem": "npm"
}
]
},
"community": {
"has_readme": true,
"has_license": true,
"readme_badges": {
"hosts": [
"shields.io"
],
"total": 1,
"header": 1,
"collected": true,
"has_inspect_badge": false
},
"has_description": true,
"has_contributing": true,
"health_percentage": 87,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": true
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 5199,
"stars": 60033,
"watchers": 191,
"fork_history": {
"days": [
{
"date": "2026-05-07",
"count": 6
},
{
"date": "2026-05-08",
"count": 3
},
{
"date": "2026-05-09",
"count": 9
},
{
"date": "2026-05-10",
"count": 9
},
{
"date": "2026-05-11",
"count": 41
},
{
"date": "2026-05-12",
"count": 40
},
{
"date": "2026-05-13",
"count": 17
},
{
"date": "2026-05-14",
"count": 11
},
{
"date": "2026-05-15",
"count": 12
},
{
"date": "2026-05-16",
"count": 29
},
{
"date": "2026-05-17",
"count": 30
},
{
"date": "2026-05-18",
"count": 18
},
{
"date": "2026-05-19",
"count": 18
},
{
"date": "2026-05-20",
"count": 29
},
{
"date": "2026-05-21",
"count": 7
},
{
"date": "2026-05-22",
"count": 16
},
{
"date": "2026-05-23",
"count": 10
},
{
"date": "2026-05-24",
"count": 4
},
{
"date": "2026-05-25",
"count": 8
},
{
"date": "2026-05-26",
"count": 14
},
{
"date": "2026-05-27",
"count": 7
},
{
"date": "2026-05-28",
"count": 8
},
{
"date": "2026-05-29",
"count": 4
},
{
"date": "2026-05-30",
"count": 7
},
{
"date": "2026-05-31",
"count": 8
},
{
"date": "2026-06-01",
"count": 10
},
{
"date": "2026-06-02",
"count": 10
},
{
"date": "2026-06-03",
"count": 10
},
{
"date": "2026-06-04",
"count": 12
},
{
"date": "2026-06-05",
"count": 10
},
{
"date": "2026-06-06",
"count": 7
},
{
"date": "2026-06-07",
"count": 14
},
{
"date": "2026-06-08",
"count": 9
},
{
"date": "2026-06-09",
"count": 13
},
{
"date": "2026-06-10",
"count": 7
},
{
"date": "2026-06-11",
"count": 4
},
{
"date": "2026-06-12",
"count": 10
},
{
"date": "2026-06-13",
"count": 12
},
{
"date": "2026-06-14",
"count": 8
},
{
"date": "2026-06-15",
"count": 11
},
{
"date": "2026-06-16",
"count": 8
},
{
"date": "2026-06-17",
"count": 1
},
{
"date": "2026-06-18",
"count": 4
},
{
"date": "2026-06-19",
"count": 4
},
{
"date": "2026-06-20",
"count": 9
},
{
"date": "2026-06-21",
"count": 8
},
{
"date": "2026-06-22",
"count": 11
},
{
"date": "2026-06-23",
"count": 9
},
{
"date": "2026-06-24",
"count": 5
},
{
"date": "2026-06-25",
"count": 5
},
{
"date": "2026-06-26",
"count": 3
},
{
"date": "2026-06-27",
"count": 5
},
{
"date": "2026-06-28",
"count": 4
},
{
"date": "2026-06-29",
"count": 8
},
{
"date": "2026-06-30",
"count": 13
},
{
"date": "2026-07-01",
"count": 17
},
{
"date": "2026-07-02",
"count": 7
},
{
"date": "2026-07-03",
"count": 14
},
{
"date": "2026-07-04",
"count": 7
},
{
"date": "2026-07-05",
"count": 16
},
{
"date": "2026-07-06",
"count": 8
},
{
"date": "2026-07-07",
"count": 11
},
{
"date": "2026-07-08",
"count": 17
},
{
"date": "2026-07-09",
"count": 13
},
{
"date": "2026-07-10",
"count": 9
},
{
"date": "2026-07-11",
"count": 8
},
{
"date": "2026-07-12",
"count": 12
},
{
"date": "2026-07-13",
"count": 15
},
{
"date": "2026-07-14",
"count": 19
},
{
"date": "2026-07-15",
"count": 17
},
{
"date": "2026-07-16",
"count": 16
},
{
"date": "2026-07-17",
"count": 10
},
{
"date": "2026-07-18",
"count": 12
},
{
"date": "2026-07-19",
"count": 12
},
{
"date": "2026-07-20",
"count": 13
},
{
"date": "2026-07-21",
"count": 16
},
{
"date": "2026-07-22",
"count": 9
},
{
"date": "2026-07-23",
"count": 13
},
{
"date": "2026-07-24",
"count": 9
},
{
"date": "2026-07-25",
"count": 7
},
{
"date": "2026-07-26",
"count": 16
},
{
"date": "2026-07-27",
"count": 22
},
{
"date": "2026-07-28",
"count": 9
},
{
"date": "2026-07-29",
"count": 9
},
{
"date": "2026-07-30",
"count": 9
},
{
"date": "2026-07-31",
"count": 5
},
{
"date": "2026-08-01",
"count": 4
},
{
"date": "2026-08-02",
"count": 6
},
{
"date": "2026-08-03",
"count": 4
}
],
"complete": false,
"collected": 1000,
"total_forks": 5199
},
"star_history": null,
"open_issues_and_prs": 841
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [
"openapi.json",
"openapi.yaml"
],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 5749518,
"source_files_sampled": 2122,
"oversized_source_files": 32,
"agent_instruction_files": [
".cursor/rules/coolify-ai-docs.mdc",
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 18856
},
"dependencies": {
"manifests": [
"composer.json",
"package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "ws",
"direct": true,
"version": "8.20.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-96hv-2xvq-fx4p"
],
"fixed_version": "8.21.0",
"advisory_count": 1,
"oldest_advisory_days": 48
},
{
"name": "postcss",
"direct": false,
"version": "8.5.15",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-r28c-9q8g-f849"
],
"fixed_version": "8.5.18",
"advisory_count": 1,
"oldest_advisory_days": 9
},
{
"name": "guzzlehttp/guzzle",
"direct": true,
"version": "7.12.1",
"severity": "moderate",
"ecosystem": "packagist",
"cvss_score": 5.9,
"advisory_ids": [
"GHSA-94pj-82f3-465w",
"GHSA-f283-ghqc-fg79",
"GHSA-g446-98w2-8p5w",
"GHSA-h95v-h523-3mw8",
"GHSA-wm3w-8rrp-j577"
],
"fixed_version": "7.15.1",
"advisory_count": 5,
"oldest_advisory_days": 13
},
{
"name": "guzzlehttp/psr7",
"direct": false,
"version": "2.12.1",
"severity": "moderate",
"ecosystem": "packagist",
"cvss_score": 4.2,
"advisory_ids": [
"GHSA-c2w2-prh8-qm98"
],
"fixed_version": "2.12.3",
"advisory_count": 1,
"oldest_advisory_days": 12
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 2,
"moderate": 2
},
"advisory_count": 8,
"affected_count": 4,
"assessed_count": 359,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 2
},
"ecosystems": [
"npm",
"packagist"
],
"dependencies": [
{
"name": "danharrin/livewire-rate-limiting",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.1.0"
},
{
"name": "doctrine/dbal",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.4.1"
},
{
"name": "guzzlehttp/guzzle",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^7.10.0"
},
{
"name": "laravel/fortify",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^1.34.0"
},
{
"name": "laravel/framework",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^12.49.0"
},
{
"name": "laravel/horizon",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^5.43.0"
},
{
"name": "laravel/mcp",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^0.6.7"
},
{
"name": "laravel/nightwatch",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^1.24"
},
{
"name": "laravel/pail",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^1.2.4"
},
{
"name": "laravel/prompts",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^0.3.11|^0.3.11|^0.3.11"
},
{
"name": "laravel/sanctum",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.3.0"
},
{
"name": "laravel/socialite",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^5.24.2"
},
{
"name": "laravel/tinker",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.11.0"
},
{
"name": "laravel/ui",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.6.1"
},
{
"name": "lcobucci/jwt",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^5.6.0"
},
{
"name": "league/flysystem-aws-s3-v3",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^3.31.0"
},
{
"name": "league/flysystem-sftp-v3",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^3.31"
},
{
"name": "livewire/livewire",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^3.7.8"
},
{
"name": "log1x/laravel-webfonts",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.0.1"
},
{
"name": "lorisleiva/laravel-actions",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.9.1"
},
{
"name": "nubs/random-name-generator",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.2"
},
{
"name": "pion/laravel-chunk-upload",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^1.5.6"
},
{
"name": "poliander/cron",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^3.3.0"
},
{
"name": "purplepixie/phpdns",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.3.6"
},
{
"name": "pusher/pusher-php-server",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^7.2.7"
},
{
"name": "resend/resend-laravel",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^0.20.0"
},
{
"name": "sentry/sentry-laravel",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.20.1"
},
{
"name": "socialiteproviders/authentik",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^5.2"
},
{
"name": "socialiteproviders/clerk",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^5.1"
},
{
"name": "socialiteproviders/discord",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.2"
},
{
"name": "socialiteproviders/google",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.1"
},
{
"name": "socialiteproviders/infomaniak",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.0"
},
{
"name": "socialiteproviders/microsoft-azure",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^5.2"
},
{
"name": "socialiteproviders/zitadel",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.2"
},
{
"name": "spatie/laravel-activitylog",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.11.0"
},
{
"name": "spatie/laravel-data",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^4.19.1"
},
{
"name": "spatie/laravel-markdown",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.7.1"
},
{
"name": "spatie/laravel-schemaless-attributes",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.5.1"
},
{
"name": "spatie/url",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.4"
},
{
"name": "stevebauman/purify",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^6.3.1"
},
{
"name": "stripe/stripe-php",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^16.6.0"
},
{
"name": "symfony/yaml",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^7.4.1"
},
{
"name": "visus/cuid2",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^6.0.0"
},
{
"name": "yosymfony/toml",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^1.0.4"
},
{
"name": "zircote/swagger-php",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^5.8.0"
},
{
"name": "@tailwindcss/forms",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "0.5.10"
},
{
"name": "@tailwindcss/typography",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "0.5.16"
},
{
"name": "@xterm/addon-fit",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "0.10.0"
},
{
"name": "@xterm/xterm",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "5.5.0"
},
{
"name": "playwright",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^1.58.2"
},
{
"name": "@xterm/addon-fit",
"manifest": "docker/coolify-realtime/package.json",
"ecosystem": "npm",
"version_constraint": "0.11.0"
},
{
"name": "@xterm/xterm",
"manifest": "docker/coolify-realtime/package.json",
"ecosystem": "npm",
"version_constraint": "6.0.0"
},
{
"name": "cookie",
"manifest": "docker/coolify-realtime/package.json",
"ecosystem": "npm",
"version_constraint": "1.1.1"
},
{
"name": "dotenv",
"manifest": "docker/coolify-realtime/package.json",
"ecosystem": "npm",
"version_constraint": "17.3.1"
},
{
"name": "node-pty",
"manifest": "docker/coolify-realtime/package.json",
"ecosystem": "npm",
"version_constraint": "1.1.0"
},
{
"name": "ws",
"manifest": "docker/coolify-realtime/package.json",
"ecosystem": "npm",
"version_constraint": "8.20.1"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@tailwindcss/forms",
"direct": true,
"version": "0.5.10",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/typography",
"direct": true,
"version": "0.5.16",
"ecosystem": "npm"
},
{
"name": "@xterm/addon-fit",
"direct": true,
"version": "0.10.0",
"ecosystem": "npm"
},
{
"name": "@xterm/addon-fit",
"direct": true,
"version": "0.11.0",
"ecosystem": "npm"
},
{
"name": "@xterm/xterm",
"direct": true,
"version": "5.5.0",
"ecosystem": "npm"
},
{
"name": "@xterm/xterm",
"direct": true,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "cookie",
"direct": true,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "dotenv",
"direct": true,
"version": "17.3.1",
"ecosystem": "npm"
},
{
"name": "node-pty",
"direct": true,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "playwright",
"direct": true,
"version": "1.58.2",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": true,
"version": "8.20.1",
"ecosystem": "npm"
},
{
"name": "danharrin/livewire-rate-limiting",
"direct": true,
"version": "2.2.0",
"ecosystem": "packagist"
},
{
"name": "doctrine/dbal",
"direct": true,
"version": "4.4.3",
"ecosystem": "packagist"
},
{
"name": "guzzlehttp/guzzle",
"direct": true,
"version": "7.12.1",
"ecosystem": "packagist"
},
{
"name": "laravel/fortify",
"direct": true,
"version": "1.37.2",
"ecosystem": "packagist"
},
{
"name": "laravel/framework",
"direct": true,
"version": "12.61.1",
"ecosystem": "packagist"
},
{
"name": "laravel/horizon",
"direct": true,
"version": "5.47.0",
"ecosystem": "packagist"
},
{
"name": "laravel/mcp",
"direct": true,
"version": "0.6.7",
"ecosystem": "packagist"
},
{
"name": "laravel/nightwatch",
"direct": true,
"version": "1.27.0",
"ecosystem": "packagist"
},
{
"name": "laravel/pail",
"direct": true,
"version": "1.2.6",
"ecosystem": "packagist"
},
{
"name": "laravel/prompts",
"direct": true,
"version": "0.3.18",
"ecosystem": "packagist"
},
{
"name": "laravel/sanctum",
"direct": true,
"version": "4.3.2",
"ecosystem": "packagist"
},
{
"name": "laravel/socialite",
"direct": true,
"version": "5.27.0",
"ecosystem": "packagist"
},
{
"name": "laravel/tinker",
"direct": true,
"version": "2.11.1",
"ecosystem": "packagist"
},
{
"name": "laravel/ui",
"direct": true,
"version": "4.6.3",
"ecosystem": "packagist"
},
{
"name": "lcobucci/jwt",
"direct": true,
"version": "5.6.0",
"ecosystem": "packagist"
},
{
"name": "league/flysystem-aws-s3-v3",
"direct": true,
"version": "3.34.0",
"ecosystem": "packagist"
},
{
"name": "league/flysystem-sftp-v3",
"direct": true,
"version": "3.33.0",
"ecosystem": "packagist"
},
{
"name": "livewire/livewire",
"direct": true,
"version": "3.8.0",
"ecosystem": "packagist"
},
{
"name": "log1x/laravel-webfonts",
"direct": true,
"version": "2.0.1",
"ecosystem": "packagist"
},
{
"name": "lorisleiva/laravel-actions",
"direct": true,
"version": "2.10.1",
"ecosystem": "packagist"
},
{
"name": "nubs/random-name-generator",
"direct": true,
"version": "2.2.0",
"ecosystem": "packagist"
},
{
"name": "pion/laravel-chunk-upload",
"direct": true,
"version": "1.5.6",
"ecosystem": "packagist"
},
{
"name": "poliander/cron",
"direct": true,
"version": "3.3.1",
"ecosystem": "packagist"
},
{
"name": "purplepixie/phpdns",
"direct": true,
"version": "2.3.6",
"ecosystem": "packagist"
},
{
"name": "pusher/pusher-php-server",
"direct": true,
"version": "7.2.8",
"ecosystem": "packagist"
},
{
"name": "resend/resend-laravel",
"direct": true,
"version": "0.20.0",
"ecosystem": "packagist"
},
{
"name": "sentry/sentry-laravel",
"direct": true,
"version": "4.25.1",
"ecosystem": "packagist"
},
{
"name": "socialiteproviders/authentik",
"direct": true,
"version": "5.3.0",
"ecosystem": "packagist"
},
{
"name": "socialiteproviders/clerk",
"direct": true,
"version": "5.1.0",
"ecosystem": "packagist"
},
{
"name": "socialiteproviders/discord",
"direct": true,
"version": "4.2.0",
"ecosystem": "packagist"
},
{
"name": "socialiteproviders/google",
"direct": true,
"version": "4.1.0",
"ecosystem": "packagist"
},
{
"name": "socialiteproviders/infomaniak",
"direct": true,
"version": "4.0.0",
"ecosystem": "packagist"
},
{
"name": "socialiteproviders/microsoft-azure",
"direct": true,
"version": "5.2.0",
"ecosystem": "packagist"
},
{
"name": "socialiteproviders/zitadel",
"direct": true,
"version": "4.2.0",
"ecosystem": "packagist"
},
{
"name": "spatie/laravel-activitylog",
"direct": true,
"version": "4.12.3",
"ecosystem": "packagist"
},
{
"name": "spatie/laravel-data",
"direct": true,
"version": "4.23.0",
"ecosystem": "packagist"
},
{
"name": "spatie/laravel-markdown",
"direct": true,
"version": "2.8.0",
"ecosystem": "packagist"
},
{
"name": "spatie/laravel-schemaless-attributes",
"direct": true,
"version": "2.6.0",
"ecosystem": "packagist"
},
{
"name": "spatie/url",
"direct": true,
"version": "2.4.0",
"ecosystem": "packagist"
},
{
"name": "stevebauman/purify",
"direct": true,
"version": "6.3.2",
"ecosystem": "packagist"
},
{
"name": "stripe/stripe-php",
"direct": true,
"version": "16.6.0",
"ecosystem": "packagist"
},
{
"name": "symfony/yaml",
"direct": true,
"version": "7.4.12",
"ecosystem": "packagist"
},
{
"name": "visus/cuid2",
"direct": true,
"version": "6.0.0",
"ecosystem": "packagist"
},
{
"name": "yosymfony/toml",
"direct": true,
"version": "1.0.4",
"ecosystem": "packagist"
},
{
"name": "zircote/swagger-php",
"direct": true,
"version": "5.8.3",
"ecosystem": "packagist"
},
{
"name": "@alloc/quick-lru",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.10.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.7.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.10.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.7.1",
"ecosystem": "npm"
},
{
"name": "@emnapi/wasi-threads",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/wasi-threads",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.13",
"ecosystem": "npm"
},
{
"name": "@jridgewell/remapping",
"direct": false,
"version": "2.3.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@napi-rs/wasm-runtime",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@napi-rs/wasm-runtime",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@oxc-project/types",
"direct": false,
"version": "0.133.0",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-android-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-x64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-freebsd-x64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm-gnueabihf",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-musl",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-ppc64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-s390x-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-musl",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-openharmony-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-wasm32-wasi",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-arm64-msvc",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-x64-msvc",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/pluginutils",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/node",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-android-arm64",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-arm64",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-x64",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-freebsd-x64",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm-gnueabihf",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-gnu",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-musl",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-gnu",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-musl",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-wasm32-wasi",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-arm64-msvc",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-x64-msvc",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/postcss",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "@tybys/wasm-util",
"direct": false,
"version": "0.10.1",
"ecosystem": "npm"
},
{
"name": "@tybys/wasm-util",
"direct": false,
"version": "0.10.2",
"ecosystem": "npm"
},
{
"name": "@types/prismjs",
"direct": false,
"version": "1.26.5",
"ecosystem": "npm"
},
{
"name": "clsx",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "cssesc",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "detect-libc",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.19.0",
"ecosystem": "npm"
},
{
"name": "fdir",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "jiti",
"direct": false,
"version": "2.6.1",
"ecosystem": "npm"
},
{
"name": "laravel-vite-plugin",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "lightningcss",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-android-arm64",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-android-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-arm64",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-x64",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-freebsd-x64",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-freebsd-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm-gnueabihf",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm-gnueabihf",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-gnu",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-musl",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-gnu",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-musl",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-arm64-msvc",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-arm64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-x64-msvc",
"direct": false,
"version": "1.30.2",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-x64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lodash.castarray",
"direct": false,
"version": "4.4.0",
"ecosystem": "npm"
},
{
"name": "lodash.isplainobject",
"direct": false,
"version": "4.0.6",
"ecosystem": "npm"
},
{
"name": "lodash.merge",
"direct": false,
"version": "4.6.2",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.30.21",
"ecosystem": "npm"
},
{
"name": "mini-svg-data-uri",
"direct": false,
"version": "1.4.4",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.12",
"ecosystem": "npm"
},
{
"name": "node-addon-api",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "playwright-core",
"direct": false,
"version": "1.58.2",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.15",
"ecosystem": "npm"
},
{
"name": "postcss-selector-parser",
"direct": false,
"version": "6.0.10",
"ecosystem": "npm"
},
{
"name": "prism-react-renderer",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "react",
"direct": false,
"version": "19.2.4",
"ecosystem": "npm"
},
{
"name": "rolldown",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "tailwind-scrollbar",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "tailwindcss",
"direct": false,
"version": "4.1.18",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "tinyglobby",
"direct": false,
"version": "0.2.17",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "util-deprecate",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "8.0.16",
"ecosystem": "npm"
},
{
"name": "vite-plugin-full-reload",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "amphp/amp",
"direct": false,
"version": "3.1.1",
"ecosystem": "packagist"
},
{
"name": "amphp/byte-stream",
"direct": false,
"version": "2.1.2",
"ecosystem": "packagist"
},
{
"name": "amphp/cache",
"direct": false,
"version": "2.0.1",
"ecosystem": "packagist"
},
{
"name": "amphp/dns",
"direct": false,
"version": "2.4.0",
"ecosystem": "packagist"
},
{
"name": "amphp/hpack",
"direct": false,
"version": "3.2.2",
"ecosystem": "packagist"
},
{
"name": "amphp/http",
"direct": false,
"version": "2.1.2",
"ecosystem": "packagist"
},
{
"name": "amphp/http-client",
"direct": false,
"version": "5.3.6",
"ecosystem": "packagist"
},
{
"name": "amphp/http-server",
"direct": false,
"version": "3.4.5",
"ecosystem": "packagist"
},
{
"name": "amphp/parser",
"direct": false,
"version": "1.1.1",
"ecosystem": "packagist"
},
{
"name": "amphp/pipeline",
"direct": false,
"version": "1.2.4",
"ecosystem": "packagist"
},
{
"name": "amphp/process",
"direct": false,
"version": "2.0.3",
"ecosystem": "packagist"
},
{
"name": "amphp/serialization",
"direct": false,
"version": "1.1.0",
"ecosystem": "packagist"
},
{
"name": "amphp/socket",
"direct": false,
"version": "2.4.0",
"ecosystem": "packagist"
},
{
"name": "amphp/sync",
"direct": false,
"version": "2.3.0",
"ecosystem": "packagist"
},
{
"name": "amphp/websocket",
"direct": false,
"version": "2.0.4",
"ecosystem": "packagist"
},
{
"name": "amphp/websocket-client",
"direct": false,
"version": "2.0.2",
"ecosystem": "packagist"
},
{
"name": "aws/aws-crt-php",
"direct": false,
"version": "1.2.7",
"ecosystem": "packagist"
},
{
"name": "aws/aws-sdk-php",
"direct": false,
"version": "3.381.5",
"ecosystem": "packagist"
},
{
"name": "bacon/bacon-qr-code",
"direct": false,
"version": "3.1.1",
"ecosystem": "packagist"
},
{
"name": "barryvdh/laravel-debugbar",
"direct": false,
"version": "3.16.5",
"ecosystem": "packagist"
},
{
"name": "brianium/paratest",
"direct": false,
"version": "7.20.0",
"ecosystem": "packagist"
},
{
"name": "brick/math",
"direct": false,
"version": "0.14.8",
"ecosystem": "packagist"
},
{
"name": "carbonphp/carbon-doctrine-types",
"direct": false,
"version": "3.2.0",
"ecosystem": "packagist"
},
{
"name": "composer/pcre",
"direct": false,
"version": "3.3.2",
"ecosystem": "packagist"
},
{
"name": "composer/xdebug-handler",
"direct": false,
"version": "3.0.5",
"ecosystem": "packagist"
},
{
"name": "dasprid/enum",
"direct": false,
"version": "1.0.7",
"ecosystem": "packagist"
},
{
"name": "daverandom/libdns",
"direct": false,
"version": "2.1.0",
"ecosystem": "packagist"
},
{
"name": "dflydev/dot-access-data",
"direct": false,
"version": "3.0.3",
"ecosystem": "packagist"
},
{
"name": "doctrine/deprecations",
"direct": false,
"version": "1.1.6",
"ecosystem": "packagist"
},
{
"name": "doctrine/inflector",
"direct": false,
"version": "2.1.0",
"ecosystem": "packagist"
},
{
"name": "doctrine/lexer",
"direct": false,
"version": "3.0.1",
"ecosystem": "packagist"
},
{
"name": "dragonmantank/cron-expression",
"direct": false,
"version": "3.6.0",
"ecosystem": "packagist"
},
{
"name": "driftingly/rector-laravel",
"direct": false,
"version": "2.3.0",
"ecosystem": "packagist"
},
{
"name": "egulias/email-validator",
"direct": false,
"version": "4.0.4",
"ecosystem": "packagist"
},
{
"name": "ezyang/htmlpurifier",
"direct": false,
"version": "4.19.0",
"ecosystem": "packagist"
},
{
"name": "fakerphp/faker",
"direct": false,
"version": "1.24.1",
"ecosystem": "packagist"
},
{
"name": "fidry/cpu-core-counter",
"direct": false,
"version": "1.3.0",
"ecosystem": "packagist"
},
{
"name": "filp/whoops",
"direct": false,
"version": "2.18.4",
"ecosystem": "packagist"
},
{
"name": "firebase/php-jwt",
"direct": false,
"version": "7.0.5",
"ecosystem": "packagist"
},
{
"name": "fruitcake/php-cors",
"direct": false,
"version": "1.4.0",
"ecosystem": "packagist"
},
{
"name": "graham-campbell/result-type",
"direct": false,
"version": "1.1.4",
"ecosystem": "packagist"
},
{
"name": "guzzlehttp/promises",
"direct": false,
"version": "2.5.0",
"ecosystem": "packagist"
},
{
"name": "guzzlehttp/psr7",
"direct": false,
"version": "2.12.1",
"ecosystem": "packagist"
},
{
"name": "guzzlehttp/uri-template",
"direct": false,
"version": "1.0.7",
"ecosystem": "packagist"
},
{
"name": "hamcrest/hamcrest-php",
"direct": false,
"version": "2.1.1",
"ecosystem": "packagist"
},
{
"name": "jean85/pretty-package-versions",
"direct": false,
"version": "2.1.1",
"ecosystem": "packagist"
},
{
"name": "kelunik/certificate",
"direct": false,
"version": "1.1.3",
"ecosystem": "packagist"
},
{
"name": "laravel/boost",
"direct": false,
"version": "2.4.8",
"ecosystem": "packagist"
},
{
"name": "laravel/dusk",
"direct": false,
"version": "8.6.0",
"ecosystem": "packagist"
},
{
"name": "laravel/passkeys",
"direct": false,
"version": "0.2.1",
"ecosystem": "packagist"
},
{
"name": "laravel/pint",
"direct": false,
"version": "1.29.1",
"ecosystem": "packagist"
},
{
"name": "laravel/roster",
"direct": false,
"version": "0.5.1",
"ecosystem": "packagist"
},
{
"name": "laravel/sentinel",
"direct": false,
"version": "1.1.0",
"ecosystem": "packagist"
},
{
"name": "laravel/serializable-closure",
"direct": false,
"version": "2.0.13",
"ecosystem": "packagist"
},
{
"name": "laravel/telescope",
"direct": false,
"version": "5.20.0",
"ecosystem": "packagist"
},
{
"name": "league/commonmark",
"direct": false,
"version": "2.8.2",
"ecosystem": "packagist"
},
{
"name": "league/config",
"direct": false,
"version": "1.2.0",
"ecosystem": "packagist"
},
{
"name": "league/flysystem",
"direct": false,
"version": "3.34.0",
"ecosystem": "packagist"
},
{
"name": "league/flysystem-local",
"direct": false,
"version": "3.31.0",
"ecosystem": "packagist"
},
{
"name": "league/mime-type-detection",
"direct": false,
"version": "1.16.0",
"ecosystem": "packagist"
},
{
"name": "league/oauth1-client",
"direct": false,
"version": "1.11.0",
"ecosystem": "packagist"
},
{
"name": "league/uri",
"direct": false,
"version": "7.8.1",
"ecosystem": "packagist"
},
{
"name": "league/uri-components",
"direct": false,
"version": "7.8.1",
"ecosystem": "packagist"
},
{
"name": "league/uri-interfaces",
"direct": false,
"version": "7.8.1",
"ecosystem": "packagist"
},
{
"name": "lorisleiva/lody",
"direct": false,
"version": "0.7.0",
"ecosystem": "packagist"
},
{
"name": "mockery/mockery",
"direct": false,
"version": "1.6.12",
"ecosystem": "packagist"
},
{
"name": "monolog/monolog",
"direct": false,
"version": "3.10.0",
"ecosystem": "packagist"
},
{
"name": "mtdowling/jmespath.php",
"direct": false,
"version": "2.8.0",
"ecosystem": "packagist"
},
{
"name": "myclabs/deep-copy",
"direct": false,
"version": "1.13.4",
"ecosystem": "packagist"
},
{
"name": "nesbot/carbon",
"direct": false,
"version": "3.13.0",
"ecosystem": "packagist"
},
{
"name": "nette/schema",
"direct": false,
"version": "1.3.5",
"ecosystem": "packagist"
},
{
"name": "nette/utils",
"direct": false,
"version": "4.1.4",
"ecosystem": "packagist"
},
{
"name": "nikic/php-parser",
"direct": false,
"version": "5.7.0",
"ecosystem": "packagist"
},
{
"name": "nunomaduro/collision",
"direct": false,
"version": "8.9.4",
"ecosystem": "packagist"
},
{
"name": "nunomaduro/termwind",
"direct": false,
"version": "2.4.0",
"ecosystem": "packagist"
},
{
"name": "nyholm/psr7",
"direct": false,
"version": "1.8.2",
"ecosystem": "packagist"
},
{
"name": "paragonie/constant_time_encoding",
"direct": false,
"version": "3.1.3",
"ecosystem": "packagist"
},
{
"name": "paragonie/random_compat",
"direct": false,
"version": "9.99.100",
"ecosystem": "packagist"
},
{
"name": "pestphp/pest",
"direct": false,
"version": "4.7.0",
"ecosystem": "packagist"
},
{
"name": "pestphp/pest-plugin",
"direct": false,
"version": "4.0.0",
"ecosystem": "packagist"
},
{
"name": "pestphp/pest-plugin-arch",
"direct": false,
"version": "4.0.2",
"ecosystem": "packagist"
},
{
"name": "pestphp/pest-plugin-browser",
"direct": false,
"version": "4.3.1",
"ecosystem": "packagist"
},
{
"name": "pestphp/pest-plugin-mutate",
"direct": false,
"version": "4.0.1",
"ecosystem": "packagist"
},
{
"name": "pestphp/pest-plugin-profanity",
"direct": false,
"version": "4.2.1",
"ecosystem": "packagist"
},
{
"name": "phar-io/manifest",
"direct": false,
"version": "2.0.4",
"ecosystem": "packagist"
},
{
"name": "phar-io/version",
"direct": false,
"version": "3.2.1",
"ecosystem": "packagist"
},
{
"name": "php-debugbar/php-debugbar",
"direct": false,
"version": "2.2.6",
"ecosystem": "packagist"
},
{
"name": "php-webdriver/webdriver",
"direct": false,
"version": "1.16.0",
"ecosystem": "packagist"
},
{
"name": "phpdocumentor/reflection-common",
"direct": false,
"version": "2.2.0",
"ecosystem": "packagist"
},
{
"name": "phpdocumentor/reflection-docblock",
"direct": false,
"version": "6.0.3",
"ecosystem": "packagist"
},
{
"name": "phpdocumentor/type-resolver",
"direct": false,
"version": "2.0.0",
"ecosystem": "packagist"
},
{
"name": "phpoption/phpoption",
"direct": false,
"version": "1.9.5",
"ecosystem": "packagist"
},
{
"name": "phpseclib/phpseclib",
"direct": false,
"version": "3.0.54",
"ecosystem": "packagist"
},
{
"name": "phpstan/phpdoc-parser",
"direct": false,
"version": "2.3.3",
"ecosystem": "packagist"
},
{
"name": "phpstan/phpstan",
"direct": false,
"version": "2.1.55",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-code-coverage",
"direct": false,
"version": "12.5.6",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-file-iterator",
"direct": false,
"version": "6.0.1",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-invoker",
"direct": false,
"version": "6.0.0",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-text-template",
"direct": false,
"version": "5.0.0",
"ecosystem": "packagist"
},
{
"name": "phpunit/php-timer",
"direct": false,
"version": "8.0.0",
"ecosystem": "packagist"
},
{
"name": "phpunit/phpunit",
"direct": false,
"version": "12.5.24",
"ecosystem": "packagist"
},
{
"name": "pragmarx/google2fa",
"direct": false,
"version": "9.0.0",
"ecosystem": "packagist"
},
{
"name": "psr/cache",
"direct": false,
"version": "3.0.0",
"ecosystem": "packagist"
},
{
"name": "psr/clock",
"direct": false,
"version": "1.0.0",
"ecosystem": "packagist"
},
{
"name": "psr/container",
"direct": false,
"version": "2.0.2",
"ecosystem": "packagist"
},
{
"name": "psr/event-dispatcher",
"direct": false,
"version": "1.0.0",
"ecosystem": "packagist"
},
{
"name": "psr/http-client",
"direct": false,
"version": "1.0.3",
"ecosystem": "packagist"
},
{
"name": "psr/http-factory",
"direct": false,
"version": "1.1.0",
"ecosystem": "packagist"
},
{
"name": "psr/http-message",
"direct": false,
"version": "2.0",
"ecosystem": "packagist"
},
{
"name": "psr/log",
"direct": false,
"version": "3.0.2",
"ecosystem": "packagist"
},
{
"name": "psr/simple-cache",
"direct": false,
"version": "3.0.0",
"ecosystem": "packagist"
},
{
"name": "psy/psysh",
"direct": false,
"version": "0.12.22",
"ecosystem": "packagist"
},
{
"name": "ralouphie/getallheaders",
"direct": false,
"version": "3.0.3",
"ecosystem": "packagist"
},
{
"name": "ramsey/collection",
"direct": false,
"version": "2.1.1",
"ecosystem": "packagist"
},
{
"name": "ramsey/uuid",
"direct": false,
"version": "4.9.3",
"ecosystem": "packagist"
},
{
"name": "rector/rector",
"direct": false,
"version": "2.4.4",
"ecosystem": "packagist"
},
{
"name": "resend/resend-php",
"direct": false,
"version": "0.18.1",
"ecosystem": "packagist"
},
{
"name": "revolt/event-loop",
"direct": false,
"version": "1.0.9",
"ecosystem": "packagist"
},
{
"name": "sebastian/cli-parser",
"direct": false,
"version": "4.2.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/comparator",
"direct": false,
"version": "7.1.8",
"ecosystem": "packagist"
},
{
"name": "sebastian/complexity",
"direct": false,
"version": "5.0.0",
"ecosystem": "packagist"
},
{
"name": "sebastian/diff",
"direct": false,
"version": "7.0.0",
"ecosystem": "packagist"
},
{
"name": "sebastian/environment",
"direct": false,
"version": "8.1.0",
"ecosystem": "packagist"
},
{
"name": "sebastian/exporter",
"direct": false,
"version": "7.0.3",
"ecosystem": "packagist"
},
{
"name": "sebastian/global-state",
"direct": false,
"version": "8.0.2",
"ecosystem": "packagist"
},
{
"name": "sebastian/lines-of-code",
"direct": false,
"version": "4.0.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/object-enumerator",
"direct": false,
"version": "7.0.0",
"ecosystem": "packagist"
},
{
"name": "sebastian/object-reflector",
"direct": false,
"version": "5.0.0",
"ecosystem": "packagist"
},
{
"name": "sebastian/recursion-context",
"direct": false,
"version": "7.0.1",
"ecosystem": "packagist"
},
{
"name": "sebastian/type",
"direct": false,
"version": "6.0.4",
"ecosystem": "packagist"
},
{
"name": "sebastian/version",
"direct": false,
"version": "6.0.0",
"ecosystem": "packagist"
},
{
"name": "sentry/sentry",
"direct": false,
"version": "4.27.0",
"ecosystem": "packagist"
},
{
"name": "serversideup/spin",
"direct": false,
"version": "3.2.3",
"ecosystem": "packagist"
},
{
"name": "socialiteproviders/manager",
"direct": false,
"version": "4.9.2",
"ecosystem": "packagist"
},
{
"name": "spatie/backtrace",
"direct": false,
"version": "1.8.2",
"ecosystem": "packagist"
},
{
"name": "spatie/commonmark-shiki-highlighter",
"direct": false,
"version": "2.5.2",
"ecosystem": "packagist"
},
{
"name": "spatie/error-solutions",
"direct": false,
"version": "1.1.3",
"ecosystem": "packagist"
},
{
"name": "spatie/flare-client-php",
"direct": false,
"version": "1.11.1",
"ecosystem": "packagist"
},
{
"name": "spatie/ignition",
"direct": false,
"version": "1.16.0",
"ecosystem": "packagist"
},
{
"name": "spatie/laravel-ignition",
"direct": false,
"version": "2.12.0",
"ecosystem": "packagist"
},
{
"name": "spatie/laravel-package-tools",
"direct": false,
"version": "1.93.1",
"ecosystem": "packagist"
},
{
"name": "spatie/macroable",
"direct": false,
"version": "2.1.0",
"ecosystem": "packagist"
},
{
"name": "spatie/php-structure-discoverer",
"direct": false,
"version": "2.4.2",
"ecosystem": "packagist"
},
{
"name": "spatie/shiki-php",
"direct": false,
"version": "2.4.0",
"ecosystem": "packagist"
},
{
"name": "spomky-labs/cbor-php",
"direct": false,
"version": "3.2.3",
"ecosystem": "packagist"
},
{
"name": "spomky-labs/pki-framework",
"direct": false,
"version": "1.4.2",
"ecosystem": "packagist"
},
{
"name": "staabm/side-effects-detector",
"direct": false,
"version": "1.0.5",
"ecosystem": "packagist"
},
{
"name": "symfony/clock",
"direct": false,
"version": "8.0.8",
"ecosystem": "packagist"
},
{
"name": "symfony/console",
"direct": false,
"version": "7.4.13",
"ecosystem": "packagist"
},
{
"name": "symfony/css-selector",
"direct": false,
"version": "8.0.9",
"ecosystem": "packagist"
},
{
"name": "symfony/deprecation-contracts",
"direct": false,
"version": "3.7.1",
"ecosystem": "packagist"
},
{
"name": "symfony/error-handler",
"direct": false,
"version": "7.4.8",
"ecosystem": "packagist"
},
{
"name": "symfony/event-dispatcher",
"direct": false,
"version": "8.0.9",
"ecosystem": "packagist"
},
{
"name": "symfony/event-dispatcher-contracts",
"direct": false,
"version": "3.7.0",
"ecosystem": "packagist"
},
{
"name": "symfony/filesystem",
"direct": false,
"version": "8.0.11",
"ecosystem": "packagist"
},
{
"name": "symfony/finder",
"direct": false,
"version": "7.4.8",
"ecosystem": "packagist"
},
{
"name": "symfony/http-client",
"direct": false,
"version": "7.4.9",
"ecosystem": "packagist"
},
{
"name": "symfony/http-client-contracts",
"direct": false,
"version": "3.7.0",
"ecosystem": "packagist"
},
{
"name": "symfony/http-foundation",
"direct": false,
"version": "7.4.13",
"ecosystem": "packagist"
},
{
"name": "symfony/http-kernel",
"direct": false,
"version": "7.4.13",
"ecosystem": "packagist"
},
{
"name": "symfony/mailer",
"direct": false,
"version": "7.4.12",
"ecosystem": "packagist"
},
{
"name": "symfony/mime",
"direct": false,
"version": "7.4.13",
"ecosystem": "packagist"
},
{
"name": "symfony/options-resolver",
"direct": false,
"version": "8.0.8",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-ctype",
"direct": false,
"version": "1.37.0",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-intl-grapheme",
"direct": false,
"version": "1.38.1",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-intl-idn",
"direct": false,
"version": "1.38.1",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-intl-normalizer",
"direct": false,
"version": "1.38.0",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-mbstring",
"direct": false,
"version": "1.38.2",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-php80",
"direct": false,
"version": "1.37.0",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-php83",
"direct": false,
"version": "1.38.2",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-php84",
"direct": false,
"version": "1.38.1",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-php85",
"direct": false,
"version": "1.38.1",
"ecosystem": "packagist"
},
{
"name": "symfony/polyfill-uuid",
"direct": false,
"version": "1.37.0",
"ecosystem": "packagist"
},
{
"name": "symfony/process",
"direct": false,
"version": "7.4.13",
"ecosystem": "packagist"
},
{
"name": "symfony/property-access",
"direct": false,
"version": "8.0.8",
"ecosystem": "packagist"
},
{
"name": "symfony/property-info",
"direct": false,
"version": "8.0.8",
"ecosystem": "packagist"
},
{
"name": "symfony/psr-http-message-bridge",
"direct": false,
"version": "8.0.8",
"ecosystem": "packagist"
},
{
"name": "symfony/routing",
"direct": false,
"version": "7.4.13",
"ecosystem": "packagist"
},
{
"name": "symfony/serializer",
"direct": false,
"version": "8.0.14",
"ecosystem": "packagist"
},
{
"name": "symfony/service-contracts",
"direct": false,
"version": "3.7.0",
"ecosystem": "packagist"
},
{
"name": "symfony/string",
"direct": false,
"version": "8.0.13",
"ecosystem": "packagist"
},
{
"name": "symfony/translation",
"direct": false,
"version": "8.0.10",
"ecosystem": "packagist"
},
{
"name": "symfony/translation-contracts",
"direct": false,
"version": "3.7.0",
"ecosystem": "packagist"
},
{
"name": "symfony/type-info",
"direct": false,
"version": "8.0.9",
"ecosystem": "packagist"
},
{
"name": "symfony/uid",
"direct": false,
"version": "7.4.9",
"ecosystem": "packagist"
},
{
"name": "symfony/var-dumper",
"direct": false,
"version": "7.4.8",
"ecosystem": "packagist"
},
{
"name": "ta-tikoma/phpunit-architecture-test",
"direct": false,
"version": "0.8.7",
"ecosystem": "packagist"
},
{
"name": "theseer/tokenizer",
"direct": false,
"version": "2.0.1",
"ecosystem": "packagist"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
"direct": false,
"version": "2.4.0",
"ecosystem": "packagist"
},
{
"name": "vlucas/phpdotenv",
"direct": false,
"version": "5.6.3",
"ecosystem": "packagist"
},
{
"name": "voku/portable-ascii",
"direct": false,
"version": "2.1.1",
"ecosystem": "packagist"
},
{
"name": "web-auth/cose-lib",
"direct": false,
"version": "4.5.2",
"ecosystem": "packagist"
},
{
"name": "web-auth/webauthn-lib",
"direct": false,
"version": "5.3.5",
"ecosystem": "packagist"
},
{
"name": "webmozart/assert",
"direct": false,
"version": "2.4.1",
"ecosystem": "packagist"
},
{
"name": "yosymfony/parser-utils",
"direct": false,
"version": "2.0.0",
"ecosystem": "packagist"
}
],
"collected": true,
"truncated": false,
"total_count": 359,
"direct_count": 56,
"indirect_count": 303
}
},
"maintainership": {
"issues": {
"open_prs": 212,
"merged_prs": 2671,
"open_issues": 629,
"closed_ratio": 0.838,
"closed_issues": 3249,
"closed_unmerged_prs": 2176
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "andrasbacsai",
"commits": 11916,
"avatar_url": "https://avatars.githubusercontent.com/u/5845193?v=4"
},
{
"type": "User",
"login": "peaklabs-dev",
"commits": 1728,
"avatar_url": "https://avatars.githubusercontent.com/u/122374094?v=4"
},
{
"type": "User",
"login": "ShadowArcanist",
"commits": 214,
"avatar_url": "https://avatars.githubusercontent.com/u/162910371?v=4"
},
{
"type": "User",
"login": "ijpatricio",
"commits": 80,
"avatar_url": "https://avatars.githubusercontent.com/u/26031459?v=4"
},
{
"type": "User",
"login": "yipfram",
"commits": 51,
"avatar_url": "https://avatars.githubusercontent.com/u/46826777?v=4"
},
{
"type": "User",
"login": "sawa-ko",
"commits": 43,
"avatar_url": "https://avatars.githubusercontent.com/u/56084970?v=4"
},
{
"type": "User",
"login": "GauthierPLM",
"commits": 40,
"avatar_url": "https://avatars.githubusercontent.com/u/2579741?v=4"
},
{
"type": "User",
"login": "theh2so4",
"commits": 39,
"avatar_url": "https://avatars.githubusercontent.com/u/69685986?v=4"
},
{
"type": "User",
"login": "majcek210",
"commits": 35,
"avatar_url": "https://avatars.githubusercontent.com/u/155429915?v=4"
},
{
"type": "User",
"login": "dominicbachmann",
"commits": 35,
"avatar_url": "https://avatars.githubusercontent.com/u/64000291?v=4"
}
],
"contributors_sampled": 98,
"top_contributor_share": 0.787
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"chore-lock-closed-issues-discussions-and-prs.yml",
"chore-manage-stale-issues-and-prs.yml",
"chore-pr-comments.yml",
"claude.yml",
"cleanup-ghcr-untagged.yml",
"coolify-helper-next.yml",
"coolify-helper.yml",
"coolify-realtime-next.yml",
"coolify-realtime.yml",
"coolify-release.yml",
"coolify-sha-build.yml",
"coolify-staging-build.yml",
"coolify-testing-host.yml",
"generate-changelog.yml",
"pr-quality.yaml"
],
"has_docs_dir": false,
"linter_configs": [],
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"composer.lock",
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 3,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "10 out of 10 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/10 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 37 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "no workflows found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 1,
"reason": "dependency not pinned by hash detected -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": null,
"reason": "No tokens found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 2,
"reason": "8 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "940571e16f5a0e6c73cf56b4bb1184bed3d60623",
"ran_at": "2026-08-03T14:54:30Z",
"aggregate_score": 4.8,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"recent_prs": {
"merged_7d": 3,
"decided_7d": 20,
"merged_30d": 13,
"authors_30d": 29,
"decided_30d": 57,
"sample_size": 60,
"window_days": 30,
"sample_exhausted": false,
"authors_probed_30d": 12,
"newcomer_merged_30d": 1,
"bot_prs_excluded_30d": 0,
"newcomer_authors_30d": 8,
"newcomer_decided_30d": 9
},
"ci_last_run_at": "2026-08-03T03:11:51Z",
"oldest_open_prs": [
{
"number": 5694,
"created_at": "2025-04-25T14:00:20Z",
"last_comment_at": "2026-05-10T14:46:09Z",
"last_comment_author": "Sahiram101"
},
{
"number": 6061,
"created_at": "2025-06-25T11:56:23Z",
"last_comment_at": "2025-07-18T18:56:23Z",
"last_comment_author": "CatStudioApp"
},
{
"number": 6189,
"created_at": "2025-07-14T08:43:54Z",
"last_comment_at": "2025-12-22T10:53:53Z",
"last_comment_author": "lepirlouit"
},
{
"number": 6389,
"created_at": "2025-08-17T23:03:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 6482,
"created_at": "2025-08-28T10:12:23Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 6548,
"created_at": "2025-09-05T14:02:46Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 6640,
"created_at": "2025-09-17T11:18:27Z",
"last_comment_at": "2025-10-02T18:40:17Z",
"last_comment_author": "tribal2"
},
{
"number": 6696,
"created_at": "2025-09-24T21:36:25Z",
"last_comment_at": "2026-07-25T06:38:55Z",
"last_comment_author": "swirleyythrone"
},
{
"number": 6717,
"created_at": "2025-09-28T00:58:01Z",
"last_comment_at": "2025-10-21T11:53:12Z",
"last_comment_author": "compgeniuses"
},
{
"number": 6792,
"created_at": "2025-10-07T18:50:34Z",
"last_comment_at": "2025-10-07T18:54:22Z",
"last_comment_author": "github-actions"
},
{
"number": 6962,
"created_at": "2025-10-22T00:05:28Z",
"last_comment_at": "2026-01-27T21:38:11Z",
"last_comment_author": "coderabbitai"
},
{
"number": 7087,
"created_at": "2025-11-02T17:25:34Z",
"last_comment_at": "2025-11-02T17:25:46Z",
"last_comment_author": "coderabbitai"
},
{
"number": 7170,
"created_at": "2025-11-09T23:47:46Z",
"last_comment_at": "2026-02-16T06:42:10Z",
"last_comment_author": "jonocodes"
},
{
"number": 7210,
"created_at": "2025-11-12T20:40:39Z",
"last_comment_at": "2026-07-27T22:20:47Z",
"last_comment_author": "sovetski"
},
{
"number": 7307,
"created_at": "2025-11-23T01:03:16Z",
"last_comment_at": "2026-05-05T10:01:07Z",
"last_comment_author": "M0n7y5"
},
{
"number": 7312,
"created_at": "2025-11-23T20:25:15Z",
"last_comment_at": "2025-11-24T08:00:51Z",
"last_comment_author": "coderabbitai"
},
{
"number": 7411,
"created_at": "2025-11-29T10:39:06Z",
"last_comment_at": "2025-11-30T11:16:08Z",
"last_comment_author": "coderabbitai"
},
{
"number": 7413,
"created_at": "2025-11-29T10:50:23Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 7489,
"created_at": "2025-12-04T13:11:22Z",
"last_comment_at": "2025-12-04T13:12:00Z",
"last_comment_author": "coderabbitai"
},
{
"number": 7591,
"created_at": "2025-12-11T21:10:18Z",
"last_comment_at": "2025-12-11T21:17:18Z",
"last_comment_author": "coderabbitai"
}
],
"last_merged_pr_at": "2026-08-01T16:50:22Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 399,
"created_at": "2022-05-03T08:11:35Z",
"last_comment_at": "2026-07-26T14:40:47Z",
"last_comment_author": "MuhammadQuran17"
},
{
"number": 2004,
"created_at": "2024-04-16T11:35:35Z",
"last_comment_at": "2026-03-11T08:18:49Z",
"last_comment_author": "andrasbacsai"
},
{
"number": 2110,
"created_at": "2024-05-02T03:27:28Z",
"last_comment_at": "2026-04-06T22:11:55Z",
"last_comment_author": "kpietraszko"
},
{
"number": 2218,
"created_at": "2024-05-16T08:17:24Z",
"last_comment_at": "2025-03-25T22:27:59Z",
"last_comment_author": "andrasbacsai"
},
{
"number": 2332,
"created_at": "2024-05-31T09:53:19Z",
"last_comment_at": "2026-04-16T13:43:42Z",
"last_comment_author": "Kabi10"
},
{
"number": 2346,
"created_at": "2024-06-03T18:17:47Z",
"last_comment_at": "2026-05-24T11:45:54Z",
"last_comment_author": "DYSfu"
},
{
"number": 2377,
"created_at": "2024-06-07T14:30:52Z",
"last_comment_at": "2026-05-12T11:05:21Z",
"last_comment_author": "rodrigouroz"
},
{
"number": 2378,
"created_at": "2024-06-07T14:35:39Z",
"last_comment_at": "2026-05-06T03:27:55Z",
"last_comment_author": "harishn1408"
},
{
"number": 2389,
"created_at": "2024-06-08T15:48:14Z",
"last_comment_at": "2026-06-25T17:34:20Z",
"last_comment_author": "Holo795"
},
{
"number": 2390,
"created_at": "2024-06-08T15:53:01Z",
"last_comment_at": "2026-05-19T00:30:25Z",
"last_comment_author": "brunobrise"
},
{
"number": 2495,
"created_at": "2024-06-12T13:38:52Z",
"last_comment_at": "2026-05-13T05:11:14Z",
"last_comment_author": "CatfishW"
},
{
"number": 2499,
"created_at": "2024-06-12T14:08:37Z",
"last_comment_at": "2026-05-31T15:02:50Z",
"last_comment_author": "jaxassistant55"
},
{
"number": 2521,
"created_at": "2024-06-13T09:03:50Z",
"last_comment_at": "2026-06-14T11:09:48Z",
"last_comment_author": "HT-Moh"
},
{
"number": 2543,
"created_at": "2024-06-14T08:10:09Z",
"last_comment_at": "2026-05-21T12:26:19Z",
"last_comment_author": "odanielschrage"
},
{
"number": 2570,
"created_at": "2024-06-16T10:18:53Z",
"last_comment_at": "2024-12-19T19:20:36Z",
"last_comment_author": "traskat"
},
{
"number": 2705,
"created_at": "2024-06-27T14:09:05Z",
"last_comment_at": "2025-12-05T22:33:46Z",
"last_comment_author": "FickleLife"
},
{
"number": 2806,
"created_at": "2024-07-12T07:53:26Z",
"last_comment_at": "2025-11-05T18:10:24Z",
"last_comment_author": "janviehweger"
},
{
"number": 2854,
"created_at": "2024-07-17T09:11:32Z",
"last_comment_at": "2026-02-08T09:25:33Z",
"last_comment_author": "coder966"
},
{
"number": 2862,
"created_at": "2024-07-17T19:09:45Z",
"last_comment_at": "2025-11-12T15:30:15Z",
"last_comment_author": "ItzAmirreza"
},
{
"number": 2912,
"created_at": "2024-07-22T11:19:40Z",
"last_comment_at": "2026-03-09T23:26:53Z",
"last_comment_author": "BanovMiroslav"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/coollabsio/coolify",
"host": "github.com",
"name": "coolify",
"owner": "coollabsio"
},
"metrics": {
"overall": {
"key": "overall",
"band": "excellent",
"name": "Overall health",
"note": "The weighted overall 74 is calibrated to 88 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 74,
"calibrated": 88,
"calibration": "2026-08-02"
}
}
],
"value": 88,
"inputs": {
"security": 52,
"vitality": 100,
"community": 95,
"governance": 55,
"calibration": "2026-08-02",
"engineering": 70,
"ai_readiness": 59,
"weighted_overall_raw": 74
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "exceptional",
"name": "Vitality",
"value": 100,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "exceptional",
"name": "Development activity",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"commits_last_year": 4299,
"human_commit_share": 0.99,
"days_since_last_push": 0,
"active_weeks_last_year": 52
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "52/52 weeks with commits",
"points": 36,
"status": "met",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 52
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "4299 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 4299
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "exceptional",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 100,
"latest_release_tag": "v4.2.0",
"releases_from_tags": false,
"days_since_latest_release": 12,
"mean_days_between_releases": 13.2
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 12 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 12
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~13.2 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 13.2
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "exceptional",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 4,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 4 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 4
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "exceptional",
"name": "Community & Adoption",
"value": 95,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "exceptional",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"forks": 5199,
"stars": 60033,
"watchers": 191,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "60,033 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 60033
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "5,199 forks",
"points": 25,
"status": "met",
"details": [
{
"code": "forks",
"params": {
"count": 5199
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "191 watchers",
"points": 12.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 191
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": 1,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"readme_badge_services": [
"shields.io"
],
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 55,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "weak",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 37,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 98,
"top_contributor_share": 0.787
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 79% of commits",
"points": 4.8,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 79
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "98 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 98
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 37 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"merged_prs": 2671,
"open_issues": 629,
"closed_issues": 3249,
"prs_merged_7d": 3,
"prs_decided_7d": 20,
"prs_merged_30d": 13,
"prs_decided_30d": 57,
"issue_closed_ratio": 0.838,
"closed_unmerged_prs": 2176,
"first_time_authors_30d": 8,
"first_time_prs_merged_30d": 1,
"first_time_prs_decided_30d": 9
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "84% of issues closed",
"points": 35.2,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 84
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "2671/4847 decided PRs merged",
"points": 16.5,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 2671,
"decided": 4847
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "1/9 first-time contributors' PRs merged in 30d",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "newcomer_prs_merged",
"params": {
"days": 30,
"merged": 1,
"decided": 9
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/10 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 78,
"inputs": {
"followers": 1838,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "coollabsio",
"public_repos": 43,
"account_age_days": 2370
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "1,838 followers of coollabsio",
"points": 23.5,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1838,
"login": "coollabsio"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "43 public repos, account ~6 yr old",
"points": 24,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 43
}
},
{
"code": "account_age_years",
"params": {
"years": 6
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 70,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "15 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 15
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "10 out of 10 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [
"nodejs",
"mysql",
"php",
"docker",
"self-hosting",
"redis",
"svelte",
"databases",
"nextjs",
"coolify",
"deployment",
"docker-compose",
"inertiajs",
"laravel",
"mariadb",
"postgres",
"self-hosted",
"server",
"static-site",
"svelte5"
],
"has_wiki": false,
"homepage": "https://coolify.io",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://coolify.io",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "20 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 20
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 52,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "weak",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 48,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 14,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 4,
"scorecard_aggregate": 4.8
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "10 out of 10 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/10 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 37 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no workflows found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 1",
"points": 0.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "8 existing vulnerabilities detected",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "good",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 359 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 359
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 70,
"inputs": {
"source": "osv",
"advisories": 8,
"affected_packages": 4,
"assessed_packages": 359,
"unassessed_packages": 0,
"affected_by_severity": "high 2, moderate 2",
"direct_affected_packages": 2
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "2 affected: ws 8.20.1 (high 7.5), guzzlehttp/guzzle 7.12.1 (moderate 5.9)",
"points": 12.2,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 2,
"packages": "ws 8.20.1 (high 7.5), guzzlehttp/guzzle 7.12.1 (moderate 5.9)"
}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory has been public longer than 90 days",
"points": 40,
"status": "met",
"details": [
{
"code": "advisories_none_stale",
"params": {
"days": 90
}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "exceptional",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 359,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 10
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 59,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.859,
"agent_instruction_files": [
".cursor/rules/coolify-ai-docs.mdc",
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 18856
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": ".cursor/rules/coolify-ai-docs.mdc, AGENTS.md, CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".cursor/rules/coolify-ai-docs.mdc, AGENTS.md, CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "85 of 99 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 85,
"sampled": 99
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "weak",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 41,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"composer.lock",
"package-lock.json"
],
"has_dockerfile": true,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0.01
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "1 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 1",
"points": 1,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"primary_language": "PHP",
"largest_source_bytes": 5749518,
"source_files_sampled": 2122,
"oversized_source_files": 32
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "PHP without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "PHP"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "32/2122 source files over 60KB",
"points": 54.2,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 2122,
"oversized": 32
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "moderate",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"example_dirs": [],
"has_mcp_signal": true,
"api_schema_files": [
"openapi.json",
"openapi.yaml"
]
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": "openapi.json, openapi.yaml",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "openapi.json, openapi.yaml"
}
}
],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [
"application"
],
"labels": [
"network-service"
],
"scores": {
"mcp-server": 3,
"network-service": 12
},
"primary": "network-service",
"evidence": [
{
"tier": "declared",
"label": "library",
"source": "composer.type:project",
"weight": -8
},
{
"tier": "declared",
"label": "library",
"source": "npm.private",
"weight": -6
},
{
"tier": "dependencies",
"label": "network-service",
"source": "dep:laravel/framework",
"weight": 4
},
{
"tier": "structure",
"label": "mcp-server",
"source": "mcp_signal",
"weight": 3
},
{
"tier": "structure",
"label": "network-service",
"source": "api_schema",
"weight": 3
},
{
"tier": "structure",
"label": "network-service",
"source": "tree.compose",
"weight": 3
},
{
"tier": "tags",
"label": "network-service",
"source": "tag:self-hosted",
"weight": 2
}
],
"artifacts": [
{
"path": "composer.json",
"labels": [],
"ecosystem": "packagist"
},
{
"path": "docker/coolify-realtime/package.json",
"labels": [],
"ecosystem": "npm"
},
{
"path": "package.json",
"labels": [],
"ecosystem": "npm"
}
],
"confidence": "medium",
"host_extension": false,
"runs_as_process": true,
"consumed_by_code": false
},
"metrics_version": "2.5.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"First-time contributor figures cover 12 of 29 authors (cap 12)",
"Could not fetch packagist package 'coollabsio/coolify' from its registry"
],
"report_type": "repository",
"generated_at": "2026-08-03T14:55:01.873391Z",
"schema_version": "0.30.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/c/coollabsio/coolify.svg",
"full_name": "coollabsio/coolify",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}