Skip to content
cheerpx-self-hosting logo

CheerpX Self-Hosting Skill

cheerpx-self-hosting

Run x86 Linux binaries in the browser via WebAssembly. Self-host development environments, interpreters, and even this skill itself.

plurigrid/asi0installs67stars

SKILL.md

Full skill instructions

CheerpX Self-Hosting Skill

Run x86 Linux binaries in the browser via WebAssembly. Self-host development environments, interpreters, and even this skill itself.

Overview

CheerpX is Leaning Technologies' x86-to-WebAssembly virtualization engine. Combined with WebVM, it enables running full Linux systems in the browser with no server-side execution.

Key Capabilities

FeatureDescription
x86 → WASM JITDynamic binary translation, handles self-modifying code
Linux SyscallsFull syscall emulation layer (CheerpOS)
Block FilesystemVirtual block-based file system with persistence
NetworkingTailscale/​Headscale integration for inbound networking
Performance2x-10x slowdown vs native (varies by workload)

Self-Hosting Use Cases

  1. Run Nickel in browser - Evaluate .ncl configs without local install
  2. Run Guile/​Goblins - Distributed capability actors in browser
  3. Run Julia - Gay.jl SPI verification in browser
  4. Run the skill itself - Meta-circular self-hosting

Integration Points

With Goblins/​CapTP

The Goblins distributed actor system (from Spritely Institute) compiles to WASM via Hoot:

;; From goblins.scm - Hoot FFI for browser interop
(use-modules (fibers promises)
             (goblins)
             (hoot ffi))

(define (spawn-vat/​js name)
  (spawn-vat #:name name))

;; Capabilities can flow between WASM modules
(define (spawn/​js constructor . args)
  (spawn
   (lambda (bcom)
     (wrap-external-function
      (apply call-external constructor args)))))

CheerpX enables running the non-Hoot parts of the ecosystem (x86 Guile, native libraries).

With Nickel SPI

Configure CheerpX with deterministic, type-safe Nickel:

let CheerpXConfig = {
  # Memory configuration
  memory | {
    initial_mb | Num | default = 512,
    max_mb | Num | default = 4096,
  },

  # Filesystem
  filesystem | {
    type | [| 'block, 'overlay, 'memory |] | default = 'overlay,
    persist | Bool | default = true,
    cache_size_mb | Num | default = 256,
  },

  # Networking
  network | {
    tailscale | Bool | default = false,
    headscale_server | optional | Str,
  },

  # SPI seed for deterministic state
  spi_seed | Num,
} in

let DevEnvironment = CheerpXConfig & {
  memory.initial_mb = 1024,
  filesystem.persist = true,
  spi_seed = 20251226,
} in

DevEnvironment

With GF(3) Triadic Routing

Three execution tiers for capability-secure computing:

TierTritExecutionUse Case
Browser-1CheerpX/​WASMUntrusted, sandboxed
Edge0BrowserPodSemi-trusted, fast
Server+1Native x86Trusted, full speed

GF(3) conservation: Every capability request routes to exactly one tier, sum = 0.

Usage

Quick Start (HTML)

<!DOCTYPE html>
<html>
<head>
  <script src="https://cxrtnc.leaningtech.com/​1.0.6/​cx.js"></​script>
</​head>
<body>
  <script type="module">
    const cx = await CheerpX.Linux.create({
      mounts: [
        { type: "ext2", path: "/", url: "https://example.com/​rootfs.ext2" },
        { type: "devs", path: "/​dev" },
      ],
    });

    // Run Nickel in the browser
    await cx.run("/​usr/​bin/​nickel", ["eval", "/​config.ncl"]);

    // Run Guile for Goblins
    await cx.run("/​usr/​bin/​guile", ["-l", "/​goblins.scm"]);
  </​script>
</​body>
</​html>

Self-Hosting This Skill

# Build a rootfs with skill dependencies
docker run -it debian:bookworm bash
apt-get update && apt-get install -y nickel guile-3.0 julia
# Export as ext2 image

# Serve via CheerpX
npx serve --cors -l 8080

BrowserPod Integration

For full-stack environments with Node.js:

import { BrowserPod } from '@aspect/​browserpod';

const pod = await BrowserPod.create({
  runtime: 'node22',
  env: {
    GAY_SEED: '20251226',
    SPI_ENABLED: 'true',
  },
});

// Run skill in isolated browser pod
await pod.exec('npx', ['nickel', 'eval', 'spi_fast.ncl']);

Architecture

┌─────────────────────────────────────────────────────────────┐
│                      Browser Tab                             │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │   Nickel    │  │   Goblins   │  │   Julia     │         │
│  │   Config    │  │   Actors    │  │   Gay.jl    │         │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘         │
│         │                │                │                 │
│  ┌──────▼────────────────▼────────────────▼──────┐         │
│  │              CheerpX x86→WASM JIT              │         │
│  │         (handles self-modifying code)          │         │
│  └──────────────────────┬────────────────────────┘         │
│                         │                                   │
│  ┌──────────────────────▼────────────────────────┐         │
│  │           CheerpOS (Linux Syscalls)            │         │
│  │    - Process management                        │         │
│  │    - Virtual filesystem (ext2/​overlay)         │         │
│  │    - Networking (Tailscale tunnels)            │         │
│  └──────────────────────┬────────────────────────┘         │
│                         │                                   │
│  ┌──────────────────────▼────────────────────────┐         │
│  │              WebAssembly Runtime               │         │
│  │         (V8/​SpiderMonkey/​JavaScriptCore)       │         │
│  └───────────────────────────────────────────────┘         │
└─────────────────────────────────────────────────────────────┘

SPI Guarantees

CheerpX + SPI ensures:

  1. Deterministic JIT: Same x86 input → Same WASM output
  2. Reproducible Filesystem: Content-addressed blocks
  3. Consistent State: SPI seed propagates through all computations
// Verify SPI in browser
const color1 = await cx.run("/​usr/​bin/​julia", [
  "-e", "using Gay; println(gay_color(20251226, 1))"
]);
const color2 = await cx.run("/​usr/​bin/​julia", [
  "-e", "using Gay; println(gay_color(20251226, 1))"
]);
console.assert(color1 === color2, "SPI violation!");

Limitations

  • Performance: 2-10x slower than native (acceptable for dev/​testing)
  • Memory: Browser memory limits apply
  • Networking: Requires CORS proxy for some operations
  • GPU: No GPU acceleration (WebGPU integration planned)

References

License

This skill follows the repository license. CheerpX requires commercial licensing for business use.

More skills from plurigrid

cargo logo
plurigrid/asi

cargo

Rust package manager (36 subcommands).

67 0
View

Translate Figma nodes into production-ready code with 1:1 visual fidelity using the Figma MCP workflow (design context, screenshots, assets, and project-convention translation). Trigger when the user provides Figma URLs or node IDs, or asks to implement designs or components that must match Figma...

67 0
View

**Status**: 🌳 Production Ready (upstream in StringZilla v3+) **Type**: High-Performance String Operations / SIMD-Accelerated Text Processing **Principle**: Zero-copy views, SIMD/SWAR acceleration, deterministic hashing **Frame**: Cross-language interoperability (C, C++, Python, Rust, Go, Swift, ...

67 0
View
conformal-ga logo
plurigrid/asi

conformal-ga

Conformal Geometric Algebra (CGA) for circles, spheres, and Möbius transformations

67 0
View

Verifies code implements exactly what documentation specifies for blockchain audits. Use when comparing code against whitepapers, finding gaps between specs and implementation, or performing compliance checks for protocol implementations.

67 0
View
zig-systems logo
plurigrid/asi

zig-systems

Systems programming and performance optimization using Zig. Provides low-level abstractions, memory-safe compiled code, and performance benchmarking. Use for system-level operations, optimization, and interoperability with C/POSIX APIs.

67 0
View
paypal-mcp logo
plurigrid/asi

paypal-mcp

PayPal MCP server integration for invoices, payments, subscriptions, disputes, and transaction reporting via @paypal/mcp.

67 0
View
unison logo
plurigrid/asi

unison

Unison language - content-addressed functional programming with abilities for effects, distributed computing, and structural types. Use for pure functional code, effect management, distributed systems, and refactoring-safe codebases.

67 0
View
tasks-acset logo
plurigrid/asi

tasks-acset

Google Tasks management via TasksACSet. Transforms task operations into GF(3)-typed Interactions, routes to triadic queues, detects saturation for task-zero-as-condensed-state.

67 0
View
c logo
plurigrid/asi

c

World C Skill

67 0
View
syrup logo
plurigrid/asi

syrup

Syrup binary serialization for OCapN/CapTP wire format. Canonical encoding for capability messages.

67 0
View
skill-installer logo
plurigrid/asi

skill-installer

Install Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path. Use when a user asks to list installable skills, install a curated skill, or install a skill from another repo (including private repos).

67 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View