A lightweight gateway programmable with JavaScript.
Route requests, rewrite URLs, and proxy to backends using Web APIs you already know — fetch(), Request, Response, Headers. Write your gateway logic in JavaScript, get auto HTTPS with ACME, and scale to 300k+ req/sec on a single machine.
Single binary. Zero dependencies. Top-tier performance with top-tier usability.
const app = new App();
app.get('/hello', () => new Response('Hello World!'));
app.all('/*', (req) => {
return fetch(req, { target: 'https://httpbin.org' });
});
export default app;
:id) and wildcards (*)client ──► HTTP/HTTPS ──► JS Handler ──► fetch ──► backend
| | |
ACME Route TLS
Chunked Rewrite DNS
Keep-alive Access
Access Log Headers
Gzip
JSRealm delivers 128k requests/sec for proxy workloads — 33% faster than Bun, 3x faster than Caddy, 6x faster than Node.js.
Memory usage stays at 6MB under load, while Bun uses 50MB, Caddy 41MB, and Node.js 274MB.
Fetch/Proxy Requests/sec Memory (RSS)
------------------------------------------------------
JSRealm 128,703 (baseline) 6 MB (baseline)
Bun 96,375 (-25%) 50 MB (+733%)
Caddy 42,145 (-67%) 41 MB (+583%)
Node.js 21,663 (-83%) 274 MB (+4467%)