arhat 阿罗汉
The reference agent implementation of aranya-proto
and EdgeDevice
Features
- Easy deployment for any platform, even in browser (requires wasm support)
- No external dependencies (
socat
, tar
) required for kubectl cp/port-forward/exec/attach
- Detailed and customizable node infromation report
- Customize Kubernetes
Node
annotations and labels in conjunction with aranya
in local configuration
- Flexible connectivity
MQTT 3.1.1
(including aws-iot-core
, azure-iot-hub
, gcp-iot-core
)
- supports
tcp
, tcp/tls
, websocket
, websocket/tls
CoAP
- supports
tcp
, tcp/tls
, udp
, udp/dtls
gRPC
- Extensible plugin system built with
libext
- Create your own peripheral controller and integrate all kinds of peripherals into Kubernetes API with ease (e.g. use
kubectl
to turn on/off lights)
- Unified metrics collection
- Efficient built-in dynamic prometheus
node_exporter
/windows-exporter
with no port exposed
- Collect all kinds of metrics with
aranya
and Kubernetes API, including metrics from peripherals
Project State
TL;DR: Currently you can treate araht
as a cloud native replacement of sshd
with node metrics reporting support working with aranya
through Kubernetes API
Currently state of functionalities:
- Stable:
- Port-forward
- Exec/Attach
- Node metrics collecting
- Extended node info reporting
- MQTT connectivity
- gRPC connectivity
- Unstable (subject to design change):
- Peripheral extension
- Runtime extension
- Experimental (not fully supported):
- Networking with abbot
- Remote storage mount
- Credential update
- CoAP connectivity
- NATS Stream connectivity
- TODO:
- Conditional connectivity switch on unrecoverable error
- Kafka connectivity
- MQTT-SN connectivity
NOTE: This project lacks tests, all kinds of contribution especially tests are welcome!
Design
NOTE: This is not the final design, and docs may not reflect the actual implementation for now
Build
see docs/Build
Configuration
see docs/Configuration
Run
LICENSE
Copyright 2020 The arhat.dev Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.