Skip to content

WasmKeep v0.1.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 14:34
· 131 commits to main since this release
v0.1.0
43e0119

The first release, published as a pre-alpha pre-release: for trying
WasmKeep, side projects and staging, not production. See the
roadmap for what comes next.

What is in it

  • Actors: WebAssembly components (wasmkeep:actor@0.2.0 WIT world),
    one instance per name, events one at a time, a SQLite database each,
    hibernation, alarms that fire at least once, calls between actors,
    WebSockets that stay open while an actor sleeps, outbound HTTP limited to
    public addresses, and hot reload with wasmkeep dev.
  • Clusters: several nodes on one S3-compatible bucket with conditional
    writes, each actor on one node at a time, its database replicated to the
    bucket and restored on another node when its node dies (free 15 to about
    21 s after the node's last write, then the restore). One lease per node,
    checked in deterministic simulation. Mutual TLS between nodes, required
    by default.
  • Operating a cluster: wasmkeep deploy (rolling, with rollbacks,
    access rules and configuration), wasmkeep cluster status, drain,
    fence and forget, wasmkeep actor move, wasmkeep secrets (sealed
    in the bucket), garbage collection of old history in the bucket,
    Prometheus metrics, health and readiness endpoints, and a Grafana
    dashboard.
  • Languages: Rust (recommended); Zig and C/C++; TypeScript (QuickJS
    by default, StarlingMonkey as an option) and Python; Go through TinyGo
    (experimental). Tiers and numbers.
  • SDK patterns on actors: sharded key-value store, queues and durable
    workflows (KV and queues,
    workflows).
  • Packaging: binaries for x86_64 and aarch64 Linux (glibc 2.28 or
    newer), each with a CycloneDX SBOM and third-party notices; a
    distroless image for linux/amd64 and linux/arm64 at
    ghcr.io/wasmkeep/wasmkeep:0.1.0; all signed with keyless cosign. A
    three-node Compose example against MinIO in
    deploy/compose/.

Known limits

  • Not production-ready: soaked against Cloudflare R2 and OVHcloud Object
    Storage with nodes killed under load, nothing lost, but not yet carrying
    real users' traffic, and not run against AWS S3
    (measured).
  • Upgrade every node of a cluster together: nodes of different versions
    are not supported in one cluster
    (upgrading).
  • One tenant per process (security).
  • No independent third-party security audit yet
    (security).
  • The performance targets on dedicated hardware are not measured yet;
    millions of actors per cluster are a goal, not a measurement.

Install and verify

Single node checks the
binaries with cosign; Compose checks the image.