Skip to content

matt-mazzucato/astarte

 
 

Repository files navigation

Astarte: An Open Source IoT Platform

Astarte is an Open Source IoT platform written in Elixir. It is a turnkey solution which packs in everything you need for connecting a device fleet to a set of remote applications. It performs data modeling, automated data reduction, real-time events, and provides you with any feature you might expect in a modern IoT platform.

Astarte builds on top of amazing Open Source projects such as RabbitMQ and Cassandra/ScyllaDB.

Latest stable release is v0.10.2.

Let's try it!

Can't be easier. Pick your favorite machine with at least 4GB of free RAM, make sure it has Docker, cfssl and OpenSSL installed, and simply:

$ git clone https://github.com/astarte-platform/astarte.git && cd astarte
$ ./generate-compose-files.sh
$ docker-compose up -d

Make sure to use the latest stable release if you want a flawless experience

You should be up and running in a matter of minutes. If you want a more thorough explanation and find out how to access your new Astarte cluster and what you can do with it, follow our "Astarte in 5 minutes" tutorial to get some fake or real devices to stream and process data while your tea gets ready.

Sweet! Let's move it to production!

Whoa, not so fast. Putting together an Astarte instance which can handle your IoT traffic might be tricky, and requires some knowledge about the platform to make sure it won't break.

So, if you're serious about getting Astarte in your production environment, you might want to learn more about it first. Start with having a look at its architecture and finding out how it works. Once you feel confident, head over to the Administration Manual to find out how to make Astarte fit into your infrastructure, and which deployment mechanism you should choose.

Where's all the code, anyway?

Astarte is a distributed system made up of several microservices, which can all be found in the apps directory. Its core components are:

  • Data Updater Plant: Takes care of ingesting data into the database, filtering and routing it to other Astarte components.
  • Trigger Engine: Processes incoming events, applies rules, prepares payloads and performs actions - it is the component that delivers data to your application.
  • AppEngine API: If you are building an application on top of Astarte's APIs, you will most likely call into it.
  • Pairing & Pairing API: Provides all the information required to successfully communicate with Astarte, including the SSL certificate.
  • Realm Management & Realm Management API: Where realm configuration happens. Manage your triggers, interfaces and more from here.
  • Housekeeping & Housekeeping API: The "superadmin" component of Astarte: configure your global instance, create realms and more.

All of them build on some common libraries, hosted in separate repositories:

  • Astarte Core: All common functions and anything useful to Astarte's services go here.
  • Astarte RPC: Defines protobuf messages to allow all of Astarte's services to talk together.
  • Astarte Data Access: Commodity component which abstracts data access for services which need it.

Astarte also needs a transport to communicate with devices:

What about the binaries?

Astarte is designed from the ground up to be run in containers, with Kubernetes as a first-class citizen when it comes to deployment. Astarte's images can be found at Docker Hub, with every Astarte service coming with its own image.

With the help of our Kubernetes Operator and astartectl, you can deploy your Astarte instance to your favorite cloud provider in a matter of minutes.

Looks great! I want to contribute!

That's awesome! Astarte is quite young as an Open Source project, so we're still setting up bits and pieces to make contributions easier and more effective, such as a shared roadmap, a proper contributor guide. For the time being, you can head over to the repository you want to contribute to and set up a Pull Request. We're using DCO for our contributions, so you'll need to sign off all commit messages before submitting a Pull Request.

You can also join us on #astarte slack channel on Elixir Slack and on #astarte IRC channel on freenode.

We accept all kind of quality contributions, as long as they adhere with the project goals and philosophy, and have some tests.

Any chance I can get a hosted and managed instance?

Yup. Some infrastructure and cloud providers are working on releasing Astarte-based SaaS services, and we're also working on making Astarte deployable onto major cloud providers in the easiest possible way. Watch this space or subscribe to our newsletter to find out more about it.

I need some help with my installation! Where can I get commercial support?

Glad you asked. Astarte is developed by Ispirata, who fuels its development thanks to the generosity of many customers running it in production. Besides consultancy, installation, maintenance, long-term support and customizations, Ispirata also commercializes Astarte Enterprise, an Astarte variant packing in some additional goodies and features.

Get in touch to find out how we can help you in getting Astarte in its best possible shape for your specific needs.

License

Astarte source code is released under Apache 2 License.

Check LICENSE file for more information.

Packages

No packages published

Languages

  • Elixir 99.4%
  • Other 0.6%