{"id":20334904,"url":"https://github.com/mdb/gossboss","last_synced_at":"2026-04-02T18:43:25.489Z","repository":{"id":41314155,"uuid":"332243534","full_name":"mdb/gossboss","owner":"mdb","description":"Collect aggregated goss test results from multiple remote goss servers.","archived":false,"fork":false,"pushed_at":"2023-01-09T15:22:15.000Z","size":6320,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T21:51:41.326Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-23T15:32:54.000Z","updated_at":"2024-12-12T03:45:02.000Z","dependencies_parsed_at":"2023-02-08T12:30:45.037Z","dependency_job_id":null,"html_url":"https://github.com/mdb/gossboss","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/mdb/gossboss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdb%2Fgossboss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdb%2Fgossboss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdb%2Fgossboss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdb%2Fgossboss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdb","download_url":"https://codeload.github.com/mdb/gossboss/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdb%2Fgossboss/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31313233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T20:38:33.974Z","updated_at":"2026-04-02T18:43:25.471Z","avatar_url":"https://github.com/mdb.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI/CD](https://github.com/mdb/gossboss/actions/workflows/main.yml/badge.svg)](https://github.com/mdb/gossboss/actions/workflows/main.yml)\n\n# gossboss\n\nCollect and view aggregated [goss](https://goss.rocks/) test results from\nmultiple remote `goss` servers.\n\n## Usage\n\n`gossboss` can be used as a CLI or as a server.\n\n### CLI\n\n`gossboss healthzs` collects `goss` test results from multiple `goss` servers\nand reports their results:\n\n```\ngossboss healthzs \\\n  --servers \"http://foo.com/healthz\" \\\n  --servers \"http://bar.com/healthz\"\n ✘ http://foo.com/healthz\n ✘ http://bar.com/healthz\nError: Goss test failed\n```\n\n### Server\n\n`gossboss serve` starts a server whose `/healthzs` endpoint returns aggregated\n`goss` test results from multiple `goss` servers:\n\n```\ngossboss serve \\\n  --servers \"http://foo.com/healthz\" \\\n  --servers \"http://bar.com/healthz\"\n2021/03/28 06:22:10 Starting server on :8085\n```\n\nView the `goss` test results from each server in aggregate via `gossboss`'s\n`/healthzs` endpoint:\n\n```\n$ curl localhost:8085/healthzs | jq\n\n{\n  \"Healthzs\": [\n    {\n      \"Result\": {\n        \"results\": [\n          {\n            \"successful\": false,\n            \"resource-id\": \"tcp://google.com:443\",\n            \"resource-type\": \"Addr\",\n            \"title\": \"\",\n            \"meta\": null,\n            \"test-type\": 0,\n            \"result\": 1,\n            \"property\": \"reachable\",\n            \"err\": null,\n            \"expected\": [\n              \"true\"\n            ],\n            \"found\": [\n              \"false\"\n            ],\n            \"human\": \"Expected\\n    \u003cbool\u003e: false\\nto equal\\n    \u003cbool\u003e: true\",\n            \"duration\": 503511341,\n            \"summary-line\": \"Addr: tcp://google.com:443: reachable:\\nExpected\\n    \u003cbool\u003e: false\\nto equal\\n    \u003cbool\u003e: true\"\n          }\n        ],\n        \"summary\": {\n          \"test-count\": 1,\n          \"failed-count\": 1,\n          \"total-duration\": 503801507\n        },\n        \"summary-line\": \"\"\n      },\n      \"URL\": \"http://foo.com/healthz\",\n      \"Error\": null\n    },\n    {\n      \"Result\": {\n        \"results\": [\n          {\n            \"successful\": false,\n            \"resource-id\": \"tcp://google.com:443\",\n            \"resource-type\": \"Addr\",\n            \"title\": \"\",\n            \"meta\": null,\n            \"test-type\": 0,\n            \"result\": 1,\n            \"property\": \"reachable\",\n            \"err\": null,\n            \"expected\": [\n              \"true\"\n            ],\n            \"found\": [\n              \"false\"\n            ],\n            \"human\": \"Expected\\n    \u003cbool\u003e: false\\nto equal\\n    \u003cbool\u003e: true\",\n            \"duration\": 503326591,\n            \"summary-line\": \"Addr: tcp://google.com:443: reachable:\\nExpected\\n    \u003cbool\u003e: false\\nto equal\\n    \u003cbool\u003e: true\"\n          }\n        ],\n        \"summary\": {\n          \"test-count\": 1,\n          \"failed-count\": 1,\n          \"total-duration\": 503626800\n        },\n        \"summary-line\": \"\"\n      },\n      \"URL\": \"http://bar.com/healthz\",\n      \"Error\": null\n    }\n  ],\n  \"Summary\": {\n    \"failed-count\": 2,\n    \"errored-count\": 0\n  }\n}\n```\n\n## Development\n\nTo test and build `gossboss`:\n\n```\nmake\n```\n\n## Releasing\n\n[GitHub Actions](https://github.com/mdb/gossboss/actions) builds and publishes\n[approved](https://docs.github.com/en/actions/managing-workflow-runs/reviewing-deployments)\n[releases](http://github.com/mdb/gossboss/releases) using\n[goreleaser](https://goreleaser.com/) from `gossboss`'s `main` branch.\n\nAlternatively, to manually release...\n\nCreate a release tag corresponding to the `Makefile`'s `VERSION` variable's value:\n\n```\nmake tag\n```\n\nBuild and publish a release:\n\n```\nmake release\n```\n\n## TODO candidates\n\n* service discovery (could `gossboss` be extensible to support the discovery of\ngoss server URLs via a cloud provider API?)\n* failure notifications (Slack, PagerDuty, SMS, webhook, etc.)\n* configuration file support (could `gossboss` be configured via a TOML or YAML file rather than command line flags?)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdb%2Fgossboss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdb%2Fgossboss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdb%2Fgossboss/lists"}