Functions

One handler, one trigger. No container, no scaling config. The mesh handles cold start, hot path, scale-out, and tear-down. Billed in joules per invocation — an idle function literally costs nothing.

A function

// hello.js — exported as the default handler
export default async function (req) {
  const body = await req.json();
  return new Response(JSON.stringify({ hello: body.name }), {
    headers: { "content-type": "application/json" },
  });
}

Deploying

invisible fn deploy hello.js   --route /hello   --runtime node-22   --memory 256MB

Live in a few seconds at https://<account>.fn.greenjoules.cloud/hello. Or attach a custom domain via the route block.

Runtimes

RuntimeNotes
node-22, node-20V8 isolate, sub-10ms cold start
python-3.13, python-3.12Standalone CPython, ~150ms cold start
rust-stableWASM-compiled, ~5ms cold start
deno-2Native Deno runtime with full standard library
bun-1Native Bun runtime, fastest for HTTP-bound work
wasi-preview-2Bring your own .wasm

Triggers

Energy & billing

Cold start joules + execution joules + waiting-on-IO joules (which are tiny, because the runtime is suspended). Each invocation produces a receipt with energy.cold_start_j and energy.execution_j as separate fields so you can see what your function actually costs.

Limits at launch

Compared to Lambda / Cloud Functions / Cloudflare Workers

Joule-billed instead of GB-second-billed, no per-region deploys (one deploy, the mesh places it), and the cold-start cost shows up on the receipt instead of being invisible. For request-heavy edge work, very competitive on price. For long-running batch work, prefer Compute.