{"id":32210343,"url":"https://github.com/simpleiot/simpleiot","last_synced_at":"2026-02-22T19:06:35.908Z","repository":{"id":37601621,"uuid":"155416771","full_name":"simpleiot/simpleiot","owner":"simpleiot","description":"Simple IoT cloud/edge application/framework","archived":false,"fork":false,"pushed_at":"2025-11-28T20:52:43.000Z","size":16634,"stargazers_count":204,"open_issues_count":156,"forks_count":35,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-11-30T22:00:46.362Z","etag":null,"topics":["backend","edge","edge-computing","elm","go","iot","iot-platform"],"latest_commit_sha":null,"homepage":"https://docs.simpleiot.org","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simpleiot.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"cbrake","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":"https://bec-systems.com/product/simple-iot-sponsor/"}},"created_at":"2018-10-30T16:11:16.000Z","updated_at":"2025-11-28T20:52:48.000Z","dependencies_parsed_at":"2023-10-10T19:04:19.933Z","dependency_job_id":"763ea064-1752-47fa-8565-b4b73604f828","html_url":"https://github.com/simpleiot/simpleiot","commit_stats":{"total_commits":2290,"total_committers":10,"mean_commits":229.0,"dds":0.07729257641921394,"last_synced_commit":"d170de57b7682e80111149d13fea374823c2b67e"},"previous_names":[],"tags_count":109,"template":false,"template_full_name":null,"purl":"pkg:github/simpleiot/simpleiot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleiot%2Fsimpleiot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleiot%2Fsimpleiot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleiot%2Fsimpleiot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleiot%2Fsimpleiot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simpleiot","download_url":"https://codeload.github.com/simpleiot/simpleiot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simpleiot%2Fsimpleiot/sbom","scorecard":{"id":825583,"data":{"date":"2025-08-18","repo":{"name":"github.com/simpleiot/simpleiot","commit":"1a501b7691e153969fa64e9ca58706454b160b18"},"scorecard":{"version":"v5.2.1-41-g40576783","commit":"40576783fda6698350fcbbeaea760ff827433034"},"score":3.9,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#packaging"}},{"name":"Code-Review","score":4,"reason":"Found 4/10 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"17 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/go.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/simpleiot/simpleiot/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/simpleiot/simpleiot/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/simpleiot/simpleiot/go.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/go.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/simpleiot/simpleiot/go.yml/master?enable=pin","Warn: goCommand not pinned by hash: envsetup.sh:17","Warn: npmCommand not pinned by hash: envsetup.sh:22","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 goCommand dependencies pinned","Info:   1 out of   2 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.18.4 not signed: https://api.github.com/repos/simpleiot/simpleiot/releases/237464825","Warn: release artifact v0.18.3 not signed: https://api.github.com/repos/simpleiot/simpleiot/releases/207213821","Warn: release artifact v0.18.2 not signed: https://api.github.com/repos/simpleiot/simpleiot/releases/206301963","Warn: release artifact v0.18.1 not signed: https://api.github.com/repos/simpleiot/simpleiot/releases/186314528","Warn: release artifact v0.18.0 not signed: https://api.github.com/repos/simpleiot/simpleiot/releases/184278417","Warn: release artifact v0.18.4 does not have provenance: https://api.github.com/repos/simpleiot/simpleiot/releases/237464825","Warn: release artifact v0.18.3 does not have provenance: https://api.github.com/repos/simpleiot/simpleiot/releases/207213821","Warn: release artifact v0.18.2 does not have provenance: https://api.github.com/repos/simpleiot/simpleiot/releases/206301963","Warn: release artifact v0.18.1 does not have provenance: https://api.github.com/repos/simpleiot/simpleiot/releases/186314528","Warn: release artifact v0.18.0 does not have provenance: https://api.github.com/repos/simpleiot/simpleiot/releases/184278417"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"10 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4wf5-vphf-c2xc","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T16:33:55.218Z","repository_id":37601621,"created_at":"2025-08-23T16:33:55.219Z","updated_at":"2025-08-23T16:33:55.219Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29723588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: 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":["backend","edge","edge-computing","elm","go","iot","iot-platform"],"created_at":"2025-10-22T06:31:05.441Z","updated_at":"2026-02-22T19:06:35.902Z","avatar_url":"https://github.com/simpleiot.png","language":"Go","funding_links":["https://github.com/sponsors/cbrake","https://bec-systems.com/product/simple-iot-sponsor/"],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"docs/images/siot-logo.png?raw=true\" width=\"150\"\u003e\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/simpleiot/simpleiot.svg)](https://pkg.go.dev/github.com/simpleiot/simpleiot)\n![Go](https://github.com/simpleiot/simpleiot/workflows/Go/badge.svg?branch=master)\n[![Scc Count Badge](https://sloc.xyz/github/simpleiot/simpleiot/?category=code)](https://github.com/simpleiot/simpleiot/)\n[![Go Report Card](https://goreportcard.com/badge/github.com/simpleiot/simpleiot)](https://goreportcard.com/report/github.com/simpleiot/simpleiot)\n[![Slack Widget](https://img.shields.io/badge/join-us%20on%20slack-gray.svg?longCache=true\u0026logo=slack\u0026colorB=red)](http://gophers.slack.com/messages/simpleiot)\n\n**Simple IoT enables you to add remote sensor data, telemetry, configuration,\nand device management to your project or product.**\n\nImplementing IoT systems is hard. Most projects take way longer and cost more\nthan they should. The fundamental problem is getting data from remote locations\n(edge) to a place where users can access it (cloud). We also need to update data\nand configuration at the edge in real time from any location. Simple IoT is an\nattempt to solve these problems by embracing the fact that IoT systems are\ninherently distributed and building on simple concepts that scale.\n\n**Simple IoT** provides:\n\n- A single application with no dependencies that can be run in both cloud and\n  edge instances\n- efficient synchronization of data in both directions\n- A flexible UI to view configuration and current values\n- A rules engine that runs on all instances that can trigger notifications or\n  set data\n- Extensive support for Modbus - both server and client\n- Support for the Linux 1-wire subsystem.\n- flexible graph organization of instances, users, groups, rules, and\n  configuration\n- Integration with other services like InfluxDB, Victoria Metrics, and Twilio\n- A system that is easy to extend in any language using NATS\n- A number of useful Go packages to use in your custom application\n\nSee [vision](docs/ref/vision.md), [architecture](docs/ref/architecture.md), and\n[integration](docs/ref/integration.md) for addition discussion on these points.\n\nSee [detailed documentation](https://docs.simpleiot.org) for installation,\nusage, and development information.\n\n## Motivation\n\nThis project was developed while building real-world IoT applications and has\nbeen driven by the following requirements:\n\n- Data (state or configuration) can be changed anywhere — at edge devices or in\n  the cloud and this data needs to be synchronized seamlessly between instances.\n  Sensors, users, rules, etc. can all change data. Some edge systems have a\n  local display where users can modify the configuration locally as well as in\n  the cloud. Rules can also run in the cloud or on edge devices and modify data.\n- Data bandwidth is limited in some IoT systems — especially those connected\n  with Cat-M modems (\u003c 100Kb/sec). Additionally, connectivity is not always\n  reliable, and systems need to continue operating if not connected.\n\n## Core ideas\n\nThe process of developing Simple IoT has been a path of reducing what started as\na fairly complex IoT system to simpler ideas. This is what we discovered along\nthe way:\n\n1. Treat configuration and state data the same for purposes of storage and\n   synchronization.\n2. Represent this data using simple types (Nodes and Points).\n3. Organize this data in a graph.\n4. All data flows through a message bus.\n5. Run the same application in the cloud and at the edge.\n6. Automatically sync common data between instances.\n\n\u003e [Design is the beauty of turning constraints into advantages.](https://www.webstock.org.nz/talks/design-is-the-beauty-of-turning-constraints-into-advantages/)\n\u003e\n\u003e - Ava Raskin\n\nThese constraints have resulted in Simple IoT becoming a flexible distributed\ngraph database optimized for IoT datasets. We'll explore these ideas more in the\n[documentation](https://docs.simpleiot.org).\n\n## Support, Community, Contributing, etc.\n\nPull requests are welcome - see [development](docs/ref/development.md) for more\nthoughts on architecture, tooling, etc. Issues are labeled with \"help wanted\"\nand \"good first issue\" if you would like to contribute to this project.\n\nFor support or to discuss this project, use one of the following options:\n\n- [Documentation](https://docs.simpleiot.org)\n- [Simple IoT community forum](https://community.tmpdir.org/c/simple-iot/5)\n- #simpleiot Slack channel is available on\n  [gophers.slack.com](https://gophers.slack.com/messages/simpleiot/)\n- Open a GitHub issue\n- [Simple IoT YouTube channel](https://www.youtube.com/@simple-iot)\n- Subscribe to our [email newsletter](https://tmpdir.ck.page/196d1fb480) for\n  project updates.\n\nIf you use this project, please let us know! It is really helpful to hear from\nusers.\n\n## License\n\nApache Version 2.0\n\n## Contributors\n\nThanks to contributors:\n\n\u003ca href=\"https://github.com/simpleiot/simpleiot/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=simpleiot/simpleiot\" /\u003e\n\u003c/a\u003e\n\nMade with [contrib.rocks](https://contrib.rocks).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimpleiot%2Fsimpleiot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimpleiot%2Fsimpleiot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimpleiot%2Fsimpleiot/lists"}