Written in Koder Lang

Meet Jet

A fast, minimal, batteries-included web server. Auto HTTPS, multi-protocol, and expressive routing -- all in one binary.

server.kd
import jet

app = jet.new()

app.get "/" do |ctx|
  ctx.json { message: "Hello from Koder Jet!" }
end

app.listen 3000

Everything you need, nothing you don't

Koder Jet ships with production-ready features out of the box. No plugins to install, no dependencies to manage.

Auto HTTPS

Automatic TLS certificates via ACME. Zero-config HTTPS with automatic renewal and OCSP stapling.

HTTP/1.1, HTTP/2 & HTTP/3

Full multi-protocol support including QUIC-based HTTP/3 for ultra-low latency connections.

Middleware Pipeline

Composable middleware stack with before/after hooks, error recovery, CORS, rate limiting, and auth.

Reverse Proxy & Load Balancer

Built-in reverse proxy with round-robin, least-connections, and weighted load balancing strategies.

WebSocket & SSE

First-class WebSocket and Server-Sent Events support with automatic upgrade negotiation.

Radix Tree Router

High-performance radix tree routing with O(k) lookups, parameterized paths, and wildcards.

gRPC

Native gRPC server and client with protobuf support, streaming, and automatic service reflection.

OpenAPI Auto-Gen

Automatically generates OpenAPI 3.1 specs from your route definitions. Swagger UI included.

Template Engine

Built-in template engine with layouts, partials, and hot-reload in development mode.

Response Cache

In-memory and Redis-backed response caching with stale-while-revalidate and cache tags.

Prometheus Metrics

Built-in /metrics endpoint with request latency histograms, status codes, and custom counters.

Expressive, readable, powerful

Koder Lang's Ruby-like syntax makes route definitions feel natural. Write less, serve more.

REST API with middleware
import jet
import jet/middleware

app = jet.new()

# Global middleware
app.use middleware.logger
app.use middleware.cors origin: "*"
app.use middleware.rate_limit 100, "1m"

# Route group with auth
app.group "/api/v1" do
  use middleware.jwt_auth secret: env("JWT_SECRET")

  get "/users" do |ctx|
    users = User.all
    ctx.json users
  end

  post "/users" do |ctx|
    user = ctx.body_as User
    user.save!
    ctx.status(201).json user
  end

  get "/users/:id" do |ctx|
    user = User.find ctx.param("id")
    ctx.json user
  end
end

app.listen 3000
WebSocket + SSE
import jet

app = jet.new()

# WebSocket chat
app.ws "/chat" do |ws|
  ws.on_message do |msg|
    ws.broadcast msg
  end

  ws.on_close do
    puts "Client disconnected"
  end
end

# Server-Sent Events
app.sse "/events" do |stream|
  loop do
    data = fetch_updates
    stream.send event: "update",
                   data: data.to_json
    sleep 1
  end
end

# Reverse proxy with load balancing
app.proxy "/api/*" do
  upstream "http://10.0.0.1:8080", weight: 3
  upstream "http://10.0.0.2:8080", weight: 1
  strategy :weighted
  health_check "/health", interval: "10s"
end

app.listen 3000

How Koder Jet stacks up

A feature-by-feature comparison against popular web servers and frameworks.

Feature Koder Jet Nginx Caddy Traefik Express Actix Web
Language Koder Lang C Go Go JavaScript Rust
Auto HTTPS Yes No Yes Yes No No
HTTP/3 (QUIC) Yes Exp. Yes Yes No No
Reverse Proxy Yes Yes Yes Yes Plugin No
Load Balancer Yes Yes Yes Yes No No
WebSocket Yes Proxy Proxy Proxy Plugin Yes
gRPC Yes Proxy Proxy Proxy No Plugin
OpenAPI Gen Yes No No Yes Plugin No
Template Engine Built-in No Yes No Plugin Plugin
Response Cache Built-in Yes No No No No
Prometheus Metrics Built-in Module Yes Yes Plugin Plugin
Single Binary Yes No Yes Yes No Yes
Config Format TOML + Code Custom Caddyfile/JSON TOML/YAML Code Code

The kjet command

Manage your server, inspect routes, and benchmark performance from the terminal.

kjet serve
$ kjet serve --port 3000 --tls auto

  Koder Jet v1.0.0
  Listening on https://0.0.0.0:3000
  TLS certificate obtained for jet.koder.dev
  HTTP/3 (QUIC) enabled
  Press Ctrl+C to stop
kjet routes
$ kjet routes

  METHOD  PATH              HANDLER         MIDDLEWARE
  GET     /                 index           logger, cors
  GET     /api/v1/users     users#index     logger, cors, jwt
  POST    /api/v1/users     users#create    logger, cors, jwt
  GET     /api/v1/users/:id users#show      logger, cors, jwt
  WS      /chat             chat#connect    logger
  SSE     /events           events#stream   logger
  PROXY   /api/*            upstream[2]     logger
kjet bench
$ kjet bench http://localhost:3000 -c 200 -d 10s

  Benchmarking http://localhost:3000...
  200 connections, 10s duration

  Requests/sec:   148,392
  Avg latency:    1.34ms
  P99 latency:    4.21ms
  Transfer/sec:   42.8 MB
  Total requests: 1,483,920
  Errors:         0 (0.00%)

TOML-based config

Configure your server declaratively with TOML, or programmatically in Koder Lang. Both approaches work together.

jet.toml
# Koder Jet configuration

[server]
host = "0.0.0.0"
port = 3000
workers = "auto"  # matches CPU cores

[tls]
auto = true
domains = ["jet.koder.dev"]
acme_email = "admin@koder.dev"

[http3]
enabled = true

[cache]
enabled = true
max_size = "256MB"
default_ttl = "5m"

[metrics]
enabled = true
path = "/metrics"

[logging]
level = "info"
format = "json"
Reverse proxy config
# jet.toml - reverse proxy mode

[server]
port = 443

[tls]
auto = true

[[proxy]]
match = "api.example.com"
to = [
  "http://10.0.0.1:8080",
  "http://10.0.0.2:8080",
]
strategy = "round_robin"
health_check = "/health"

[[proxy]]
match = "app.example.com"
to = ["http://localhost:5000"]

[[proxy]]
match = "grpc.example.com"
to = ["h2c://localhost:50051"]
protocol = "grpc"

Install Koder Jet

One binary. Zero dependencies. Production-ready in seconds.

Quick Install

Install via the Koder package manager or curl.

$ koder install jet

# or via curl
$ curl -fsSL https://jet.koder.dev/install.sh | sh

Source Code

Browse, fork, or contribute on Koder Flow.

View Repository

Latest Release

Download pre-built binaries for your platform.

Download Latest