XRAPH/Work/HTTP router
Go · since 2025

Steel

A Go router with typed handlers. Declare the request struct and you get path, query and body binding, validation, and an OpenAPI 3 document generated from the same types. WebSocket and SSE routes produce AsyncAPI. Forge’s router grew out of it.

Language
Go
Category
HTTP router
Since
2025
Stars
0
Repository
01

Anatomy

3 modules
01

Router

Radix routing with typed parameters.

02

Handlers

Opinionated signatures: a request in, a value and an error out.

03

Middleware

Composable, ordered, and scoped per route group.

02

Why it exists

Design notes

#What it is

A high-performance HTTP router for Go built on a radix tree, with zero allocations for parameter extraction, and with typed handlers that generate their own documentation.

#Opinionated handlers

Declare the request as a struct with path, query and json tags, and Steel binds and validates it, then generates OpenAPI 3.0 from the same types. There is no second description of the endpoint to fall out of date.

1r.OpinionatedGET("/users/:id", func(ctx *steel.Context, req User) (*UserResponse, error) {
2 return &UserResponse{ID: req.ID, Name: req.Name}, nil
3}, steel.WithSummary("Get User"), steel.WithTags("users"))
4
5r.EnableOpenAPI()

#The rest

WebSocket and SSE support with AsyncAPI documentation, middleware with built-in recovery, logging and timeout, testing utilities with request builders and assertions, and doc UIs across Swagger, ReDoc, Scalar and Stoplight Elements.

Steel came before Forge by two days and Forge's router grew directly out of it. It is still useful on its own when you want the routing and the generated spec without the framework.

03

Signals

GitHub
Stars
0
Language
Go
Since
2025
Adopters
00

Shipping something on Steel? Nobody is listed here yet. Tell me what you built and you will be the first.

Get listed
04

Where it sits

Fields · papers