<commit_before>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](http://james-camerons-avatar.wikia.com/wiki/Eywa)

**Project Eywa** is essentially a connection manager that keeps track of connected devices. But more than just connecting devices, it is also capable of sending control commands to them, collecting data from them, and in the end, providing query interfaces that can be used for data visualization.

Eywa lets the teams of embedded system developers forget about reinventing the backend services and provides a commonly used protocol, websocket, to make real-time communication easily achievable.

Why is it useful?
-----------------

We are a group of people who are interested in **Home Automations** and **Smart Devices**. Often time, these projects involve connecting devices into cloud, tracking the usage of different functionalities, collecting the data and also controlling them. After worked on several similar projects, we found there is no reason to reinvent the wheel each time for different applications. So we came up with **Project Eywa** to help small teams like us reduce their development circles.

What features does it have?
---------------------------

Here is a growing list of features we want to support:

- [x] Connection Manager
- [x] Device Control
- [ ] Admin Panel
- [x] Basic Authentication
- [x] SSL protection
- [x] Data Indexing
- [ ] Data Streaming
- [ ] File Upload
- [x] Data Export
- [x] Data Retention
- [ ] Data Visualization
- [x] Query Interface
- [ ] Clustering
- [ ] Custom Web hooks
- [ ] Custom Monitors
- [ ] M2M (machine to machine) communication
- [ ] MQTT integration
- [x] Dockerized image

Our Admin Panel and Data Visualization dashboard will be releasing soon.

Please let us know if you want more features by creating issues. Pull requests are also very much welcome!

Performance
-----------

How performant is Eywa? Well, we did a simple benchmark and the [benchmark script](https://github.com/vivowares/eywa/blob/master/benchmark/benchmark.go) is also available in the repo under `benchmark` directory.

On a machine of 12 CPUs + 32GB mem from [Digital Ocean](https://www.digitalocean.com/). A single Eywa node can keep track of more than 1.5 million devices, with a lot of potential. CPU is merely used, but memory is the limiting factor.

For more details please check out wiki on [Performance](https://github.com/vivowares/eywa/wiki/Performance).

How to use?
-----------
<commit_msg>update readme for more features<commit_after>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](http://james-camerons-avatar.wikia.com/wiki/Eywa)

**Project Eywa** is essentially a connection manager that keeps track of connected devices. But more than just connecting devices, it is also capable of sending control commands to them, collecting data from them, and in the end, providing query interfaces that can be used for data visualization.

Eywa lets the teams of embedded system developers forget about reinventing the backend services and provides a commonly used protocol, websocket, to make real-time communication easily achievable.

Why is it useful?
-----------------

We are a group of people who are interested in **Home Automations** and **Smart Devices**. Often time, these projects involve connecting devices into cloud, tracking the usage of different functionalities, collecting the data and also controlling them. After worked on several similar projects, we found there is no reason to reinvent the wheel each time for different applications. So we came up with **Project Eywa** to help small teams like us reduce their development circles.

What features does it have?
---------------------------

Here is a growing list of features we want to support:

- [x] Connection Manager
- [x] Device Control
- [ ] Admin Panel
- [x] Basic Authentication
- [x] SSL protection
- [x] Data Indexing
- [ ] Data Streaming
- [ ] File Upload
- [x] Data Export
- [x] Data Retention
- [ ] Data Visualization
- [x] Query Interface
- [ ] Clustering
- [ ] Custom Web hooks
- [ ] Custom Monitors
- [ ] M2M (machine to machine) communication
- [x] HTTP Long-Polling
- [x] Websocket
- [ ] MQTT integration
- [x] Dockerized image

Our Admin Panel and Data Visualization dashboard will be releasing soon.

Please let us know if you want more features by creating issues. Pull requests are also very much welcome!

Performance
-----------

How performant is Eywa? Well, we did a simple benchmark and the [benchmark script](https://github.com/vivowares/eywa/blob/master/benchmark/benchmark.go) is also available in the repo under `benchmark` directory.

On a machine of 12 CPUs + 32GB mem from [Digital Ocean](https://www.digitalocean.com/). A single Eywa node can keep track of more than 1.5 million devices, with a lot of potential. CPU is merely used, but memory is the limiting factor.

For more details please check out wiki on [Performance](https://github.com/vivowares/eywa/wiki/Performance).

How to use?
-----------

{'fraction_non_alphanumeric': 0.10019157088122606, 'fraction_numerical': 0.0026819923371647508, 'mean_word_length': 3.63265306122449, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 6, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5117809', 'n_tokens_mistral': 1395, 'n_tokens_neox': 1327, 'n_words': 705}