Skip to main content


The EDK (ELARA Development Kit) is a CLI, API, and development libraries to create, develop and deploy ELARA solutions.


The EDK package can be installed with npm:

npm install -g @elaraai/edk


The EDK can be used either as the CLI, API or as the development libraries.

CLI Usage#

Once the EDK is installed globally, the CLI can be invoked from the command line, for example to read the EDK help:

$ edk --helpUsage: edk [options] [command]
Options:  -V, --version                  output the version number  -h, --help                     display help for command
Commands:  init [options]                 initialise a new ELARA project  add                            add an asset to the project  remove [options] <asset>       remove an asset from the project  links [options] <asset>        show the directly linked assets in a project  list [options]                 list the assets in the project  update [options]               update the assets in the project  build [options]                build the schema from assets  deploy [options] <deployment>  deploy the assets in a project  help [command]                 display help for command

API Usage#

The api modules may be imported and applied within Typescript projects:

import * as edk from '@elaraai/edk'// create a simple application to create a project, add a datasource, build and deployconst project_dir = 'path_to_workspace'async function run() {     // create a project     let project_config = await edk.init({          name: 'A project',          dir: project_dir      })      // add a deployment     project_config = edk.addDeployment({         dir: project_dir,         server: 'https://server_url',         name: 'test',         config: project_config     })      // add a datasource to the project     project_config = edk.addRangeDataSource({         name: "Datasource",         dir: project_dir,         def_dir: 'src/sources',         config: project_config,         start: 1.5,         stop: 1000,         step: 2.3     });      // build the schema     let build = edk.buildSchema({          dir: project_dir,          config: project_config      });     if(build === false) {         //...     }      // deploy the schema     let deploy = await edk.deploySchema({          dir: project_dir,          config: project_config,          deployment: 'test'      });     if(deploy === false) {         //...     }} run()

Library Usage#

The library modules may be imported and applied within EDK project assets:

import { ApplicationPlugin, WeatherPlugin, HolidaysPlugin, Environment, EnvironmentVariable } from '@elaraai/edk/lib'
export default ApplicationPlugin({    name: 'Weather & Holidays',    schemas: {       Weather: WeatherPlugin(),       Holidays: HolidaysPlugin(),    ),    users: [        User({            email: ''            name: 'Admin',            password: Environment('ADMIN_PASSWORD'),            is_disabled: false,            is_admin: true        })    ],    env: [        EnvironmentVariable({ name: 'ADMIN_PASSWORD' })     ]})


We provide the following detailed documentation:


The EDK is licensed under the EDK Licence version LICENSE-1.04, the full version of the EDK Licence is available here.

Release Notes#


@elaraai/edk v3.9.2


  • Added resiliency around failure cases with the Rest API Datasources


@elaraai/edk v3.9.1


  • Added failure key to RestApiRequest which will bet set to true when a request fails, to allow for smarter retry logic



  • Added minimum Node engine support to be 16.x
  • Upgraded Typescript to version 4.6

@elaraai/edk v3.9.0


  • Added keep command to edk deploy <deployment> to allow the preservation of a specific service
  • Added caching layer for Rest API data sources
  • Added RowHTMLVisual for using HTML to access and represent data as a visual
  • Added Variant types for working with nullable types in schema


  • Changed ability to specifiy deployment url as either http/https or leave off entirely (defaults to HTTPS in that case)
  • [Breaking] Changed Rest API Datasource definition structure significantly to support caching more effeciently


@elaraai/edk v3.8.3-3


  • Added GroupCombinedVisual to visualise a combination column and line chart on a shared numeric y axes.
  • Added VisualList to allow secondary charts to be shown on a page using drag and drop into existing PanelVisual objects
  • Added powered, ApplicationIcon and updates to ApplicationColors for customised styling of UI.
  • Added improved UI view download, filtering and sorting
  • Added Settable``Property for Structures to facilitate event based single-value properties.
  • Added OptimizationPlugin to diagnose state and progress of Optimization.
  • Added OptionsPipelinePlugin to create a pipeline flattening Option, Value and Function property values across defined scenarios.
  • Added PredictionPlugin to diagnose state and progress of Prediction.


  • Remove predict predicate in Process, Resource and Agent entities, to automate seperation of deterministic trajectories from probabilistic trajectories in simulation.


  • Improve status output for Optimization


@elaraai/edk v2.3.1


  • Added edk add visual command to manage visual assets.
  • Added edk build speed improvements.
  • Added edk links command to view the relationships to a specificed project asset.
  • Added handling of uri schema to edk add datasource and edk-io detect.
  • Added version command to view currently installed version of edk-io and edk.
  • Added DistributionOperation to generate grouped distributions in a Pipeline.
  • Added OffsetOperation to select expressions from sorted offset rows in a Pipeline.
  • Added explicit date configuration for SingleEvent and MultipleEvent.
  • Added RowPivotVisual to visualise ordered structs in a dense pivot grid.
  • Added RowRidgelineVisual to visualise high resolution stacked ridgeline charts.
  • Added z_overlap to RowRidgelineVisual and GroupRidgelineVisual to control of z vertical cutoff.
  • Added key to GroupLineVisual to generate nested lines.
  • Added uri schema to DataSource for generalised specification of the following protocols:
    • ftp://
    • sftp://
    • http://
    • https://
    • mssql://
    • file://
  • Added ScenarioFlattenPlugin to transpose multiple Scenario rows into value Expressions per Scenario.
  • Added TimeBoundsPlugin to calculate the temporal range accross multiple Tables.


  • Improve UI and visual styling
  • Improved Layout and Axis definition and helper functions.
  • Improved Layout and Axis definition and helper functions.


  • Seperate Visual into root of schema object.

[Version 1]#

Initial public release.