Bun
The fastest cold start. An alternative to Node for modern apps.
Functions-as-a-Service on our edge in-country. Node 22, Python 3.12, Bun, Go, Rust — deploy with a single command. Cold start 38 ms, per-second billing with 100ms rounding. HTTP, Schedule, Queue, S3 events — out of the box.
Node · Python · Bun · Go · Rust · per-second billing · 1M invocations free
AWS Lambda — slow cold starts, dollars, weird event objects. Your own container — you pay for idle. We tried to take the best of both worlds.
Deploy with a single command, no custom event objects. Plain HTTP handler, 38 ms cold start on Node 22, per-second billing rounded to 100 ms.
# 1. deploy with a single command
$ h3 fn deploy ./api/handler.ts \
--runtime=node22 \
--memory=256 \
--timeout=30s \
--domain=api-handler.h3llo.cloud
✓ Bundling (esbuild) 142 ms
✓ Uploading 1.8 MB 980 ms
✓ Deployed v17 · cold-start 38 ms
$ curl https://api-handler.h3llo.cloud/health
{"ok":true,"region":"msk-1","cold":true}
$ curl https://api-handler.h3llo.cloud/health
{"ok":true,"region":"msk-1","cold":false}// handler.ts — standard HTTP, no custom event objects
import { kv } from "@h3llo/edge";
export default async (req: Request): Promise<Response> => {
const url = new URL(req.url);
if (url.pathname === "/health") {
return Response.json({ ok: true, region: "msk-1" });
}
if (url.pathname === "/count") {
const n = await kv.incr("hits");
return Response.json({ hits: n });
}
return new Response("not found", { status: 404 });
};Measured with a 1.8 MB package, no-op handler, 256 MB of memory, msk-1 region. Numbers from our production cluster, not from a lab.
The fastest cold start. An alternative to Node for modern apps.
The most common runtime. Full compatibility with the npm ecosystem.
TypeScript out of the box, secure by default. Good fit for edge handlers.
asyncio, FastAPI, Flask — all work. ML deps via layers.
Single-file binary, the fastest warm latency on CPU-bound tasks.
Minimal cold start, zero-cost runtime. For latency-critical APIs.
Your own OCI image — any language or system dependency you need.
Custom domain, TLS, CORS, IP allow-list. WebSocket for long-lived. Standard Request/Response interface.
Cron syntax down to second granularity. Distributed locking — the function won't fire twice.
Our own queue, S3 events, webhooks from external systems. At-least-once or exactly-once (by subscription).
Background jobs up to 15 minutes. Async handler with progress. Auto-retry with exponential backoff.
1M invocations and 400,000 GB-seconds per month — free. After that — per-second with 100ms rounding. Fixed warm pool — for SLA-critical APIs.
Real practices, benchmarks, migrations. No fluff and no marketing — grab the PDF, apply it Monday.
Cold start, idempotency, retry, idempotency keys, observability — what you must check. ~12 min.
→Guide · 24 ppWhat's under the hood of our FaaS. Process snapshots, smart routing, V8 isolates. ~25 min.
→Case · LazyboardLazyboard: migrating 64 functions in 2 days. What we rewrote (a little), what we kept (almost everything), what broke (only IAM). ~18 min.
→Guide · 18 ppSecrets, RBAC, audit for serverless functions. How to hold API keys, what to write in the audit log, how to isolate a breach in a single function. ~22 min.
→Benchmark · 2025FaaS benchmark: Lambda vs CF Workers vs h3llo. Cold/warm latency, p50/p95/p99, prices per 1M invocations. ~15 min.
→Templates · GitHubReady modules: function + queue + KV + observability. Production-ready for dev/staging/prod. 5 modules.
→No portal, no YAML manifests, no container builds. Just handler → deploy.
`brew install h3llo/tap/cli` · or `curl get.h3llo.cloud | sh`.
Standard `(req) => Response` on Node, Python, Bun, Go, Rust. No custom event objects.
`h3 fn deploy ./handler.ts` · 11 seconds. Custom domain handed out immediately.
HTTP, Schedule, Queue, S3 events, WebSocket. Per-function config via CLI or Terraform.
Standard HTTP handler, per-second billing, cold start 38 ms, 1M invocations free. No vendor lock-in — grab the handler file and deploy it anywhere.