Getting started
The following guide will help you install the tooling and spin up an Atmo instance on your computer for local development.
Prerequisites
As of the time of writing, subo does not officially support the Windows operating system. You may, however, try installing and using subo on WSL2.
First, you will need to have the subo CLI and Docker installed.
- Docker will be used to build Runnables and run the Atmo development server.
- To install subo, visit its GitHub repository and follow the instructions in the README.
Creating a Project
With subo installed, you can now create a project:
subo create project important-api
The project contains two important things: a Directive.yaml file,
and an example Runnable called helloworld written in Rust.
The Directive file defines route
handlers and connects Runnables to them.
Overview
In the Directive file, you'll see a handler set up for you that
serves the POST /hello route using the helloworld Runnable:
# the Directive is a complete description of your application, including all of its business logic.
# appVersion should be updated for each new deployment of your app.
# atmoVersion declares which version of Atmo is used for the `subo dev` command.
identifier: com.suborbital.important-api
appVersion: v0.1.0
atmoVersion: v0.2.3
handlers:
  - type: request
    resource: /hello
    method: POST
    steps:
      - fn: helloworld
Building and Running
The subo command line tool is used again here to build and run your Atmo project.
Building
Inside the important-api directory run:
subo build .
This automatically compiles each of your Runnables in a Docker container and bundles
them together in runnables.wasm.zip to be used in Atmo.
⏩ START: building Runnables in .
ℹ️  🐳 using Docker toolchain
⏩ START: building Runnable: helloworld (rust)
    Updating crates.io index
[...]
✅ DONE: Bundle was created -> runnables.wasm.zip @ v0.1.0
If you prefer not to use Docker, you can also build your Runnables natively.
Running a development server
Now that we have our application Bundle built, we can start a development server.
In the important-api directory, run:
subo dev
This creates a Docker container running Atmo, copies your runnables.wasm.zip into
the container, and starts an Atmo server listening on http://localhost:8080.
You can test the /hello route in a second terminal by sending a POST request
with a body to it:
curl localhost:8080/hello -d 'from the Kármán line!'
Atmo runs and responds successfuly if you get a 200 OK response with the request body replayed to you in the response.