An Open-Source Platform for Quantified Self & IoT

Heedy

DocsGitHub release (latest SemVer)PyPIGitHub Workflow Status

Note: Heedy is currently in alpha. You can try it out by downloading it from the releases page, but there is no guarantee that future versions will be backwards-compatible until full release.

A repository for your quantified-self data, and an extensible analysis engine.

There already exist many apps and fitness trackers that gather and attempt to make sense of your data. Most of these services are isolated - your phone's fitness tracking software knows nothing about your browser's time-tracking extension. Furthermore, each app and service has its own method for downloading data (if they offer raw data at all!), which makes an all-encompassing analysis of life extremely tedious. Heedy offers a self-hosted open-source way to put all of this data together into a single system.

Several existing aggregators already perform many of heedy's functions (see the list here). However, they are all missing one of two critical components:

  1. Open-source and self-hosted: Most existing tools are cloud-based, which means that all of your data is on "someone else's computer". While these companies may claim that they will not sell your data, or won't turn it over to governments, they can change their minds (and terms of service) at any time. The only way to guarantee that your data will never be used against you is for it to be on your computer, operated by software you can audit yourself.
  2. Extensible: Even a system with fantastic visualizations and powerful analysis has limited utility. This is because it can only show what the original authors assumed would be useful. Heedy offers a powerful plugin system - plugin writers can add new integrations, plots, or even modify core functionality with a few lines of python or javascript. A registry is planned, so that users can install plugins with the click of a button.

Screenshots

The first screenshot is of sleep data uploaded by the fitbit plugin. The second is a jupyter notebook enabled by the notebook plugin. Heedy's visualization and analysis capabilities are a work in progress, so there is a lot more to come!

Fitbit Plugin Example Fitbit Notebook Example

Installing

  1. Download the executable
  2. Run the executable
  3. Open your browser to http://localhost:1324

Plugins

Heedy itself is very limited in scope. Most of its power comes from the plugins that allow you to integrate it with other services. Some plugins worth checking out:

  • fitbit - sync heedy with Fitbit, allowing you to access and analyze your wearables' data.
  • notebook - analyze data directly within Heedy with Jupyter notebooks.

Building

Building heedy requires at least go 1.15 and a recent version of node and npm.

Release

git clone https://github.com/heedy/heedy
cd heedy
make

Debug

git clone https://github.com/heedy/heedy
cd heedy
make debug

The debug version uses the assets from the ./assets folder instead of embedding in the executable.

Watch frontend

To edit the frontend, you will want to run the following:

make watch

This will watch all frontend files and rebuild them as they change, allowing you to edit them and see changes immediately by refreshing your browser.

Verbose Mode

You can see everything heedy does, including all SQL statements and raw http requests by running it in verbose mode:

./heedy --verbose
Comments
  • " illegal base64 data at input byte 8 " when adding a new device to the DB via Desktop Manager or Chrome plugin

    Hi,

    I'm running the public alpha release of the system on my laptop, and I can access the web interface, sign up, log in and create manual entries into the system.

    When I go to register a new device via either the Desktop Client or the Chrome Plugin, I can see a successful login in the application logs, however I get the following error:

    I don't know if I'm missing an Admin account here, or whether I've just failed to setup my account properly, but I thought I'd ask here in case it's staring me straight in the face!

    Full output from the logs when trying to sign up:

    cxdb@fdc3a6498a75:/usr/share/connector_db/bin$ ./connectordb run /usr/share/connector_db/mydatabase/db/ --join
    INFO[0000] Running ConnectorDB v0.3.0a1 at http://localhost:8000 (:8000) 
    INFO[0026] User 'proffalken' Joined - 136.411023ms       addr=10.222.0.1:50102 op=JOIN uri=/join
    INFO[0060] 0.07 queries/s                                active=0 authfails=0 errors=0 inserts=0 rest=4 web=1
    WARN[0408] Can't access this resource.                   addr=10.222.0.1:50864 code=404 dev=proffalken/user op=ReadDevice ref=93f25ba4-72ae-40ae-557b-98a6eb6345b0 uri=/api/v1/crud/proffalken/laptop
    INFO[0408] 1.169345ms                                    addr=10.222.0.1:50864 dev=proffalken/user op=ReadDevice uri=/api/v1/crud/proffalken/laptop
    WARN[0408] illegal base64 data at input byte 8           addr=10.222.0.1:50864 code=403 dev=proffalken/user op=CreateDevice ref=26cced8f-d4d5-4d82-5ff9-60ef656d104e uri=/api/v1/crud/proffalken/laptop
    
  • Add dockerfile

    Add dockerfile

    So, I just gave it a shot, and I think it's working.

    • You can build it locally with sudo docker build -t heedy .
    • The created image can be executed with sudo docker run --rm -it -p 1324:1324 heedy
    • To have a persistent database, you can use something like sudo docker run --rm -it -p 1324:1324 -v "$PWD/tmp:/root/.local/share" heedy , which allows heedy to save its data in a tmp folder in the current directory.

    I have chosen the alpine base image as it is known for its small size. It is 30.9MB on my machine, which seems reasonable. For it to work, I also needed to build the backend with the golang:alpine image. I haven't tested the api or any other functionality like that yet, but it seems to be working so far.

    You can potentially speed up build times by excluding files and folders with a .dockerignore. Maybe you could also only copy folders as necessary into the build stages. I have tried to keep complexity to a minimum here. Especially if builds are usually done online once, and after you just pull the completed image, I'm not sure if the added complexity would be worth it here.

    Feedback is appreciated, and I can change things as needed.

    Fixes #341

  • Auth broken

    Auth broken

    It looks like auth by user/password combo is broken. I looked at the code, and it seems that there are two major issues going on:

    • [x] CreateUser does not actually create a "user" device (let's make it lowercase u)
    • [x] Reading a device that does not exist does not give an error DNE
  • Porting to Postgres

    Porting to Postgres

    Work needs to be done on the user database connector so it can work with postgres and add time series chunks along with it.

    At the same time we should push the API to a deeper nested folder or to a sibbling folder since it doesn't really go along with the new database.

  • Use of indicies

    Use of indicies

    Do we have indicies for our database as far as point insertion? I can imagine wanting to get the earliest point and the most recent, and getting a number of points after a certain time, but we can easily do all that on dates in sql. What I'm not sure about is why you'd want to randomly get the 1000th point. You can easily fetch points x at a time by starting at a particular time, limiting to x then querying for any > the date of the last one you chose.

    My question comes partly around thinking about a hbase backend in the future which would have a few extra features such as:

    • intelligent sharding
    • simple horizontal scalability
    • easy to insert out of order points
    • data deletion
  • Out of Order Inserts

    Out of Order Inserts

    Currently we have issues with out of order inserts, I see a way of fixing this, but it'll require some logic:

    To insert, we append to the bytea field (I don't know if out of order stuff will be an issue though), hopefully not as the clients should sort it themselves when the get it).

    UPDATE timebatchtable SET blobfield = blobfield || ? WHERE ..."
    

    If we're inserting a non-current key, we extract the chunk it falls into add it in and push it all back.

    UPDATE timebatchtable WHERE StreamId = ? SET EndIndex = EndIndex + 1
    

    This can all be done in a transaction to avoid errors as it chugs along.

  • MimeType

    MimeType

    Can we add a "MimeType" field to Stream? the type field is the jsonschema, but it would be nice to have the option of adding mimetypes for common types that can be searched.

  • Load Testing

    Load Testing

    We need a benchmark for our backend services through the REST API.

    What we know

    What we want:

    • 10000 users on our service
    • Each user has 5 devices and ten streams each submitting a point every 30 seconds (16000/sec)
    • Every REST query goes through the system within 200ms (plus RTT)
    • 20% of our userbase is doing queries at any one time
    • The length of a data query is 1 month of data (we may want to set a hard limit on this to avoid DOS attacks)
  • 0.4

    0.4

    This issue will track progress towards version 0.4, and the planned features. It is expected that the new version will be released some time in 2020 (depending on how much free time I have to work on it).

    0.4 is a planned ground-up rewrite of ConnectorDB, with a focus on extensibility and simplicity. The highlights are planned to be a serious plugin system and easy-to-use single-file bundle. It will also be a chance for me to fix the bad design choices I made in previous versions (append-only streams!).

    For the moment I am keeping the source code private due to its highly experimental nature, but it will be released in a 0.4 branch once the fundamentals are decided.

    • [x] Simplicitly - drop the executable, run it, and you immediately get a working database. In particular, the following are planned:
      • [x] Single File Bundle - The executable contains all assets needed to run
      • [x] No Dependencies - By default, CDB shouldn't need any external dependencies (0.3 needed gnatsd and redis).
      • [x] Setup - Rather than modifying a config file, CDB should present a web UI to set it up.
      • [x] Setting File Overwrite & Settings Page - Settings should automatically overwrite the config file
      • [ ] 0.3 Importer - Since the database will be incompatible with 0.3, it needs to include a built-in import system to ease migration.
    • [x] Sources - The user/device/stream system was OK, but it wasn't very good at distinguishing services that access the database and actual devices with streams. It was also limited to stream data, when in reality sources can be aggregations, or even other data formats. Now, streams are going to be just one of many possible sources, with the ability to add/modify sources through plugins. Apps are going to access the database through "connections" which are a separate logical entity.
      • [x] Streams - Same as old CDB streams, except they are no longer batched in the backend - the goal is simplicitly and maintainability
        • [x] Pipescript? - This probably won't make the initial release, but I have been meaning to give Pipescript a serious upgrade for over 2 years now.
          • [ ] Plugin PipeScript functions
        • [ ] Remote Streams - streams where data is not kept in CDB, but rather comes from a remote source, or is generated on demand (mediated by a plugin). Might not make initial release.
        • [x] Aggregate Streams - streams made up of multiple streams merged together, with an optional transform.
      • [ ] Groups - The ability to group together streams is useful, since streams are part of a logical object, such as a room or a person
      • [x] Permissions - Sources will be shareable, with scope-based access.
    • [x] Bugs/Issues
      • [x] Modifying stream data. Currently streams are append-only. This is stupid.
    • [x] Plugin System - this is really the underlying reason CDB needs a rewrite. The old version required any modification of functionality to include a full recompile, the frontend was one huge monolithic bundle that discouraged idle experimentation. This became a serious hindrance once I started trying to do automated analysis. Analysis programs need to integrate with the UI - needing a separate web app to do anything was not good. The same is true for integrations. Modifying the core code to add fitbit support or something is not the correct way to go about things!
      • [x] Stacked assets (plugins can override default assets)
      • [x] Stacked config (plugins can modify config)
      • [x] Modular UI - this requires a full UI rewrite to do correctly, but the basic app skeleton is functional, with a separate js module for each page.
      • [x] Plugin Executables - plugins can have exectutable portions, with special support for Python. These executables will have API integration, allowing them to have real power to extend CDB
        • [x] REST overrides
        • [x] Python Support - plugins will get special python support
          • [x] Plugin Python library
          • [x] Plugin system uses an installed python and sets up necessary env
      • [ ] Plugin Repository - there should be a repository online where people can submit plugins they write, and CDB should be capable of auto-installing and updating them from a UI.
    • [x] Vue UI - this is mainly due to the plugin system requiring a rewrite of the frontend, but vue allowed simple page splitting, and I think it is simpler for plugin writers.
      • [x] Base theme
      • [x] Setup
      • [x] Settings Page
      • [x] Analysis
      • [x] User Page
      • [x] Stream Page
      • [ ] Dashboard Page
      • [x] Actions Page (ie: downlinks)
    • [ ] Docs - Docs are maybe even more important than features. Everything, especially the plugin system needs to be documented, and examples need to be given.
    • [ ] Modify Android, Desktop & Chrome Apps for new version.
  • User log

    User log

    Adding a log stream to the user device which is updated when something belonging to the user is changed would be very useful. To do this efficiently, the user struct would ideally have a link to the user device and log stream by id so that we don't need to do any clever searching each time something is updated

  • Logging Improvements

    Logging Improvements

    Better logging would be awesome, @dkumor says to look at gnatsd.

    Personally I'd like to also see some kind of automatic structured logging, prefixes, colors and logging levels if they're not in there.

    We definitely need fine grained control of logging for security so we can't overrun the server with old logs, a log rotation system could be useful.

    @dkumor

    • [x] streamdb
    • [x] rest
    • [x] timebatch

    @josephlewis42

    • [x] connectordb
    • [x] web interface
    • [x] dbutil
  • Arm docker images

    Arm docker images

    It'd be nice if the dkumor/heedy docker image on dockerhub would be a multi-arch image. This can be achieved by building with Docker Buildx.

    I can try to do the required changes to build instructions, but I didn't find where the images are pushed, I just saw the build in the Makefile - have the recent image tags been built and pushed manually?

    Reasoning: Chances are high that people want to run heedy on eg. Rasphberry pi (my old pi 3b+ has armv7l) and according to the readme docker is a supported installation method and the GitHub releases actually do have arm binaries.

    Edit: I gave it a try, but it didn't work out of the box - might require some tinkering

    $ DOCKER_BUILD_KIT=1 DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build -t "mammuth/heedy:0.5.1" --build-arg VERSION="0.5.1" --platform linux/amd64,linux/arm64 --push .
    
    error: failed to solve: process "/dev/.buildkit_qemu_emulator /bin/sh -c apt-get update && apt-get install -y rsync" did not complete successfully: exit code: 100
    
  • Bump minimist from 1.2.5 to 1.2.6 in /plugins/timeseries/frontend

    Bump minimist from 1.2.5 to 1.2.6 in /plugins/timeseries/frontend

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump nanoid from 3.1.23 to 3.3.1 in /plugins/notifications/frontend

    Bump nanoid from 3.1.23 to 3.3.1 in /plugins/notifications/frontend

    Bumps nanoid from 3.1.23 to 3.3.1.

    Changelog

    Sourced from nanoid's changelog.

    3.3.1

    • Reduced package size.

    3.3

    • Added size argument to function from customAlphabet (by Stefan Sundin).

    3.2

    • Added --size and --alphabet arguments to binary (by Vitaly Baev).

    3.1.32

    • Reduced async exports size (by Artyom Arutyunyan).
    • Moved from Jest to uvu (by Vitaly Baev).

    3.1.31

    • Fixed collision vulnerability on object in size (by Artyom Arutyunyan).

    3.1.30

    • Reduced size for project with brotli compression (by Anton Khlynovskiy).

    3.1.29

    • Reduced npm package size.

    3.1.28

    • Reduced npm package size.

    3.1.27

    • Cleaned dependencies from development tools.

    3.1.26

    • Improved performance (by Eitan Har-Shoshanim).
    • Reduced npm package size.

    3.1.25

    • Fixed browserify support.

    3.1.24

    • Fixed browserify support (by Artur Paikin).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump minimist from 1.2.5 to 1.2.6 in /plugins/notifications/frontend

    Bump minimist from 1.2.5 to 1.2.6 in /plugins/notifications/frontend

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump lodash from 4.17.15 to 4.17.21 in /plugins/registry/frontend

    Bump lodash from 4.17.15 to 4.17.21 in /plugins/registry/frontend

    Bumps lodash from 4.17.15 to 4.17.21.

    Commits
    • f299b52 Bump to v4.17.21
    • c4847eb Improve performance of toNumber, trim and trimEnd on large input strings
    • 3469357 Prevent command injection through _.template's variable option
    • ded9bc6 Bump to v4.17.20.
    • 63150ef Documentation fixes.
    • 00f0f62 test.js: Remove trailing comma.
    • 846e434 Temporarily use a custom fork of lodash-cli.
    • 5d046f3 Re-enable Travis tests on 4.17 branch.
    • aa816b3 Remove /npm-package.
    • d7fbc52 Bump to v4.17.19
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by bnjmnt4n, a new releaser for lodash since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump ajv from 6.10.2 to 6.12.6 in /plugins/registry/frontend

    Bump ajv from 6.10.2 to 6.12.6 in /plugins/registry/frontend

    Bumps ajv from 6.10.2 to 6.12.6.

    Release notes

    Sourced from ajv's releases.

    v6.12.6

    Fix performance issue of "url" format.

    v6.12.5

    Fix uri scheme validation (@​ChALkeR). Fix boolean schemas with strictKeywords option (#1270)

    v6.12.4

    Fix: coercion of one-item arrays to scalar that should fail validation (failing example).

    v6.12.3

    Pass schema object to processCode function Option for strictNumbers (@​issacgerges, #1128) Fixed vulnerability related to untrusted schemas (CVE-2020-15366)

    v6.12.2

    Removed post-install script

    v6.12.1

    Docs and dependency updates

    v6.12.0

    Improved hostname validation (@​sambauers, #1143) Option keywords to add custom keywords (@​franciscomorais, #1137) Types fixes (@​boenrobot, @​MattiAstedrone) Docs:

    v6.11.0

    Time formats support two digit and colon-less variants of timezone offset (#1061 , @​cjpillsbury) Docs: RegExp related security considerations Tests: Disabled failing typescript test

    Commits
    • fe59143 6.12.6
    • d580d3e Merge pull request #1298 from ajv-validator/fix-url
    • fd36389 fix: regular expression for "url" format
    • 490e34c docs: link to v7-beta branch
    • 9cd93a1 docs: note about v7 in readme
    • 877d286 Merge pull request #1262 from b4h0-c4t/refactor-opt-object-type
    • f1c8e45 6.12.5
    • 764035e Merge branch 'ChALkeR-chalker/fix-comma'
    • 3798160 Merge branch 'chalker/fix-comma' of git://github.com/ChALkeR/ajv into ChALkeR...
    • a3c7eba Merge branch 'refactor-opt-object-type' of github.com:b4h0-c4t/ajv into refac...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

IoT Manager: use IoT platforms with Mender

Mender: Azure IoT Manager: use Azure IoT with Mender General Mender is an open source over-the-air (OTA) software updater for embedded Linux devices.

Jan 10, 2022
Industrial IoT Messaging and Device Management Platform
Industrial IoT Messaging and Device Management Platform

Mainflux Mainflux is modern, scalable, secure, open-source, and patent-free IoT cloud platform written in Go. It accepts user and thing (sensor, actua

Dec 31, 2022
A opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with minimal TCO

infinimesh IoT Platform infinimesh is a opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with

Feb 14, 2022
IoT platform with things/user management and visualization, in Go with Docker using microservices

BARIOT IoT platform to Manage Users and their Things and visualize their data. Microservices services architecture build with Go and docker (compose).

Jun 22, 2022
Suite of libraries for IoT devices (written in Go), experimental for x/exp/io

Go libraries/drivers for IoT devices This repo contains a suite of libraries for IoT devices/sensors/actuators. The suite is meant to be as dependency

Sep 26, 2022
Make IoT a lot more fun with data.

Eywa What is Eywa? "Eywa is the guiding force and deity of Pandora and the Na'vi. All living things on Pandora connect to Eywa." -- Avatar Wiki Projec

Nov 28, 2022
Golang framework for robotics, drones, and the Internet of Things (IoT)
Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot (https://gobot.io/) is a framework using the Go programming language (https://golang.org/) for robotics, physical computing, and the Internet of

Dec 29, 2022
A Go client for Google IoT Core

IoT A simple framework for implementing a Google IoT device. This package makes use of the context package to handle request cancelation, timeouts, an

Sep 26, 2022
Gobot - Golang framework for robotics, drones, and the Internet of Things (IoT)
Gobot - Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot (https://gobot.io/) is a framework using the Go programming language (https://golang.org/) for robotics, physical computing, and the Internet of Things.

Jan 8, 2023
An embeddable lightweight Go/Golang MQTT broker(server) for IoT.
An embeddable lightweight Go/Golang MQTT broker(server) for IoT.

Snple MQTT 简体中文 Note: The API of this library is still unstable and has not been sufficiently tested, please do not use it in production environments.

Sep 12, 2022
🐼 IoT worm written in pure golang.
🐼 IoT worm written in pure golang.

GoriaNet Most powerfull cross compiler (27arch). Kill process by port and check for duplicate instance. Killing process by port. Cross compiler. Infor

Oct 17, 2022
Whichip: discover (IoT) device's IP in local network
Whichip: discover (IoT) device's IP in local network

whichip: discover (IoT) device's IP in local network Install On (IoT) Device wget -O install.sh

Dec 8, 2021
Exploring and comparing different IOT messaging protocols / transports.

IOT Messaging Protocols Blynk https://blynk.io/ A fully integrated suite of IoT software Device provisioning Sensor data visualization Remote control

Jan 2, 2022
Project Flogo is an open source ecosystem of opinionated event-driven capabilities to simplify building efficient & modern serverless functions, microservices & edge apps.
Project Flogo is an open source ecosystem of opinionated  event-driven capabilities to simplify building efficient & modern serverless functions, microservices & edge apps.

Project Flogo is an Open Source ecosystem for event-driven apps Ecosystem | Core | Flows | Streams | Flogo Rules | Go Developers | When to use Flogo |

Dec 31, 2022
Next-generation IoT open source platform.
Next-generation IoT open source platform.

tKeel Next-generation IoT open source platform High performance, High security and easy to use tKeel is a strong and reusable IoT platform that helps

Dec 28, 2022
IoT Manager: use IoT platforms with Mender

Mender: Azure IoT Manager: use Azure IoT with Mender General Mender is an open source over-the-air (OTA) software updater for embedded Linux devices.

Jan 10, 2022
GoatCounter is an open source web analytics platform available as a hosted service or self-hosted app

GoatCounter is an open source web analytics platform available as a hosted service (free for non-commercial use) or self-hosted app. It aims to offer easy to use and meaningful privacy-friendly web analytics as an alternative to Google Analytics or Matomo.

Dec 29, 2022
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.
Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core network solution.

Connecting the Next Billion People Magma is an open-source software platform that gives network operators an open, flexible and extendable mobile core

Dec 31, 2022
SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. 🔥 🖥. 👉 Open source Application Performance Monitoring (APM) & Observability tool
SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. 🔥 🖥.   👉  Open source Application Performance Monitoring (APM) & Observability tool

Monitor your applications and troubleshoot problems in your deployed applications, an open-source alternative to DataDog, New Relic, etc. Documentatio

Sep 24, 2021
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021