Architecture

OverviewConceptsLibsSoftware StackSkySpark

Overview

Haxall is an open source software framework for the Internet of Things. It includes an extensive toolkit for working with Project Haystack data. Use it right out of the box as a flexible IoT data gateway which runs at the edge. Haxall is written in Fantom with runtime support for both the Java VM and JavaScript environments.

Concepts

Haxall is composed of the following key concepts and subsystems:

  • Ontology: we standardize the modeling of the built environment using Project Haystack
  • Folio: database optimized for the real-time nature of IoT data
  • Axon: functional scripting language for onboarding and transforming IoT data
  • HTTP API: all functionality is accessible over the Haystack HTTP API
  • Connectors: framework for connectivity to IoT devices and protocols
  • Libs: pluggable modules for functionality
  • Runtime: top-level API for working with a project
  • Daemon: complete runtime server with batteries included

Libs

Functionality is packaged into libs that are reusable modules you can enable/disable at runtime. The most important libraries include:

  • axon: core functions for Haystack data values
  • hx: core runtime functions
  • math: mathematical functions
  • io: functions to read/write data in a variety of formats
  • conn: work with connectors
  • task: schedule background work using actor framework
  • point: support for writable points and history collection

Software Stack

The following diagram illustrates how the system fits together:

haystack stack

SkySpark

Haxall is developed by SkyFoundry. It the foundational layer of our commercial product SkySpark that we have opened sourced to the community. As such, the documentation contains many notes related to the features which work differently or are only available in SkySpark.

Libraries developed for Haxall will run seamlessly in SkySpark. For example if you develop a connector or Axon function library as a Haxall lib, then you can drop that same pod into a SkySpark runtime and it will be available as a normal extension.

Haxall databases are also binary compatible with SkySpark. So you can open and run a Haxall database in SkySpark and vice versa. Note that not all extensions will run in Haxall - only the core open source libs such as the ones listed above.