Akash - Decentralized Serverless Network
Akash is a secure, transparent, and decentralized cloud computing marketplace that connects those who need computing resources (tenants) with those that have computing capacity to lease (providers).
For a high-level overview of the Akash protocol and network economics, check out the whitepaper; a detailed protocol definition can be
found in the design documentation; and the target workload definition spec is here.
Branching and Versioning
The master
branch contains new features and is under active development; the mainnet/main
branch contains the current, stable release.
- stable releases will have even minor numbers (
v0.8.0
) and be cut from the mainnet/main
branch.
- unstable releases will have odd minor numbers (
v0.9.0
) and be cut from the master
branch.
Akash Suite
Akash Suite is the reference implementation of the Akash Protocol. Akash is an actively-developed prototype currently focused on the distributed marketplace functionality.
The Suite is composed of one binary, akash
, which contains a (tendermint-powered) blockchain node that
implements the decentralized exchange as well as client functionality to access the exchange and network data in general.
Get Started with Akash
The easiest way to get started with Akash is by following the Quick Start Guide to get started.
Official blog and documentation
Platform |
Arch |
Status |
Darwin |
amd64 |
✅ Supported |
Darwin |
arm64 |
✅ Supported |
Linux |
amd64 |
✅ Supported |
Linux |
arm64 (aka aarch64) |
✅ Supported |
Linux |
armhf GOARM=5,6,7 |
⚠️ Not supported |
Windows |
amd64 |
⚠️ Experimental |
Installing
The latest binary release can be installed with Homebrew:
$ brew tap akash-network/tap
$ brew install akash
Or GoDownloader:
$ curl -sSfL https://raw.githubusercontent.com/akash-network/node/master/install.sh | sh
Or install a specific version with GoDownloader
$ curl -sSfL https://raw.githubusercontent.com/akash-network/node/master/install | sh -s -- v0.22.0
Roadmap and contributing
Akash is written in Golang and is Apache 2.0 licensed - contributions are welcomed whether that means providing feedback, testing existing and new feature or hacking on the source.
To become a contributor, please see the guide on contributing
Development environment
This doc guides through setting up local development environment
Akash is developed and tested with golang 1.16.0+.
Building requires a working golang installation, a properly set GOPATH
, and $GOPATH/bin
present in $PATH
.
It is also required to have C/C++ compiler installed (gcc/clang) as there are C dependencies in use (libusb/libhid)
Akash build process and examples are heavily tied to Makefile.
Building from Source
Command below will compile akash executable and put it into .cache/bin
make akash # akash is set as default target thus `make` is equal to `make akash`
once binary compiled it exempts system-wide installed akash within akash repo
Running
We use thin integration testing environments to simplify
the development and testing process. We currently have three environments:
- Single node: simple (no workloads) single node running locally.
- Single node with workloads: single node and provider running locally, running workloads within a virtual machine.
- full k8s: same as above but with node and provider running inside Kubernetes.