{"id":28396265,"url":"https://github.com/ssbc/tinyssb","last_synced_at":"2026-03-07T21:31:06.613Z","repository":{"id":185191586,"uuid":"668897290","full_name":"ssbc/tinySSB","owner":"ssbc","description":"tinySSB is \"Secure Scuttlebutt over LoRa and BLE\"","archived":false,"fork":false,"pushed_at":"2025-06-25T16:58:49.000Z","size":74225,"stargazers_count":62,"open_issues_count":3,"forks_count":21,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-07-08T08:27:39.166Z","etag":null,"topics":["bluetooth-low-energy","decentralized","lora","offline-first","secure-scuttlebutt"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ssbc.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,"zenodo":null}},"created_at":"2023-07-20T21:21:11.000Z","updated_at":"2025-06-23T07:23:25.000Z","dependencies_parsed_at":"2023-10-17T05:11:19.883Z","dependency_job_id":"75598a93-e7e1-4810-9e2e-9f37c74a5aa3","html_url":"https://github.com/ssbc/tinySSB","commit_stats":{"total_commits":83,"total_committers":3,"mean_commits":"27.666666666666668","dds":"0.49397590361445787","last_synced_commit":"b9872d5c652aca7f89ac7a50600dfe91ab7aeb38"},"previous_names":["ssbc/tinyssb"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ssbc/tinySSB","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2FtinySSB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2FtinySSB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2FtinySSB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2FtinySSB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssbc","download_url":"https://codeload.github.com/ssbc/tinySSB/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbc%2FtinySSB/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265312036,"owners_count":23745177,"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":["bluetooth-low-energy","decentralized","lora","offline-first","secure-scuttlebutt"],"created_at":"2025-05-31T21:37:46.608Z","updated_at":"2025-10-06T12:39:53.712Z","avatar_url":"https://github.com/ssbc.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tinySSB - the LoRa descendant of Secure Scuttlebutt\n\n![tinySSB logo](doc/_img/tinySSB-banner.png)\n\ntinySSB is a variation of Secure Scuttlebutt (SSB)\n[https://scuttlebutt.nz/](https://scuttlebutt.nz/), a radically\ndecentral approach of implementing distributed applications. In a\nnutshell, with SSB we get \"social media without servers\".  tinySSB\nenabes the same, but is able to work in constraint environments thanks\nto its minuscule packet size of 120B.\n\n## How it works\n\nThe core of SSB are single-author append-only logs that are replicated\nat will and on a best-effort basis. Eventually, all updates to a log\nwill reach the interested parties who can verify the authenticity and\nintegrity of each update.  This also applies to auxiliary forwarders,\nmaking any SSB-aware entity a potential link in the forwarding chains.\nAny means of replication is fine, which can be BlueTooth Low Energy,\nInternet protocols, USB sticks, or data printed on paper, collected\nand dispatched centrally or simply using a gossip protocol: anything\ngoes!\n\nEach append-only log is a trivial _Conflict-free Replicated Data Type_\n(CRDT). A set of append-only logs also of a CRDT. CRDTs are best\nunderstood as virtual (because distributed) data where a local site\nkeeps a copy and can act on this copy. CRDTs are designed such that\nany local modification results in update messages sent to the other\nreplicas: if these updates are ingested correctly, all replicas will\nconverge to the same shared state, without any central entity having\nto intervene or help. Writing distributed applications as and with\nCRDTs requires careful design but has a huge reward in unbounded\nscallability, in applications that continue to work when the device is\noffline because all updates seamlessly merge into the other replicas\nwhen the device reconnects. Go decentral!\n\n\n## The difference between SSB and tinySSB\n\ntinySSB inherits the core concepts of classic SSB i.e., the\nappend-only logs with signed entries, the encryption suite etc.  The\nnovelty of tinySSB lies in its\n\n- binary packet format (instead of JSON)\n- “shadow packet headers” that avoid sending and storing redundant data\n- the absence of “blobs” outside the append-only logs, using side chains instead\n- a very simple and connectionless replication protocol.\n\nThe data packet format has been made extremely small, namely 120\nBytes.  The point is to enable the use of tinySSB in challenged\nenvironments where bandwidth and storage resources are scarce.\n\ntinySSB runs over Bluetooth Low Energy (BLE), over long-range radio\n(LoRA), and perhaps in the future even over shortwave in the amateur\nradio bands, bouncing off the ionosphere. Embedded devices are\npowerful enough to handle these packets and serve well as cheap\nforwarders.\n\nAt the higher level, the design of distributed applications over\ntinySSB as well as SSB is identical - it's a CRDT world.\n\ntinySSB is used for teaching distributed programming concepts and\nskills at the Computer Science Bachelor and Masters level at the\nUniversity of Basel.\n\n\n## tinySSB Tech Gallery\n\n(see the respective folders)\n\n- Android\n- ESP32\n\n\n\n## Documentation\n\n- 16 factsheets made for the [dWeb camp 2024](https://dwebcamp.org/), Aug 2024: [PDF](doc/tinySSB-factsheets-v2b.pdf)\n- talk for the Swiss Radio Amateur Assoc, Emergency Communication Convention, Oct 2024: [PDF](doc/20241019-USKA-emcomm-tinySSB.pdf)\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssbc%2Ftinyssb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssbc%2Ftinyssb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssbc%2Ftinyssb/lists"}