Run WebAssembly & Python in your browser with REAL-TIME streaming output!
- WASI Preview 2 Components - Full std library support for WebAssembly
- Python Runtime - 27MB WASI-compiled Python interpreter
- Real-time Output Streaming - See output as it happens
- INT10H Graphics Protocol - Retro graphics rendering in terminal
- Run Groups - Organize and filter apps by category
- WebSocket Communication - Bidirectional real-time messaging
- File Manager - Upload, view, and manage files
- Multi-app Support - Run multiple WASM/Python apps simultaneously
- Cyber-punk aesthetic with neon glow effects
- XTerm.js terminal with CRT scanlines
- Drag & drop upload for WASM and Python files
- Live metrics display (CPU, Memory, Runtime)
- Responsive 3-panel layout
- Canvas overlay for graphics rendering
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ WebUI (Yew/WASM) โ
โ โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ โ
โ โ App List โ Terminal โ Controls โ โ
โ โ โ XTerm.js โ โ โ
โ โโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโWebSocketโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ UNIC0RN Server (Rust) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Wasmtime Runtime (WASI P2) โ โ
โ โ โโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ โ โ
โ โ โ WASM โ Python โ TCP Server โ โ โ
โ โ โComponent โ Runtime โ (Port 1337) โ โ โ
โ โ โโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- Rust 1.75+ with
wasm32-wasip2andwasm32-unknown-unknowntargets - Trunk for WebUI building
cargo run --bin unic0rn_servercd unic0rn_web_next
trunk serve --open# Upload WASM component
cargo run --bin unic0rn_cli -- upload target/wasm32-wasip2/release/app.wasm
# Upload Python script
cargo run --bin unic0rn_cli -- upload-python script.py- Click "UPLOAD FILE" or drag & drop
- Select app from list
- Click "START" to run
unic0rn/
โโโ unic0rn_server/ # Main server with Wasmtime runtime
โโโ unic0rn_web_next/ # V2.0 WebUI (Yew + XTerm.js)
โโโ unic0rn_cli/ # Command-line client
โโโ unic0rn_data/ # Shared data structures
โโโ unic0rn_sdk/ # SDK for building WASM apps
โโโ examples/ # Example apps and demos
โ โโโ python/
โ โ โโโ int10h/ # Graphics demos
โ โ โโโ tests/ # Test scripts
โ โ โโโ interactive/ # REPL examples
โ โโโ wasm/ # WASM examples
โโโ docs/ # Documentation
Custom escape sequence protocol for rendering graphics in the terminal:
ESC[10;<cmd>;<params>h
- Clear (0):
ESC[10;0h- Clear canvas - Rectangle (1):
ESC[10;1;<x>;<y>;<w>;<h>;<color>h - Sprite (2):
ESC[10;2;<x>;<y>;<w>;<h>;<base64_data>h - Text (3):
ESC[10;3;<x>;<y>;<color>;<text>h - Line (4):
ESC[10;4;<x1>;<y1>;<x2>;<y2>;<color>h - Circle (5):
ESC[10;5;<x>;<y>;<radius>;<color>h
# Draw a cyan rectangle
print(f"\x1b[10;1;10;10;100;50;#00FFFFh", end='', flush=True)# Create new app
cargo new --lib my_app
cd my_app
# Add WASI target
rustup target add wasm32-wasip2
# Build as component
cargo build --release --target wasm32-wasip2# Run all tests
cargo test --all
# Run specific example
cargo run --bin unic0rn_cli -- upload examples/python/int10h/int10h_demo.pycd unic0rn_web_next
# Development server with auto-reload
trunk serve --open
# Production build
trunk build --releaseenum ClientMessage {
ListApps,
StartApp { uuid: Uuid },
StopApp { uuid: Uuid },
DeleteApp { uuid: Uuid },
UploadFile { name: String, data: Vec<u8> },
TTYInput { uuid: Uuid, data: Vec<u8> },
}enum ServerMessage {
AppList(Vec<AppInfo>),
AppStarted { uuid: Uuid },
AppStopped { uuid: Uuid, reason: String },
AppOutput { uuid: Uuid, data: Vec<u8> },
AppMetrics { uuid: Uuid, metrics: ResourceStats },
}Edit unic0rn_web_next/assets/styles/v1b3c0r3.css to customize colors:
:root {
--cyber-pink: #FF007F;
--cyber-cyan: #00FFFF;
--matrix-green: #00FF41;
--void-black: #0A0A0A;
}Apps are automatically categorized by name patterns:
test_*โ TEST groupdemo_*โ DEMO groupint10h_*โ GFX groupserver_*โ NET group
- Ensure building with
wasm32-wasip2target (notwasm32-wasi) - Check server logs for
StreamWritermessages - Verify WebSocket connection in browser console
- Clear browser cache (Ctrl+Shift+R)
- Check trunk serve is running on port 8080
- Verify no CSP violations in console
- Python runtime has limited stdlib
- No pip/external packages available
- Use built-in modules only
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'โจ Add amazing feature') - Push to branch (
git push origin feature/amazing) - Open Pull Request
MIT License - See LICENSE file
- Wasmtime - WebAssembly runtime
- XTerm.js - Terminal emulator
- Yew - Rust/WASM framework
- Trunk - WASM web bundler
Built with ๐ by the UNIC0RN team
LET'S FUCKING GOOOOO!!! ๐