| Crates.io | wasmhub |
| lib.rs | wasmhub |
| version | 0.0.2 |
| created_at | 2026-01-12 22:22:52.678223+00 |
| updated_at | 2026-01-12 22:22:52.678223+00 |
| description | Download and manage WebAssembly runtimes for multiple languages |
| homepage | |
| repository | https://github.com/anistark/wasmhub |
| max_upload_size | |
| id | 2038949 |
| size | 122,609 |
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.
A centralized, open-source repository providing versioned WASM language runtimes that can be:
Think of it as: A package registry for WASM language runtimes (like npm, but for runtime binaries).
# Cargo.toml
[dependencies]
wasmhub = "0.1"
use wasmhub::{RuntimeLoader, Language};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let loader = RuntimeLoader::new();
// Download Node.js v20.2.0 (auto-cached)
let nodejs = loader.get_runtime(Language::NodeJs, "20.2.0").await?;
println!("Runtime at: {}", nodejs.path.display());
Ok(())
}
# Install
cargo install wasmhub --features cli
# Download runtimes
wasmhub get nodejs@20.2.0
wasmhub get python@3.11.7
# List available
wasmhub list
# Show info
wasmhub info nodejs
// Direct download
const url = 'https://cdn.jsdelivr.net/gh/anistark/wasmhub@latest/runtimes/nodejs/v20.2.0.wasm';
const response = await fetch(url);
const wasmBytes = await response.arrayBuffer();
| Language | Versions | Size | Source |
|---|---|---|---|
| Node.js | 18.x, 20.x, 22.x | ~50MB | nodebox |
| Python | 3.11.x, 3.12.x | ~35MB | Pyodide |
| Ruby | 3.2.x | ~20MB | ruby.wasm |
| PHP | 8.3.x | ~15MB | php-wasm |
| Go | 1.21.x | ~30MB | TinyGo |
| Rust | Latest | Varies | Native WASM target |
More languages coming soon! PRs welcome.
Build tools like StackBlitz/CodeSandbox without the proprietary runtime:
// Load Node.js in browser
let nodejs_wasm = loader.get_runtime(Language::NodeJs, "20.2.0").await?;
// Run user's project in WASM VM
Deploy language runtimes to Cloudflare Workers, Deno Deploy, etc.:
wasmhub get python@3.11.7
# Deploy to edge with Python support
Run tests in isolated WASM environments:
// Test with specific Node.js version
let node18 = loader.get_runtime(Language::NodeJs, "18.19.0").await?;
run_tests_with_runtime(node18)?;
Create online code editors with multiple language support:
// Student selects Python 3.12
const runtime = await fetchRuntime('python', '3.12.0');
executeCode(studentCode, runtime);
We welcome contributions! This project aims to be community-driven.
How to help:
See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.
This project builds upon the amazing work of:
The Problem: Language runtimes for WASM are scattered across different projects. Finding, downloading, and managing them is painful.
The Solution: A single, centralized repository with:
Join us in making WASM runtimes accessible to everyone! 🚀
Made with ❤️ by Kumar Anirudha