Skip to content
Mainframe OS
Branch: master
Clone or download
Latest commit 9fb48b4 May 21, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Don't use hard links with electron-builder May 2, 2019
applications/payments remove onyx stats app, update README May 16, 2019
docs Merge branch 'master' into docs May 17, 2019
fixtures/test-app Use timeline APIs for apps updates Mar 22, 2019
packages fix eth event log decoding May 21, 2019
specs Fix Markdown links in specs Aug 16, 2018
website docs updates for 0.3.1 release - one-click installer, multi-platform … May 16, 2019
.babelrc Babel 7 and other dependencies (#73) Sep 11, 2018
.eslintrc.js Update dependencies Feb 14, 2019
.flowconfig contact sdk api's Jan 28, 2019
.gitignore Merge branch 'master' into onchain-invites Apr 3, 2019
.nvmrc Fix tests Oct 29, 2018
LICENSE Set packages to v0.2 Feb 11, 2019
Procfile Use Foreman to be able to run 'yarn dev' from root Mar 29, 2019
README.md remove onyx stats app, update README May 16, 2019
babel.config.js Babel 7 and other dependencies (#73) Sep 11, 2018
contributing.md Create contributing.md Nov 14, 2018
greenkeeper.json Update dependencies to enable Greenkeeper 🌴 (#27) Jul 25, 2018
jest.config.ci.js launcher integration tests Jul 30, 2018
jest.config.js launcher integration tests Jul 30, 2018
jest.setup.js Add app-manifest package Jun 21, 2018
lerna.json Use Yarn instead of npm Feb 14, 2019
package.json Merge branch 'master' into fix-scroll May 3, 2019
prettier.config.js Improve project setup and daemon modules May 11, 2018
yarn.lock update react transitions May 15, 2019

README.md

Mainframe OS

A platform for easily building and running distributed, unstoppable apps.

Overview

The main components (packages) of the Mainframe Platform are as follows:

  • daemon: a background daemon process that communicates with decentralized services
  • launcher: the Mainframe application installing, launching and running sandboxed apps

In addition, there are several auxiliary packages:

  • app-manifest: an utility library for app manifests creation an validation
  • app-permissions: an utility library for distributed app permissions
  • cli: a command-line interface to communicate with the daemon
  • client: a library used by the CLI & launcher to communicate with the daemon
  • config: shared configuration utilities used by several packages
  • data-types: shared data primitives
  • toolbox: a set of functions that both the launcher and the cli use

In order to make it easier to share code among packages, this project uses lerna. Whenever code changes, it's expected that you run yarn run build from the root of the project directory, and it will kick off the necessary lerna build processes in the package folders.

Project Status

This project is in alpha, lots of breaking changes are to be expected between releases. It is using libraries and services that are themselves still in early stages of development. The cryptography and overall security have not been audited, no guarantees should be expected from this project at this stage.

Getting Started

Contributing

see contributing.md

Prerequisites

  • Node v10.x and Yarn => v1.13
  • Installed git and added to PATH environment variable

Platform-specific dependencies

Linux
sudo apt install -y libudev-dev libtool libusb-1.0-0-dev build-essential
Windows
npm install --global --production windows-build-tools`

Setup

Each package contains (or will contain) a readme with further information pertaining to setup. A shortcut guide is as follows:

In the root of the project, install node dependencies:

yarn install
yarn build

Next, a local environment must be created. An environment contains references to all the vaults created and stores the downloaded application contents. To create a new environment, run the following command:

packages/cli/bin/run env:create

Or on Windows

"packages/cli/bin/run.cmd" env:create

This first environment should be created with the development type and set as default environment. The newly created environment then needs to be configured using the CLI:

packages/cli/bin/run daemon:setup --bin-path=./packages/daemon/bin/run

Or on Windows

"packages/cli/bin/run.cmd" daemon:setup --bin-path="packages/daemon/bin/run.cmd"

Development

Building the code

Whenever code changes in any other package than the launcher, you should build everything (via lerna) with:

yarn run build

Now, in one terminal tab, run the daemon:

./packages/cli/bin/run daemon:start -e <your_env_name>

Or on Windows

"packages/cli/bin/run.cmd" daemon:start -e <your_env_name>

Then, in another tab, run the launcher:

MAINFRAME_ENV=<your_env_name> cd packages/launcher && yarn deps:build && yarn run dev

Building Mainframe Apps

Information and guides for building MainframeOS apps can be found in our developer docs.

You can’t perform that action at this time.