🚀 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.1"
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 (more coming soon)
- ✅ Version management - Pin to specific versions
- ✅ Smart caching - Download once, use forever
- ✅ Type-safe API - Rust library with compile-time guarantees
- ✅ Fast downloads - Parallel, resumable transfers
- ✅ CDN distribution - Served via jsDelivr for browser access
- ✅ SHA256 verification - Integrity checks built-in
- ✅ Cross-platform - Works on Windows, macOS, Linux
📦 Available Runtimes
| Language | Versions | Size | Status | About |
|---|---|---|---|---|
| Go | 1.23 | 261KB | 🚀 Upcoming Release | Built with TinyGo, supports filesystem, env, args, stdio |
| Rust | 1.82 | 76KB | 🚀 Upcoming Release | Full std library support with wasm32-wasip1 target |
| Node.js | - | - | 🚧 Coming Soon | - |
| Python | - | - | 🚧 Coming Soon | - |
| Ruby | - | - | 🚧 Coming Soon | - |
| PHP | - | - | 🚧 Coming Soon | - |
More languages and versions coming soon! Contributions welcome. ✨
📥 Downloading Runtimes
WASM runtime binaries are built and published automatically on each GitHub Release.
From GitHub Releases
# Download the latest Go runtime
# Download a specific version's manifest
Using the CLI
# The CLI automatically fetches from releases
Manifest Format
Each runtime has a manifest.json describing available versions:
🚀 Use Cases
1. Browser-Based Development Environments
Build tools like StackBlitz/CodeSandbox without the proprietary runtime:
// Load Node.js in browser
let nodejs_wasm = loader.get_runtime.await?;
// Run user's project in WASM VM
2. Serverless Edge Functions
Deploy language runtimes to Cloudflare Workers, Deno Deploy, etc.:
# Deploy to edge with Python support
3. Testing Frameworks
Run tests in isolated WASM environments:
// Test with specific Node.js version
let node18 = loader.get_runtime.await?;
run_tests_with_runtime?;
4. Educational Platforms
Create online code editors with multiple language support:
// Student selects Python 3.12
const runtime = await ;
;
📖 Documentation
- API Documentation - Full Rust API reference
- Contributing Guide - Help build this project
🤝 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
- GitHub Discussions: Ask questions, share ideas
- Twitter: @anistark
📄 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
⚡ Why WASM Runtime?
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:
- ✅ Versioned runtimes for multiple languages
- ✅ Consistent APIs (Rust library + CLI)
- ✅ CDN distribution for browsers
- ✅ Smart caching and integrity verification
- ✅ Open-source and community-driven
Join us in making WASM runtimes accessible to everyone! 🚀
Made with ❤️ by Kumar Anirudha