Integrations
Use Silgi with Fastify, H3, Hono, Express, Remix, Astro, SolidStart, MessagePort, OpenAPI, and more.
Silgi integrates with the tools you already use. Each integration is a separate subpath import — you only ship what you actually import.
Fastify
Mount Silgi as a Fastify plugin alongside existing REST routes.
H3
Use Silgi with H3 v2, Nitro, and Nuxt server routes.
Nitro
File-system routing with Nitro v3 — the engine behind Nuxt and TanStack Start.
Hono
Run Silgi on any runtime — Node.js, Bun, Deno, Cloudflare Workers.
Express
Mount Silgi as Express middleware alongside existing REST routes.
Remix
Catch-all splat route with action and loader exports.
Astro
Server-side API routes with catch-all endpoint.
SolidStart
File-based API routes with catch-all endpoint.
AWS Lambda
Deploy Silgi as a serverless Lambda function — API Gateway v1 and v2.
Message Port
Run Silgi over MessagePort — Electron, browser extensions, Web Workers.
OpenAPI Client
Consume any OpenAPI endpoint as a typed Silgi client.
React Server Actions
Call procedures as server actions with [error, data] tuples. Works with Next.js and TanStack Start.
TanStack Query
Generate type-safe queryOptions and mutationOptions for React, Vue, Solid, and Svelte.
AI SDK
Turn your API procedures into AI tools — LLMs call your API through function calling.
Which integration do I need?
| Scenario | Integration |
|---|---|
| You have an existing Fastify app | Fastify |
| You use H3 directly | H3 |
| You use Nitro v3 or Nuxt 4 | Nitro |
| You use Hono (any runtime) | Hono |
| You have an existing Express app | Express |
| You use Remix | Remix |
| You use Astro | Astro |
| You use SolidStart | SolidStart |
| Deploying to AWS Lambda | AWS Lambda |
| Electron, Web Workers, browser extensions | Message Port |
| Consuming an external OpenAPI service | OpenAPI Client |
| Next.js or TanStack Start with server actions | React |
| React Query (or Vue/Solid/Svelte Query) | TanStack Query |
| LLMs calling your API as tools | AI SDK |
For standalone servers (no existing framework), you don't need any integration — just use s.serve() or s.handler() from the Server page.