Skip to content
A serverless web application framework for collaboration and scale.
Rust Go JavaScript HTML Shell HCL Other
Branch: master
Clone or download
Latest commit 5eaa6b6 Jan 12, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
build http protobuf (#14) Jan 8, 2020
compilers Local dev improvements (#11) Jan 1, 2020
embly-rs embly-rs 0.0.5 Jan 11, 2020
embly-wrapper-rs wrapper 0.0.2 Jan 11, 2020
examples updated readme Jan 11, 2020
tests Nix/Circleci/Docs (#13) Jan 6, 2020
tools http protobuf (#14) Jan 8, 2020
.dockerignore Nix/Circleci/Docs (#13) Jan 6, 2020
.gitignore http protobuf (#14) Jan 8, 2020
Makefile add build_blog_examples Jan 11, 2020
go.mod Local dev improvements (#11) Jan 1, 2020
go.sum readme fix Jan 11, 2020
rustfmt.toml Tool MVP (#2) Aug 11, 2019


A serverless web application framework for collaboration and scale.

For more background and details about what embly is read here or here

Hello World

Create a new folder and add the following files and directory structure:

├── embly.hcl
└── hello
    ├── Cargo.toml
    └── src

Now add the following file contents:


function "hello" {
  runtime = "rust"
  path    = "./hello"

gateway {
  type = "http"
  port = 8765
  route "/" {
    function = "${function.hello}"


name = "hello"
version = "0.0.1"
edition = "2018"

embly = "0.0.5"


extern crate embly;
use embly::{
  http::{run_catch_error, Body, Request, ResponseWriter},

async fn execute(_req: Request<Body>, mut w: ResponseWriter) -> Result<(), Error> {
  w.write_all(b"Hello World")?; // writing our hello response bytes
  Ok(()) // if an error is returned the server will respond with an HTTP error

// this function is run first
fn main() {
  run_catch_error(execute); // this is the embly::http::run function that is specific to http responses

You can now run your project for local development with embly dev, although the fastest way to get started is with docker:

docker run -v /var/run/docker.sock:/var/run/docker.sock  -v $(pwd):/app -p 8765:8765 -it embly/embly embly dev

More on how to run embly in the installation section.

The embly Command

$ embly
Usage: embly [--version] [--help] <command> [<args>]

Available commands are:
    build     Build an embly project
    bundle    Create a bundled project file
    db        Run various database maintenace tasks. 
    dev       Develop a local embly project
    run       Run a local embly project


embly uses docker to download and run build images. It's recommended that you run embly from within a docker container and give it access to the docker socket. If you are in the root of an embly project you can start the dev server like so:

docker run -v /var/run/docker.sock:/var/run/docker.sock  -v $(pwd):/app -p 8765:8765 -it embly/embly embly dev

If you would like to run embly locally you'll need to have cargo and go installed. The following sequence of commands should work:

go get
cargo install embly-wrapper
cargo install lucetc


embly used to be wasabi, which was more focused on providing full operating system functionality within a webassembly runtime. That code is available here.

You can’t perform that action at this time.