🦖 Streaming-Serverless Framework for Low-latency Edge Computing applications, running atop QUIC protocol, engaging 5G technology.

YoMo Go

YoMo is an open-source Streaming Serverless Framework for building Low-latency Edge Computing applications. Built atop QUIC Transport Protocol and Functional Reactive Programming interface. makes real-time data processing reliable, secure, and easy.

Official Website: 🦖 https://yomo.run

Gitee

🌶 Features

Features
⚡️ Low-latency Guaranteed by implementing atop QUIC QUIC
🔐 Security TLS v1.3 on every data packet by design
📱 5G/WiFi-6 Reliable networking in Celluar/Wireless
🌎 Geo-Distributed Edge Mesh Edge-Mesh Native architecture makes your services close to end users
📸 Event-First Architecture leverages serverless service to be event driven and elastic
🦖 Streaming Serverless Write only a few lines of code to build applications and microservices
🚀 Y3 a faster than real-time codec
📨 Reactive stream processing based on Rx

🚀 Getting Started

1. Install CLI

Note: YoMo requires Go 1.15 and above, run go version to get the version of Go in your environment, please follow this link to install or upgrade if it doesn't fit the requirement.

# Ensure use $GOPATH, golang requires main and plugin highly coupledecho $GOPATH

if $GOPATH is not set, check Set $GOPATH and $GOBIN first.

$ GO111MODULE=off go get github.com/yomorun/yomo

$ cd $GOPATH/src/github.com/yomorun/yomo

$ make install

YoMo Tutorial 1

2. Create your serverless app

$ mkdir -p $GOPATH/src/github.com/{YOUR_GITHUB_USERNAME} && cd $_

$ yomo init yomo-app-demo
2020/12/29 13:03:57 Initializing the Serverless app...
2020/12/29 13:04:00 ✅ Congratulations! You have initialized the serverless app successfully.
2020/12/29 13:04:00 🎉 You can enjoy the YoMo Serverless via the command: yomo dev

$ cd yomo-app-demo

YoMo Tutorial 2

CLI will automatically create the app.go:

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/reactivex/rxgo/v2"
	y3 "github.com/yomorun/y3-codec-golang"
	"github.com/yomorun/yomo/pkg/rx"
)

// NoiseDataKey represents the Tag of a Y3 encoded data packet
const NoiseDataKey = 0x10

// NoiseData represents the structure of data
type NoiseData struct {
	Noise float32 `y3:"0x11"`
	Time  int64   `y3:"0x12"`
	From  string  `y3:"0x13"`
}

var printer = func(_ context.Context, i interface{}) (interface{}, error) {
	value := i.(NoiseData)
	rightNow := time.Now().UnixNano() / int64(time.Millisecond)
	fmt.Println(fmt.Sprintf("[%s] %d > value: %f ⚡️=%dms", value.From, value.Time, value.Noise, rightNow-value.Time))
	return value.Noise, nil
}

var callback = func(v []byte) (interface{}, error) {
	var mold NoiseData
	err := y3.ToObject(v, &mold)
	if err != nil {
		return nil, err
	}
	mold.Noise = mold.Noise / 10
	return mold, nil
}

// Handler will handle data in Rx way
func Handler(rxstream rx.RxStream) rx.RxStream {
	stream := rxstream.
		Subscribe(NoiseDataKey).
		OnObserve(callback).
		Debounce(rxgo.WithDuration(50 * time.Millisecond)).
		Map(printer).
		StdOut()

	return stream
}

3. Build and run

  1. Run yomo dev from the terminal. you will see the following message:

YoMo Tutorial 3

Congratulations! You have done your first YoMo application.

Optional: Set $GOPATH and $GOBIN

for current session:

export GOPATH=~/.go
export PATH=$GOPATH/bin:$PATH

for shell:

for zsh users

echo "export GOPATH=~/.go" >> .zshrc
echo "path+=$GOPATH/bin" >> .zshrc

for bash users

echo 'export GOPATH=~/.go' >> .bashrc
echo 'export PATH="$GOPATH/bin:$PATH"' >> ~/.bashrc

🧩 Interop

event-first processing

Multiple data sources combined calculation

Sources

Flows

Sinks

🗺 Location Insensitive Deployment

yomo-flow-arch

📚 Documentation

YoMo ❤️ Vercel, Our documentation website is

Vercel Logo

🎯 Focuses on computings out of data center

  • IoT/IIoT/AIoT
  • Latency-sensitive applications.
  • Networking situation with packet loss or high latency.
  • Handling continuous high frequency generated data with stream-processing.
  • Building Complex systems with Streaming-Serverless architecture.

🌟 Why YoMo

  • Based on QUIC (Quick UDP Internet Connection) protocol for data transmission, which uses the User Datagram Protocol (UDP) as its basis instead of the Transmission Control Protocol (TCP); significantly improves the stability and throughput of data transmission. Especially for cellular networks like 5G.
  • A self-developed y3-codec optimizes decoding performance. For more information, visit its own repository on GitHub.
  • Based on stream computing, which improves speed and accuracy when dealing with data handling and analysis; simplifies the complexity of stream-oriented programming.
  • Secure-by-default from transport protocol.

🦸 Contributing

First off, thank you for considering making contributions. It's people like you that make YoMo better. There are many ways in which you can participate in the project, for example:

  • File a bug report. Be sure to include information like what version of YoMo you are using, what your operating system is, and steps to recreate the bug.
  • Suggest a new feature.
  • Read our contributing guidelines to learn about what types of contributions we are looking for.
  • We have also adopted a code of conduct that we expect project participants to adhere to.

🤹🏻‍♀️ Feedback

Any questions or good ideas, please feel free to come to our Discussion. Any feedback would be greatly appreciated!

License

Apache License 2.0

Owner
YoMo
Realtime IoT & edge computing framework engaging 5G
YoMo
Comments
  • fix: yomo build init setup

    fix: yomo build init setup

    currently, the yomo init generate a wrong go.mod, which leads to the following error when yomo dev

    $ yomo dev
    2021/01/17 16:37:53 Building the Serverless Function File...
    2021/01/17 16:37:53 ❌ Build the serverless file failure with err: exit status 1
    

    • latest yomo 0.7.1 binary
    • yomo init -name test
    • cd test
    • yomo dev

    relates to https://github.com/Homebrew/homebrew-core/pull/67240


    This change is Reviewable

  • [BUG] example noise

    [BUG] example noise

    Summary

    SUMMARY_GOES_HERE Hello. I find this example . Can just run under YoMo CLI version: v0.05 . When I use YoMo CLI version: v0.1.3 : it show yomo-source-noise unable to connect to yomo-zipper.

    Steps To Reproduce

    1. yomo-zipper run with yomo serve -c workflow.yaml image

    2. yomo-source-noise run with YOMO_SOURCE_MQTT_ZIPPER_ADDR=localhost:9999 YOMO_SOURCE_MQTT_SERVER_ADDR=0.0.0.0:1883 go run main.go image

    3. yomo-source-noise-emitter run with YOMO_SOURCE_MQTT_BROKER_ADDR=tcp://localhost:1883 \ YOMO_SOURCE_MQTT_PUB_TOPIC=NOISE \ YOMO_SOURCE_MQTT_PUB_INTERVAL=500 \ go run main.go image

    Is zipper not supported YoMo CLI version: v0.1.3? yomo-zipper-noise-example image

    Can you give me some advices,I think it applies to YoMo CLI version: v0.1.3. Thanks a lot!!!

    Additional Details & Logs

    • Yomo version : YoMo CLI version: v0.1.3
    • Yom: error logs
    • Yomo configuration
    • Operating system: Ubuntu20.04
  • Introduce .env file for config

    Introduce .env file for config

    Summary

    Currently, YoMo accepts three types of config:

    • config file(workflow.yaml)
    • env vars
    • command-line args.

    When developers start their serverless, has to:

    yomo dev --zipper-addr=10.10.44.33:9000 --auth-credential=xxxxxxx func.go
    

    Due to the lack of complete configuration management, the config process may be time-consuming and error-prone. With this feature developers could config all variables in the .env file.

    Intended Outcome

    The config process becomes easier for developers, especially between deploys(such as development, test, and production).

    How will it work?

    Developer can add .env file in current working directory, then YoMo will read these config variables(prefixed with YOMO_) automatically when program started. The file is like the following:

    YOMO_ZIPPER_ADDR=10.10.44.33:9000
    YOMO_LOG_LEVEL=debug
    

    then, start with command line:

    yomo dev func.go
    
  • Allow function to be broadcasted to all or randomly

    Allow function to be broadcasted to all or randomly

    Probably would require to be more polished, but the idea here would be to have multiple listener on one function. I didn't test the scenario of multiple zipper or mesh network, but only a simple source + zipper + multi-sfn.

    This is only a proposal draft, so don't hesitate to comment. Note that I am fully aware that I will have to remove some comments and improve some part of the code.


    This change is Reviewable

  • [BUG] Grafana example bug

    [BUG] Grafana example bug

    Summary (概要)

    I am going to install the Yomo-datasource plugin in Ubuntu Grafana based on the plugin you provided to realize the display of data. But I tried this example,maybe I did something wrong, ran into two problems.

    image

    Steps To Reproduce (复现的步骤)

    1. First: In ubuntu,I followed the tutorial and unzip the releases link to Grafana plugins folder. I tried : yomo-websocket-datasource.zip and Source code (tar.gz). Unfortunately, after rebooting Grafana, I couldn't find YoMo Streams in the plugin.For comparison, I downloaded a plugin from the Grafana website and unzip to the Grafana plugins folder. Grafana identified it. So maybe I did something wrong, or it is not the correct version of Linux. So i hope you can give me some advices,thanks a lot!!!

    2. Second: In windows, I unzip the yomo-websocket-datasource.zip to Grafana plugins folder.Grafana identified it.So great! image Then add data source successfully: image But when I want to query data, it shows no data returned: image

    So that's all the problems I had trying this example. At present, I don't know how to solve these problems,I hope you can give me some advice,thanks a lot!!!

    Additional Details & Logs (附加的信息和日志)

    • Yomo version (版本) YoMo CLI version: v0.1.3
    • Yomo error logs (错误日志)
    • Yomo configuration (配置)
    • Operating system (操作系统) ubuntu16.04 and windows
  • [BUG]client [NewClient] Error: CRYPTO_ERROR (0x178): tls: no application protoco

    [BUG]client [NewClient] Error: CRYPTO_ERROR (0x178): tls: no application protoco

    Summary (概要)

    When I run this example, I want to do y3 encoding.There are some problems with the operation.It worked fine when I coded the example in JSON.

    https://github.com/yomorun/yomo-source-example/blob/main/main.go

    Steps To Reproduce (复现的步骤)

    I think there might be some error in the execution of this statement.But i don't know how to fix it.Can you give me some advices.thanks a lot.

    cli, err := client.NewSource("yomo-source").Connect(host, port)

    image

    Additional Details & Logs (附加的信息和日志)

    • github.com/yomorun/yomo v1.2.520 // indirect
    • Yomo version (版本) YoMo CLI version: v0.1.3
    • Yomo error logs (错误日志) client [NewClient] Error: CRYPTO_ERROR (0x178): tls: no application protoco
    • Yomo configuration (配置)
    • Operating system (操作系统) windows
  • [BUG] plugin different version of package

    [BUG] plugin different version of package

    Summary (概要)

    when I use cmd "yomo dev", I got some problem

    Steps To Reproduce (复现的步骤)

    1.mkdir demo 2.open my IDE goland to open my demo project 3.go mod tidy 4.yomo dev

    Additional Details & Logs (附加的信息和日志)

    • Yomo version (版本)1.0.0-3gf175e41 (2021-03-10)
    • Yomo error logs (错误日志)Load handle from .so file failure with error: plugin.Open("sl"): plugin was built with a different version of package github.com/yomorun/yomo/pkg/yy3
    • Yomo configuration (配置) I got the issue when I enter the cmd "yomo dev",so there`s probably is yomo init config
    • Operating system (操作系统)MacOS Catalina v10.15.7
  • chore(deps): bump github.com/spf13/cobra from 1.5.0 to 1.6.1

    chore(deps): bump github.com/spf13/cobra from 1.5.0 to 1.6.1

    Bumps github.com/spf13/cobra from 1.5.0 to 1.6.1.

    Release notes

    Sourced from github.com/spf13/cobra's releases.

    v1.6.1

    Bug fixes 🐛

    • Fixes a panic when AddGroup isn't called before AddCommand(my-sub-command) is executed. This can happen within more complex cobra file structures that have many different inits to be executed. Now, the check for groups has been moved to ExecuteC and provides more flexibility when working with grouped commands - @​marckhouzam (and shout out to @​aawsome, @​andig and @​KINGSABRI for a deep investigation into this! 👏🏼)

    v1.6.0

    Summer 2022 Release

    Some exciting changes make their way to Cobra! Command completions continue to get better and better (including adding --help and --version automatic flags to the completions list). Grouping is now possible in your help output as well! And you can now use the OnFinalize method to cleanup things when all "work" is done. Checkout the full changelog below:


    Features 🌠

    Deprecation 👎🏼

    • ExactValidArgs is deprecated (but not being removed entirely). This is abit nuanced, so checkout #1643 for further information and the updated user_guide.md on how this may affect you (and how you can take advantage of the correct behavior in the validators): @​umarcor #1643

    Bug fixes 🐛

    Dependencies 🗳️

    Testing 🤔

    Docs ✏️

    Misc 💭

    ... (truncated)

    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)
  • chore(deps): bump github.com/cenkalti/backoff/v4 from 4.1.1 to 4.1.2

    chore(deps): bump github.com/cenkalti/backoff/v4 from 4.1.1 to 4.1.2

    Bumps github.com/cenkalti/backoff/v4 from 4.1.1 to 4.1.2.

    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)

    This change is Reviewable

  • chore(deps): bump go.uber.org/zap from 1.19.0 to 1.20.0

    chore(deps): bump go.uber.org/zap from 1.19.0 to 1.20.0

    Bumps go.uber.org/zap from 1.19.0 to 1.20.0.

    Release notes

    Sourced from go.uber.org/zap's releases.

    v1.20.0

    Enhancements:

    • #989[]: Add EncoderConfig.SkipLineEnding flag to disable adding newline characters between log statements.
    • #1039[]: Add EncoderConfig.NewReflectedEncoder field to customize JSON encoding of reflected log fields.

    Bugfixes:

    • #1011[]: Fix inaccurate precision when encoding complex64 as JSON.
    • #554[], #1017[]: Close JSON namespaces opened in MarshalLogObject methods when the methods return.
    • #1033[]: Avoid panicking in Sampler core if thereafter is zero.

    Other changes:

    • #1028[]: Drop support for Go < 1.15.

    #554: uber-go/zap#554 #989: uber-go/zap#989 #1011: uber-go/zap#1011 #1017: uber-go/zap#1017 #1028: uber-go/zap#1028 #1033: uber-go/zap#1033 #1039: uber-go/zap#1039

    Thanks to @​psrajat, @​lruggieri, @​sammyrnycreal for their contributions to this release.

    v1.19.1

    Fixed

    • #1001[]: JSON: Fix complex number encoding with negative imaginary part. Thanks to @​hemantjadon.
    • #1003[]: JSON: Fix inaccurate precision when encoding float32.

    #1001: uber-go/zap#1001 #1003: uber-go/zap#1003

    Changelog

    Sourced from go.uber.org/zap's changelog.

    1.20.0 (4 Jan 2022)

    Enhancements:

    • #989[]: Add EncoderConfig.SkipLineEnding flag to disable adding newline characters between log statements.
    • #1039[]: Add EncoderConfig.NewReflectedEncoder field to customize JSON encoding of reflected log fields.

    Bugfixes:

    • #1011[]: Fix inaccurate precision when encoding complex64 as JSON.
    • #554[], #1017[]: Close JSON namespaces opened in MarshalLogObject methods when the methods return.
    • #1033[]: Avoid panicking in Sampler core if thereafter is zero.

    Other changes:

    • #1028[]: Drop support for Go < 1.15.

    #554: uber-go/zap#554 #989: uber-go/zap#989 #1011: uber-go/zap#1011 #1017: uber-go/zap#1017 #1028: uber-go/zap#1028 #1033: uber-go/zap#1033 #1039: uber-go/zap#1039

    Thanks to @​psrajat, @​lruggieri, @​sammyrnycreal for their contributions to this release.

    1.19.1 (8 Sep 2021)

    Bugfixes:

    • #1001[]: JSON: Fix complex number encoding with negative imaginary part. Thanks to @​hemantjadon.
    • #1003[]: JSON: Fix inaccurate precision when encoding float32.

    #1001: uber-go/zap#1001 #1003: uber-go/zap#1003

    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)

    This change is Reviewable

  • [BUG]无法成功执行执行demo中echo.go

    [BUG]无法成功执行执行demo中echo.go

    Summary (概要)

    无法成功执行执行demo中echo.go

    Steps To Reproduce (复现的步骤)

    1.在$HOME/go/yomo中执行go mod init yomo 2.执行go get -u github.com/yomorun/yomo 3.按文档创建echo.go 4.执行go run echo.go

    Additional Details & Logs (附加的信息和日志)

    • Yomo version: latest
    • Yomo error logs:

    command-line-arguments

    ./echo.go:16:14: cannot use &EchoPlugin literal (type *EchoPlugin) as type plugin.YomoObjectPlugin in argument to yomo.RunDev: *EchoPlugin does not implement plugin.YomoObjectPlugin (missing Mold method)

    • Operating system: Debian 10
  • chore(deps): bump github.com/briandowns/spinner from 1.19.0 to 1.20.0

    chore(deps): bump github.com/briandowns/spinner from 1.19.0 to 1.20.0

    Bumps github.com/briandowns/spinner from 1.19.0 to 1.20.0.

    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)
  • Provide a ability to Zipper can guide the Stream Function connecting to other Zippers

    Provide a ability to Zipper can guide the Stream Function connecting to other Zippers

    Summary

    Nowadays, API based communication between apps can not perform fast data exchange:

    image

    Last year, QUIC comes out as RFC9000, by YoMo, we can build our apps atop of this new network protocol easily, realtime collaboration features like Figma Cursor Chat become new standard features for SaaS.

    image

    Today, developers can build Geo-distributed system by YoMo, guarantee <50ms global latency for their users:

    image

    But it is costly in infrastructure and its management. Developers can not leverage cost and latency.

    Intended Outcome

    Providing the ability to YoMo Zipper, make it can guide YoMo Stream Functions connecting to other YoMo Zipper(s), developers can get about ~100ms global latency without geo-distributed deployments, reduces significant infrastructure investment and system maintenance costs.

    image

    How will it work?

    When a Stream Function connected to a Zipper, will get a ConnectToFrame signal from Zipper, this frame contains other zipper connection info like us-west-302.x.yomo.dev:9000, Stream Function will connect to the new one immediately.

  • Merge CLI repo to YoMo repo

    Merge CLI repo to YoMo repo

    Summary

    As getting off go plugin, there is no need to separate YoMo and CLI to different repos, should merge them together, and change install script.

    Release v1.9.0 for this changes, no breaking changes.

Kubernetes Native Edge Computing Framework (project under CNCF)
Kubernetes Native Edge Computing Framework (project under CNCF)

KubeEdge KubeEdge is built upon Kubernetes and extends native containerized application orchestration and device management to hosts at the Edge. It c

Jan 1, 2023
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
Gatt is a Go package for building Bluetooth Low Energy peripherals

Package gatt provides a Bluetooth Low Energy GATT implementation. Gatt (Generic Attribute Profile) is the protocol used to write BLE peripherals (serv

Dec 31, 2022
Bluetooth Low Energy for Go
Bluetooth Low Energy for Go

Bluetooth Low Energy for Go (based od CC2541) Description Bluetooth Low Enery (HM10) module for Go Installation go get github.com/MarinX/goble Exampl

Dec 12, 2022
MQTTtimer is based mqtt protocol sync timer

MQTTTimer is based mqtt protocol sync timer. You can used ntp sync time protocol in IoT without ntp server. used mqtt protocol sync time is tcp connne

Oct 27, 2021
Dwarka - API gateway offers REST API to manage various device controlled using MQTT protocol

dwarka API gateway offers REST API to manage various device controlled using 'MQ

Sep 16, 2022
MAVLink protocol implementation for Go

#go-mavlink go impletation of the MAVLink protocol. MAVLink or Micro Air Vehicle Link is a protocol for communicating with small unmanned vehicle. It'

Aug 19, 2020
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
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 edge-native container management system for edge computing
An edge-native container management system for edge computing

SuperEdge is an open source container management system for edge computing to manage compute resources and container applications in multiple edge regions. These resources and applications, in the current approach, are managed as one single Kubernetes cluster. A native Kubernetes cluster can be easily converted to a SuperEdge cluster.

Dec 29, 2022
Antenna RPC is an RPC protocol for distributed computing, it's based on QUIC and Colfer. its currently an WIP.

aRPC - Antenna Remote Procedure Call Antenna remote procedure call (aRPC) is an RPC protocol focused on distributed processing and HPC. aRPC is implem

Jun 16, 2021
A project outputs Bluetooth Low Energy (BLE) sensors data in InfluxDB line protocol formatA project outputs Bluetooth Low Energy (BLE) sensors data in InfluxDB line protocol format

Intro This project outputs Bluetooth Low Energy (BLE) sensors data in InfluxDB line protocol format. It integrates nicely with the Telegraf execd inpu

Apr 15, 2022
QUIC-PING: A UDP client for sending QUIC PINGs.

QUIC-PING A UDP client for sending "QUIC PING"s. What is a QUIC PING? A QUIC Initial packet with random payload and the version 0xbabababa to force Ve

Dec 14, 2022
Kubernetes Native Edge Computing Framework (project under CNCF)
Kubernetes Native Edge Computing Framework (project under CNCF)

KubeEdge KubeEdge is built upon Kubernetes and extends native containerized application orchestration and device management to hosts at the Edge. It c

Jan 1, 2023
A simple API for computing diffs of your documents over the time built on a scalable technology stack.

Diffme API WIP - this is an API to compute diffs between documents. It serves as a way to easily create audit logs for documents in your system, think

Sep 8, 2021
a small form factor OpenShift/Kubernetes optimized for edge computing

Microshift Microshift is OpenShift1 Kubernetes in a small form factor and optimized for edge computing. Edge devices deployed out in the field pose ve

Dec 29, 2022
Microshift is a research project that is exploring how OpenShift1 Kubernetes can be optimized for small form factor and edge computing.

Microshift is a research project that is exploring how OpenShift1 Kubernetes can be optimized for small form factor and edge computing.

Nov 1, 2021
Edge Orchestration project is to implement distributed computing between Docker Container enabled devices.
Edge Orchestration project is to implement distributed computing between Docker Container enabled devices.

Edge Orchestration Introduction The main purpose of Edge Orchestration project is to implement distributed computing between Docker Container enabled

Dec 17, 2021
High performance, distributed and low latency publish-subscribe platform.
High performance, distributed and low latency publish-subscribe platform.

Emitter: Distributed Publish-Subscribe Platform Emitter is a distributed, scalable and fault-tolerant publish-subscribe platform built with MQTT proto

Jan 2, 2023
TalariaDB is a distributed, highly available, and low latency time-series database for Presto
TalariaDB is a distributed, highly available, and low latency time-series database for Presto

TalariaDB is a distributed, highly available, and low latency time-series database that stores real-time data. It's built on top of Badger DB.

Nov 16, 2022