βΉοΈ We welcome contributions. First, please read our contribution guidelines
The ao
computer is the
actor oriented machine that emerges
from the network of nodes that adhere to its core data protocol, running on the
Arweave network. This document gives a brief introduction
to the protocol and its functionality, as well as its technical details, such
that builders can create new implementations and services that integrate with
it.
The ao
computer is a single, unified computing environment (a
Single System Image),
hosted on a heterogenous set of nodes in a distributed network. ao
is designed
to offer an environment in which an arbitrary number of paralell processes can
be resident, coordinating through an open message passing layer. This message
passing standard connects the machine's indepedently operating processes
together into a 'web' -- in the same way that websites operate on independent
servers but are conjoined into a cohesive, unified experience via hyperlinks.
Unlike existing decentralized compute systems, ao
is capable of supporting the
operation of computation without protocol-enforced limitations on size and form,
while also maintaining the verifiability (and thus, trust minimization) of the
network itself. Further, ao
's distributed and modular architecture allows
existing smart contract platforms to easily 'plug in' to the network, acting as
a single process which can send and recieve messages from any other process.
Instead of enforcing one set of choices upon all users of the computing
environment, ao
is built in a modular form: Allowing users to choose which
virtual machines, sequencing decentralization trade-offs, message passing
security guarantees, and payment options work best for them. This modular
environment is then unified by the eventual settlement of all messages -- each
sharing the same format -- onto Arweave's decentralized data layer. This
modularity creates a unified computing environment suiting an extremely wide set
of workloads, in which every process can easily transfer messages and cooperate.
ao
's core objective is to enable trustless and cooperating compute services
without any practical bounds on scale. This allows for a radically new design
space of applications that were not previously possible: Blending the benefits
of smart contract applications (services without requiring trust in anything but
code), and traditional compute environments (Amazon EC2, etc).
Due to its scalability, the natural way for developers to use ao
is to spawn
their own command-line (aos
) process inside the network, and to start issuing
commands. This DevX is similar to how developers create a new server instance at
a cloud host and connect to it via SSH, except that this command line process
has the properties of a smart contracts. Their commandline process on ao
doesn't live in any specific data center or at any one physical location, and
its computation is completely trustless. Every user can message and interact
with every other process and program. The result of this is a global 'Single
System Image': A unified computer -- spread around the world, operating at any
scale -- shared between all users.
From the end-user or developer's perspective, the essence of ao
is simple:
ao
is a shared computer that they can run any number of processes inside.
These processes are not hosted on any specific servers, or under the control of
any one individual or group. Instead, once launched these processes can be
cryptographically entrusted to render their services in a provably neutral
manner, permanently. This enables them to guarantee rights to their users over
time.
For more information about ao
- check out our spec - https://ao.arweave.dev -
and cookbook - https://cookbook_ao.arweave.dev
ao
CLI: Theao
Command Line Interface that can be installed on the command line and used to initialize, build, run, and publishao
Lua -> WASM Contractsao
JS Loader: Theao
JavaScript Loader that enabled invoking anao
Contract, built into WASM, from a JavaScript context.ao
Connect: Theao
JavaScript library that provides an abstraction for spawning, evaluating, and interacting withao
Processes on node or in the browser.ao
Compute Unit (cu
): An implementation of theao
Compute Unit, aka acu
(pronounced "koo" π¦)ao
Messenger Unit (mu
): An implementation of theao
Messaenger Unit, aka amu
(pronounced "moo" π)ao
Scheduler Unit (su
): An implementation of theao
Scheduler Unit, aka asu
(pronounced "soo" π§)ao
Unit Router (ur
): A Simple Reverse Proxy whose API can mirror an underlying set ofao
Unit Hosts (mu
s orcu
s) (pronounced "youwer" π)ao
Lua Examples: Various examples of projects leveragingao
Contracts and components.
The core team's current focus is the active development of the ao Data Protocol and reference implementations, which are undergoing constant change.
Folks are welcome to run their own instances of the ao Unit reference implementations for the purpose of experimentation, but there are currently no guarantees or core support for doing so.
SEE CONTRIBUTING
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).