Today we're announcing Halcyon Edge Runtime -- a lightweight, V8-based execution environment designed for deploying server-side JavaScript and TypeScript to the edge. Your code runs in 280+ locations worldwide, with cold starts under 50ms and automatic scaling to zero.

We've been running this in beta with 200+ teams for the past four months, and the results have exceeded our expectations. Edge Runtime now powers over 3 billion requests per month across our customer base.

Why We Built This

Existing edge runtimes force a choice: compatibility or performance. You either get a full Node.js environment with 500ms+ cold starts, or a stripped-down runtime that breaks half your dependencies. We wanted both: broad Web API compatibility with sub-50ms cold starts.

Edge Runtime achieves this through V8 isolate snapshots (see our cold starts deep-dive), a custom module loader that eliminates redundant parsing, and a compatibility layer that implements 94% of the Web Platform APIs that matter for server-side code.

Key Features

  • Sub-50ms cold starts. V8 heap snapshots, pre-warmed isolate pools, and predictive warming combine to keep latency imperceptible.
  • 280+ edge locations. Your code runs within 50ms of 95% of the world's internet-connected population.
  • Web-standard APIs. Fetch, Streams, Crypto, URL, TextEncoder/Decoder, Cache API, and more -- all implemented natively.
  • TypeScript-first. Write TypeScript directly. No build step required. We handle transpilation at deploy time and cache the result.
  • Scale to zero. You don't pay for idle. When traffic stops, your isolates are reclaimed. When it returns, you're back in under 50ms.
  • Built-in KV and Durable Objects. Persistent state at the edge, without managing infrastructure. Key-value storage for simple lookups, Durable Objects for coordination and stateful logic.

Getting Started

Deploy your first edge function in under a minute:

halcyon.config.ts
123456789101112131415161718192021
// halcyon.config.ts
import { defineConfig } from "halcyon";

export default defineConfig({
  name: "my-api",
  routes: [
    {
      path: "/hello",
      handler: "./src/hello.ts"
    }
  ]
});

// src/hello.ts
export default {
  async fetch(request: Request): Promise<Response> {
    const geo = request.cf?.city ?? "somewhere";
    return new Response(
      JSON.stringify({ message: `Hello from ${geo}!` }),
      { headers: { "Content-Type": "application/json" } }
    );
  }
};

Then deploy with a single command:

terminal
123456789
# Install the CLI
npm install -g halcyon

# Deploy to 280+ edge locations
halcyon deploy

  Deploying my-api...
  Snapshot created (2.1 MB)
  Deployed to 284 locations in 1.8s
  https://my-api.halcyon.run

Edge Runtime is available today on all plans, including the free tier. Check the documentation to get started, or jump into our Discord if you have questions.

Free tier includes 100K requests/day with 10ms CPU time per request, 1 GB KV storage, and access to all 280+ edge locations. No credit card required.