🚀 WasmHub
Open-source WASM Hub of language runtimes
Download and manage WASM runtimes for Node.js, Python, Ruby, PHP, Go, and more — all in one place.
🎯 What is this?
A centralized, open-source repository providing versioned WASM language runtimes that can be:
- Downloaded once, cached forever
- Used in any Rust project as a library
- Accessed via CLI tool
- Fetched via CDN for browser usage
Think of it as: A package registry for WASM language runtimes (like npm, but for runtime binaries).
⚡ Quick Start
As a Library (Rust)
# Cargo.toml
[]
= "0.3"
= { = "1", = ["full"] }
use ;
async
As a CLI Tool
# Install
# Download runtimes
# List available
# Show info
Via CDN (Browser)
// From GitHub Releases
const url = 'https://github.com/anistark/wasmhub/releases/latest/download/go-1.23.wasm';
const response = await ;
const wasmBytes = await response.;
🌟 Features
- ✅ Multi-language support — Go, Rust, Node.js (more coming soon)
- ✅ Version management — Pin to specific versions
- ✅ Smart caching — Download once, use forever
- ✅ Type-safe API — Rust library with compile-time guarantees
- ✅ Multi-CDN fallback — GitHub Releases + jsDelivr with automatic failover
- ✅ Retry with backoff — Exponential backoff on transient failures
- ✅ SHA256 verification — Integrity checks on every download
- ✅ Cross-platform — Works on Windows, macOS, Linux
📦 Available Runtimes
| Language | Versions | Size | Status | About |
|---|---|---|---|---|
| Go | 1.23 | 261 KB | ✅ Available | Built with TinyGo, supports filesystem, env, args, stdio |
| Rust | 1.82 | 76 KB | ✅ Available | Full std library support with wasm32-wasip1 target |
| Node.js | 20 | — | 🚧 Alpha | Built with QuickJS (ES2020), supports eval, run, stdio, env, filesystem via WASI |
| swc | 73 | ~2.4 MB | 🚧 Alpha | TypeScript → JavaScript transpiler (tool, not a language runtime): strips types, lowers TSX and ES modules to CommonJS for the Node.js runtime. MVP-only WASM for interpreter compatibility |
| Python | — | — | 🔜 Coming Soon | — |
| Ruby | — | — | 🔜 Coming Soon | — |
| PHP | — | — | 🔜 Coming Soon | — |
All three runtimes target WASI Preview 1 (wasip1). Node.js v20 is in alpha — size will be updated on release.
More languages and versions coming soon! Contributions welcome. ✨
📥 CLI Reference
Installation
Commands
Language Aliases
| Language | Accepted values |
|---|---|
| Node.js | nodejs, node, node.js |
| Python | python, py |
| Ruby | ruby, rb |
| PHP | php |
| Go | go, golang |
| Rust | rust, rs |
| swc | swc |
Examples
# Download latest Go runtime
# Download specific version
# Force re-download even if cached
# See what's cached locally
# Clear everything
📚 Library Usage
use ;
async
Builder Configuration
use ;
use PathBuf;
let loader = builder
.cache_dir
.cdn_sources
.max_retries
.initial_backoff_ms
.max_backoff_ms
.build?;
Cargo Features
| Feature | What it enables | Default |
|---|---|---|
| (none) | Library only | ✅ |
progress |
Download progress bars (indicatif) |
No |
cli |
CLI binary + clap, anyhow, colored + progress |
No |
📥 Downloading Runtimes
WASM runtime binaries are built and published automatically on each GitHub Release.
From GitHub Releases
# Download the latest Go runtime
# Download the global manifest
Manifest Format
Each runtime has a per-language manifest.json:
🚀 Use Cases
1. Browser-Based Development Environments
Build tools like StackBlitz/CodeSandbox without the proprietary runtime:
let nodejs_wasm = loader.get_runtime.await?;
2. Serverless Edge Functions
Deploy language runtimes to Cloudflare Workers, Deno Deploy, etc.:
3. Testing Frameworks
Run tests in isolated WASM environments:
let node18 = loader.get_runtime.await?;
run_tests_with_runtime?;
4. Educational Platforms
Create online code editors with multiple language support:
const runtime = await ;
;
📖 Documentation
- Docs Site — Getting started, CLI reference, library guide, architecture (coming soon)
- API Documentation — Full Rust API reference
- wasmrun Documentation — WASMRUN docs, and guide
- llms.txt / llms-full.txt — LLM-friendly index and full-content dump of the docs
🤝 Contributing
We welcome contributions! This project aims to be community-driven.
How to help:
- 🐛 Report bugs or request features via Issues
- 🔧 Submit PRs for new runtimes or improvements
- 📖 Improve documentation
- ⭐ Star the repo to show support
See CONTRIBUTING.md for guidelines.
🌐 Community & Support
📄 License
MIT License — see LICENSE for details.
🙏 Acknowledgments
This project builds upon the amazing work of:
- Pyodide — Python in WASM
- ruby.wasm — Ruby in WASM
- CodeSandbox — nodebox inspiration
- Wasmer — WASM runtime ecosystem
Made with ❤️ by Kumar Anirudha