AssemblyLift is an open source platform that gives you a fast & ergonomic way to build cloud-native services on a predictable, secure, and portable runtime — from the edge to the cloud — powered by WebAssembly.
EXAMPLES | BLOG | DESIGN DOCS
The What and Why of AssemblyLift
Microservice architecture & containers bring a number of benefits including greater scalability, high fault-tolerance, and faster deployment. 'Serverless' microservices and functions offer scale-to-zero and per-millisecond billing, with implied economic benefits, without having to manage any kind of server. An explosion of managed cloud services & APIs give developers more options than ever to delegate to a third party.
The problem with all of this is that there is now a large number of things — microservices, functions, data services & APIs, etc. — which all need to communicate and move data across all kinds of boundaries. The high surface area this creates becomes visible when you use infrastructure-as-code; it can take a large number of virtual cloud resources just to deploy a "simple" microservice or FaaS function in a typical production environment.
AssemblyLift wants to take the complexity out of building cloud-native applications.
AssemblyLift provides a batteries-included framework for building function-oriented microservices, portable across vendors and services like AWS and Kubernetes.
An AssemblyLift project is composed of services, which are in turn composed of functions. A function is code invoked by
some event, like an HTTP request. AssemblyLift functions are compiled WebAssembly modules, which
right now (as of v0.4) can be written in either the Rust or Ruby programming
languages. Services are declared in simple TOML documents called manifests. The AssemblyLift CLI
automates the process of compiling and/or packaging functions, generating Terraform HCL and/or Kubernetes YAML derived from
your manifests, and deploying images and code to the selected provider(s).
AssemblyLift leverages Wasm's deny-by-default, sandboxed environment to provide capability-based access to external services. The AssemblyLift runtime augments the Wasmtime runtime used internally with an ABI controlling access to IO Modules, which are accessed using an RPC protocol.
AssemblyLift is evolving quickly! See Releases to find the latest version & release details.
Download the latest
asml CLI for your system.
curl -O public.assemblylift.akkoro.io/cli/<version>/<triple>/asml chmod +x asml
<version> is the latest version (e.g.
<triple> is one of:
Alternatively you can install with Cargo using
cargo install assemblylift-cli.
Create a new project with
asml init -n my-project -l <lang> where
<lang> is one of
ruby; this is the language
of the default function that is generated for you in the default service
You can add a new function to any service with
asml make function <service-name>.<function-name> -l <lang>.
Add a new service with
asml make service <service-name>.
The process for generating an AssemblyLift deployment is called casting, and is invoked by running
asml cast in the
project root directory. All deployment artifacts & plans are serialized to the
net directory. To deploy your project,
Please see the official documentation for help with installing & learning to use AssemblyLift, and/or for more information about the project. You can also find more in-depth tutorials on the Akkoro Dev blog.
If you would like to contribute to the AssemblyLift project, please see CONTRIBUTING.md for details on how to get started! If you want to report a bug, please open an issue.
Contact & Social
For help with using AssemblyLift or to keep up with announcements, join us on Discord!
If you prefer we're also on Matrix. Try the Element client and find us at
You can follow @akkorocorp on Twitter.
The AssemblyLift source code is licensed under Hippocratic License 2.1.
The AssemblyLift CLI delegates some tasks to HashiCorp Terraform, which is licensed under Mozilla Public License 2.0.
AssemblyLift is made in Canada's far north-east