Overview
A JavaScript/TypeScript runtime in Rust and V8. One binary: bee.
What is Beejs?
Beejs is a JavaScript and TypeScript runtime built with Rust and Google V8. It ships as a single executable named bee.
It is built for agent tools and sandboxed scripts: run TypeScript without tsc, run Jest-style tests, host MCP/JSON-RPC tools, and do in-process tensors via bee:ai. It is not a drop-in Node.js replacement.
Use Beejs when you want:
- One binary for
run/eval/test/repl/mcp - TypeScript without
tsc(oxc transpile-only) - Capability sandbox for agent tools (
--sandbox,--seed,--freeze-time) - In-process tensors via
bee:ai(no Python sidecar)
Closest cousins: Deno (V8 + Rust, permissioned) and Bun (all-in-one CLI). Beejs keeps V8, adds an agent/MCP host, and labels every command Stable / Preview / Experimental.
Architecture
+-------------------------------------------------------------------+
| Application — JS / TS · tests · MCP tools · HTTP fetch |
+-------------------------------------------------------------------+
| Runtime APIs |
| Node compat (fs, http, buffer, …) |
| Web APIs (fetch, Streams, URL, Web Crypto) |
| bee:ai (Tensor, LLM, AgentPipeline) |
+-------------------------------------------------------------------+
| Engine — V8 isolate · oxc TS/TSX · Tokio I/O |
+-------------------------------------------------------------------+
| Host — capability broker · snapshots · Wasm backing stores |
+-------------------------------------------------------------------+
What is in v1.16.0
| Area | Status | Notes |
|---|---|---|
bee run / eval / repl | Stable | JS always; TS/TSX via oxc (Preview contract) |
bee test | Stable | Jest-style describe / test / expect |
bee:ai | Stable | Tensor / LLM / AgentPipeline in-process |
--sandbox / MCP / session | Preview | Default-deny I/O, seed, freeze-time |
bee serve | Preview | WinterCG fetch handler; --https is rustls HTTP/1.1 |
bee bundle / bee compile | Preview | oxc graph bundle; SEA trailer BEE_STANDALONE |
bee:wasm | Preview | Zero-copy Memory / ArrayBuffer |
Package manager (init/install/x) | Experimental | Lightweight; not npm-complete |
| Node API surface | Preview | Per-API. Conformance 5.0 is 55/55 |
The only user-facing capability map is Current Scope in the repo. Historical stage reports are not product promises.
Comparison
| Beejs 1.16.0 | Node.js | Bun | Deno | |
|---|---|---|---|---|
| Engine | V8 + Rust | V8 + C++ | JSC + Zig | V8 + Rust |
| TypeScript | oxc, transpile-only | loaders / tsc | built-in | built-in |
| Secure defaults | opt-in --sandbox | none | none | permission flags |
| Node API | incremental Preview | native | drop-in goal | compat layer |
| Test runner | built-in bee test | external | bun test | deno test |
| Native AI | bee:ai | — | — | — |
| Conformance scorecard | 55/55 fixtures | native | high | high |
Coverage is per-API, not “Node compatible.” Modules that exist today include fs, path, os, url, buffer, events, stream, crypto, http, http2, net, child_process (execSync / spawnSync), zlib, util, worker_threads. Web: fetch, Streams, Web Crypto, URL, Worker.
Performance
Public numbers belong in the repo benchmarks/ directory with hardware, command, and a correctness check. On Apple M2 Max (2026-09-16, Beejs vs Node v22.22.3 vs Bun 1.4.1):
- URL + URLSearchParams (20k): Beejs 7.28 ms, Node 12.54 ms
- fetch 100 sequential GETs: Beejs 6.51 ms, Node 17.00 ms
- ReadableStream 5k chunks: Beejs 0.92 ms, Node 1.16 ms
- Express 5.x: Beejs ~68k req/s, Node ~19k req/s
- CLI
eval 1+1mean: Beejs 18.47 ms, Node 27.53 ms, Bun 8.03 ms
Those are one machine, one commit. They are not SLAs. Bun still wins several microbenches and cold start.