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.