Introduction

Installation

Hopskip is pre-release software and builds from source. There are two parts to install: the hop CLI (which bundles the local dev stack: server, worker, and console API, behind hop dev) and a guest-language toolchain for whichever language your workflows are written in.

No published packages yet. Nothing is on crates.io, npm, PyPI, or Hackage at this time. Everything below builds from a checkout of github.com/iand675/aion. Package publication is on the roadmap.

The CLI

You need a stable Rust toolchain and nothing else:

git clone https://github.com/iand675/aion
cd aion

# The Rust sample guests compile to wasm32-unknown-unknown:
rustup target add wasm32-unknown-unknown

cargo build -p hopskip-cli --release
# The binary is target/release/hop; put it on your PATH:
export PATH="$PWD/target/release:$PATH"

hop --version

There are no build features to pick and no database to install. hop logs reads the visibility projection, which embeds SQLite compiled from source as part of an ordinary build (about a minute the first time, cached after that). The resulting binary runs anywhere, with no shared library beside it and no LD_LIBRARY_PATH.

Already have hop installed? hop update replaces it with the newest release; see the CLI reference.

The full command set is hop build | deploy | dev | run | describe | logs | typegen | plan | dependents | suspensions | drain | migration | gc | dlq | canary | deploy-breaker | quarantine | audit | debug | replay; see the CLI reference.

If you want the server without the dev stack, the standalone binary is cargo build -p hopskip-server --release (target/release/hopskip-server). The standalone worker is cargo build -p hopskip-wasm-worker --release.

Guest language toolchains

Workflows compile to sandboxed Wasm modules. What you need depends on the language:

Rust

Nothing beyond the CLI prerequisites. hop build runs cargo build --target wasm32-unknown-unknown for you. Write against the in-tree hopskip-sdk crate (sdk/rust/hopskip-sdk); sdk/rust/hello-workflow is the minimal example.

TypeScript, Python, Haskell, Go

Rust, TypeScript, Haskell and Go compile through per-language native-guest/build.sh drivers that provision their own toolchains; Python goes through sdk/py/pyodide-guest/build.sh, which fetches a pinned Pyodide rather than building an interpreter. The wasm drivers want a pinned interpreter runtime plus wasi-sdk, the GHC Wasm backend for Haskell, and Go 1.24’s wasip1 support for Go. The in-tree provisioning currently targets macOS arm64. On other platforms, use the Nix dev shell below. Cross-platform hop build is tracked productization work.

The Nix dev shell (contributors, non-Rust guests)

The source tree pins every toolchain through a Nix flake plus devenv and direnv: Rust with both wasm targets, wasmtime, wasm-tools, cargo-nextest, and the GHC Wasm backend.

# One-time: authorize the environment.
direnv allow

# Or, without direnv:
nix develop --impure --accept-flake-config

This is the recommended environment for working on Hopskip itself, and the reliable path for building non-Rust guests today.

Verifying your setup

Run the golden path from Getting started:

hop build --manifest-path sdk/rust/hello-workflow/Cargo.toml \
  --task-type hopskip:hello.greet@1
hop deploy <hash> --namespace default
hop dev          # terminal 1
hop run hopskip:hello.greet@1 --input world   # terminal 2 (with printed env)

If hop run prints the greeting, your toolchain works end to end.

Maturity note. The guest ABI (hopskip:workflow@0.1) is frozen and conformance-tested across five languages. The CLI surface and operator ergonomics still move freely before GA. This page documents only what ships in the tree today.