{"id":27040428,"url":"https://github.com/ldb/satellight","last_synced_at":"2025-06-26T08:05:02.231Z","repository":{"id":144290476,"uuid":"512898810","full_name":"ldb/satellight","owner":"ldb","description":"Light communication for light satellites ","archived":false,"fork":false,"pushed_at":"2022-07-13T14:25:50.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-05T03:29:08.676Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ldb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-11T20:25:19.000Z","updated_at":"2022-07-13T14:20:36.000Z","dependencies_parsed_at":"2024-06-21T03:59:26.456Z","dependency_job_id":"16764ced-f832-416f-a056-89da22a5ed97","html_url":"https://github.com/ldb/satellight","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ldb/satellight","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldb%2Fsatellight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldb%2Fsatellight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldb%2Fsatellight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldb%2Fsatellight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ldb","download_url":"https://codeload.github.com/ldb/satellight/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ldb%2Fsatellight/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262026982,"owners_count":23246955,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2025-04-05T03:29:11.401Z","updated_at":"2025-06-26T08:05:02.207Z","avatar_url":"https://github.com/ldb.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# satellight\n\nLight communication for light satellites travelling at almost light speed\n\n```\n ______     ______     ______   ______     __         __         __     ______     __  __     ______  \n/\\  ___\\   /\\  __ \\   /\\__  _\\ /\\  ___\\   /\\ \\       /\\ \\       /\\ \\   /\\  ___\\   /\\ \\_\\ \\   /\\__  _\\ \n\\ \\___  \\  \\ \\  __ \\  \\/_/\\ \\/ \\ \\  __\\   \\ \\ \\____  \\ \\ \\____  \\ \\ \\  \\ \\ \\__ \\  \\ \\  __ \\  \\/_/\\ \\/ \n \\/\\_____\\  \\ \\_\\ \\_\\    \\ \\_\\  \\ \\_____\\  \\ \\_____\\  \\ \\_____\\  \\ \\_\\  \\ \\_____\\  \\ \\_\\ \\_\\    \\ \\_\\ \n  \\/_____/   \\/_/\\/_/     \\/_/   \\/_____/   \\/_____/   \\/_____/   \\/_/   \\/_____/   \\/_/\\/_/     \\/_/\n```\n\n___\n\n`satellight` is a small simulation of a fleet of individual satellites detecting and reporting ozone levels to a\nground-station.\nIt was created to showcase the fog-specific challenges of reliable message delivery when encountering churn in the\nnetwork.\n\nEach component consists of a `sender`, a `receiver`, and some application logic.\nWhile transmission of an individual message happens synchronously, i.e over HTTP with TCP,\ncommunication between satellites and ground-station happen asynchronously, i.e not as an HTTP response.\n\n## Satellites\n\nEach satellite travels through space between random points.\nAt each location, an ozone level measurement is taken and transmitted to the groundstation.\n\nIf delivery to the ground station fails, for example due to bad weather conditions or space debris, messages are queued\nfor later retry.\nDelivery is retried with a linear backoff, each failed delivery postpones the next retry by one more second.\n\nSatellites can also crash or otherwise fail (e.g due to solar flares or high radiation levels) with a probability of 1%.\n\n### Runtime Flags\n\n```bash\nUsage of satellites:\n  -endpoint string\n        Groundstation endpoint (default \"http://localhost:8000\")\n  -satelliteCount int\n        Count of satellites launched (default 5)\n```\n\n## Ground-station\n\nWhen the ground-station receives a message containing a critically low ozone reading,\nit determines the closest satellite based on the latest data it has and sends it to the location to fix it.\n\n\u003e In order to make the cases more interesting,\n\u003e we exclude the satellite that created the reading from the list of potential fixing satellites\n\nJust like the satellites, the ground-station queues failed messages up for later delivery.\nIt also applies the linear backoff in the same way.\n\n### Runtime Flags\n\n```bash\nUsage of groundstation:\n  -groundstation string\n        address to listen on (default \":8000\")\n  -satellites string\n        Base URL of the satellites (default \"http://localhost\")\n```\n\n## Networking\n\nWe simulate network latency and jitter by artificially delaying each delivery by a random value between 1 and 5 seconds.\n\nEach satellite starts their own receiver and listens on a fixed port: `9000 + \u003cSatelliteID\u003e`.\nThis enables the ground-station to send messages to each satellite asynchronously instead of as a response\nto an incoming message.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fldb%2Fsatellight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fldb%2Fsatellight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fldb%2Fsatellight/lists"}