Skip to content
Branch: master
Clone or download
Latest commit 73c03f0 Jul 17, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci chore(circlecli): update CircleCI config to easily drop the cache Mar 28, 2019
.github doc(infra): update issue templates Jan 23, 2019
cpplib/catch2utils refactor(xod-arduino, workspace): replace platform-dependent `dtostrf… Nov 15, 2018
packages chore(infra): release 0.30.0 Jul 17, 2019
tools tweak(tools): do not place images to screenshots of empty patches (th… Apr 16, 2019
vendor/catch2 chore(xod-tabtest): bump Catch2 version to v2.5.0 Dec 3, 2018
workspace chore(infra): release 0.30.0 Jul 17, 2019
.clang-format chore(workspace, xod-client-electron): add clang-format config, forma… Jul 6, 2018
.editorconfig feat(xod-doc): codify some contributor's guidelines in Jetbrains IDEs ( Feb 9, 2017
.eslintignore chore(infra): extract Reason typings from xod-tabtest to respective p… Aug 1, 2018
.eslintrc.js tweak(xod-tabtest): automatically inject xod/tabtest library to teste… Dec 26, 2018
.gitattributes chore(xod-client-electron, workspace): move `arduino-libraries` conte… Sep 10, 2018
.gitignore chore(infra): move bucklescript-related stuff to global .gitignore Sep 18, 2018
.nvmrc chore(infra): upgrade to Node v10 LTS Sep 3, 2018
.prettierignore chore(prettier): ignore issue templates Jan 23, 2019
.prettierrc.json chore(infra): add npm scripts that run prettier for markdown files Nov 27, 2018 chore(infra): release 0.30.0 Jul 17, 2019 chore(infra): run prettier on .md files Nov 27, 2018
LICENSE.txt doc(infra): apply AGPL-3.0 license Jun 26, 2017 chore(infra): run prettier on .md files Nov 27, 2018
appveyor.yml chore(xod-client-electron): bundle arduino-cli in XOD IDE Oct 10, 2018
bsconfig.json refactor(holes, xod-arduino, xod-project, xod-tabtest): rename "holes… Sep 18, 2018
lerna.json chore(infra): release 0.30.0 Jul 17, 2019
package.json chore(xod-deploy, xod-client-electron): upgrade to electron 4.2.4 Jun 24, 2019
yarn.lock chore(xod-deploy, xod-client-electron): upgrade to electron 4.2.4 Jun 24, 2019


CircleCI AppVeyor

XOD is a visual programming language for microcontrollers. For documentation and downloads visit

This repository contains sources for XOD language core, XOD IDE and XOD standard library. XOD documentation is in the xod-docs repository.

Development copy setup

We use Yarn to run routine tasks on source files. Make sure it is available on your system. Clone the repository and set working directory to its root. Then run

$ yarn

to install all JS dependencies.

Browser IDE

$ yarn dev:browser

Open http://localhost:8080 in your browser.

Desktop IDE

$ yarn build:electron
$ yarn start:electron

Directory structure

The project is managed as a Lerna monorepo and split up in few directories:

  • packages/ — most of source code is here; navigate to a particular package to see it’s own README and get an idea what it is for
  • tools/ — utility scripts to assist build process and routine maintenance tasks
  • workspace/ — XOD standard library, default projects, and end-to-end fixtures

Repository commands

You can run several commands on source files. They are available as yarn subcommands:

  • yarn build — build, transpile, pack all
  • yarn build:electron — build desktop IDE only
  • yarn build:cli — build CLI tools only
  • yarn dev:browser — run dev-version of browser IDE on localhost
  • yarn dist:electron — build OS-specific distributive of desktop IDE
  • yarn test — run unit tests
  • yarn test-cpp — run C++ code tests
  • yarn test-func — run functional tests
  • yarn lint — run the linter to check code style
  • yarn verify — build, lint, test; run this prior to a pull request
  • yarn ci — install & verify; CI-server uses this command
  • yarn start:electron — starts desktop IDE
  • yarn start:spectron-repl — starts functional tests environment
  • yarn storybook — starts React components viewer for visual inspection
  • yarn clean — remove build artifacts and installed node_modules

Note that dependencies between tasks are not resolved. test and start:* expect that the project is already built.


Many commands (notably build, dev, test) support package scoping to save development time. To rebuild only xod-project:

$ yarn build --scope xod-project

To rebuild xod-project and its dependencies:

$ yarn build --scope xod-project --include-filtered-dependencies

Those are standard Lerna flags.

Debugging functional tests

yarn test-func runs automated end-to-end functional tests.

You can set XOD_DEBUG_TESTS environment variable to keep IDE open on failure: XOD_DEBUG_TESTS=1 yarn test-func

Use yarn start:spectron-repl to run an interactive session and control the IDE window programmatically.

Running C++ tests

You need avr-gcc and PlatformIO Core to be installed system-wide to run C++ code tests. They are available as OS packages for most platforms.


Copyright 2017 XOD LLC.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License, version 3, as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see

As a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file and distribute linked combinations including the program with the OpenSSL library. You must comply with the GNU Affero General Public License in all respects for all of the code used other than as permitted herein. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it in the license file.


Feel free to contribute to the project! See the general Contibutor’s guide and GitHub contribution guidelines.

Jetbrains users can benefit from XOD Jetbrains Live Template.

You can’t perform that action at this time.