node:* engine & an object-pipe shell—with zero ASCII soup.
vbs runs node:https, node:fs,
node:crypto, node:child_process, and
vbs:shell 100% client-side in pure Vanilla JS. Pipe real JS objects, inspect
files, and spawn live servers through structured visual cards instead of a 1970s VT100 prompt.
vbs:shell)
Every pipeline passes typed JavaScript objects across stages—no ANSI escape codes, no text scraping, and zero edge server. Click any preset, tap visual stage blocks, or press / to compose.
Plain ES Modules running directly inside the browser tab—zero bundler, zero edge relay.
Typed JS object pipelines (ls | where | hash | sort), daemon process table, and non-ASCII visual cards.
Full createServer, request, and get over virtual ports & /etc/hosts.
Sync readFileSync/writeFileSync backed by persistent OPFS, plus sync SHA-256 & HMAC.
objectMode Readable/Transform streams, Buffer, and POSIX paths.
In-memory loopback, /etc/hosts DNS, BroadcastChannel multi-tab RPC, and /__vbs/:port.
Import vbs:shell or any node:* module directly from https://vbs.jao.life in any static HTML file.
<script type="importmap">
{
"imports": {
"vbs:shell": "https://vbs.jao.life/src/shell/shell.js",
"node:https": "https://vbs.jao.life/src/net/https.js",
"node:fs": "https://vbs.jao.life/src/sys/fs.js"
}
}
</script>
<script type="module">
import shell from "vbs:shell";
import fs from "node:fs";
fs.mkdirSync("/www", { recursive: true });
fs.writeFileSync("/www/app.json", JSON.stringify({ ready: true }));
// Run a structured object pipeline — zero terminal emulator needed!
const result = await shell.run("ls /www | where type == file | hash sha256");
console.log(result.value);
</script>
node:* API DemosDirect Vanilla JS module execution alongside the Terminalless Shell above.
import fs from "node:fs";
import crypto from "node:crypto";
const file = "/home/vbs/counter.json";
const prev = fs.existsSync(file)
? JSON.parse(fs.readFileSync(file, "utf8"))
: { runs: 0 };
const next = {
runs: prev.runs + 1,
updatedAt: new Date().toISOString(),
sha256: crypto.createHash("sha256")
.update(String(prev.runs + 1)).digest("hex").slice(0, 16)
};
fs.writeFileSync(file, JSON.stringify(next, null, 2));
All modules are dependency-free ES Modules with CORS enabled on https://vbs.jao.life/src/*.
| Specifier | Source Path | Key Exports |
|---|---|---|
vbs:shell | /src/shell/shell.js | run, parsePipeline, registerCommand, listDaemons, stopDaemon |
node:child_process | /src/sys/child_process.js | spawn, exec, execPipeline, ChildProcess (objectMode streams) |
node:https | /src/net/https.js | createServer, request, get, Server, Agent |
node:http | /src/net/http.js | createServer, request, get, IncomingMessage, ServerResponse |
node:fs | /src/sys/fs.js | readFileSync, writeFileSync, mkdirSync, readdirSync, statSync + OPFS sync |
node:crypto | /src/sys/crypto.js | Sync createHash('sha256'), createHmac('sha256'), randomBytes, randomUUID |
node:stream | /src/core/stream.js | Readable, Writable, Duplex, Transform, PassThrough (objectMode) |
node:buffer | /src/core/buffer.js | Buffer.from, alloc, concat, byteLength |
node:path / url / util / os / process | /src/{core,sys,kernel}/* | POSIX paths, URL, inspect/promisify, virtual cpus/env/cwd |