permaweb / aos

An operating system for AO: The hyper parallel computer
https://ao.g8way.io
Other
68 stars 46 forks source link
logo

Status: Preview rc2 Version: 2.0.0-rc2 Module: PSPMkkFrJzYI2bQbkmeEQ5ONmeR-FJZu0fNQoSCU1-I

Sqlite-Module: C4bxMlK8d_wQ-QpXIIZLU8UWXu6Sd8PDJw7HN3nNE2I

Requirements

Getting Started

npm i -g https://get_ao.g8way.io && aos

NOTE: after the first time you run aos it installs it to your local machine, so the next time you want to run aos, just type aos + [enter]

User Documentation

Go to ao Cookbook

Design Principals

Preview Implementation

The current implementation of aos is using the ao wasm module and building with the ao cli that uses a emscripten c compiler and embeds Lua v5.3 in the wasm binary. This gives the developers and users with a built in operating system with a first class interactive language to engage with the Process business logic. The aos module also provides features like json, base64,

For Developers

The aos console is a command-line application that provides a easy to use DX experience to create Processes (aka Smart Contracts) on the ao Computer.

Setup

Use yarn to build the project and run.

yarn
yarn build
yarn start

Command-line options

You can provide a name for a specific Process, if the Process does not exist aos will spawn the process, then every time you run aos [name] it will locate that process and interact with it.

aos [name]

Flags

Name Description Required
--cron [Interval] The cron flag can only be used when spawning a process, it instructs the Process to generate messages every Interval. An Interval can be defined with a [n]-(period) for example: 1-minute, 10-minutes, 5-hours, 10-blocks, etc. 0-1
--get-blueprints [dir] This command will grab blueprints from the /blueprints folder or a folder specified by the user. These blueprints are small lua files that can be applied to your process to automatically give it some functionality. 0-1
--tag-name [name] and --tag-value [value] These flags are also only when aos is spawning a Process. You may add many of these combinations as you would like and they will appear on the Process tags object 0-n
--load [luaFile] The load command allows you to load lua source files from your local directory. 0-n
--gateway-url [url] The gateway-url flag allows you to specify a custom Gateway to connect to. 0-1
--cu-url [url] The cu-url flag allows you to specify a custom Computer Unit to connect to. 0-1
--mu-url [url] The mu-url flag allows you to specify a custom Memory Unit to connect to. 0-1
--sqlite 0-1 Use sqlite aos module when spawning new process

Commands

When running the console, you can type dot commands to instruct the console to perform special instructions.

Command Description
.editor This command opens a simple cli editor that you can type on multiple lines, and then you can type .done or .cancel to exist editor mode.
.load This command allows you to load a lua source file from your local directory
.load-blueprint [name] This command will grab a lua file from the blueprints directory and load it into your process.
.exit This command will exit you console, but you can also do Ctrl-C or Ctrl-D

License

The ao and aos codebases are offered under the BSL 1.1 license for the duration of the testnet period. After the testnet phase is over, the code will be made available under either a new evolutionary forking license, or a traditional OSS license (GPLv3/v2, MIT, etc).

Advanced AOS Development Guide

Requirements

Setup

curl -L https://install_ao.g8way.io | bash

Follow install instructions

change console directory to process

cd process

Build WASM Module

ao build

Develop using os loader

Making changes and debugging can be a challege with aos modules.

node ../src/index.js
aos> .update

Will load the current changes into a process. This workflow will allow you to make changes and update the os verify changes. Rinse Repeat.

Run AOS Tests

yarn
yarn test

Deploy WASM Module

NOTE: you will need a keyfile with turbo credits from ardrive.io Add keyfile to $HOME/.wallet.json file

yarn deploy

Copy the new module id

Create a new aos with module id

$MODULE={moduleId}
aos new1 --module=$MODULE

Deploy a new version of AOS Console

in the project directory Update package.json with new Module ID and new Version. Use semantic versioning. Update README.md with new Module ID and new Version

Update aos-sqlite with latest

cd process
docker run -v .:/src p3rmaw3b/aos-sqlite:0.0.0 emcc-lua
yarn 
yarn test
yarn deploy-sqlite

copy module id to package.json and readme