RunFabric SDKs let you run the same handler logic in your preferred framework (Node, Python, or Go) for local dev and deployment.
@runfabric/sdk handlers + adapters@runfabric/cli + @runfabric/sdk)| Support | Description |
|---|---|
| Single handler | createHandler(handler) – one function that manages internally; use as HTTP (req, res) or call .mountExpress(), .mountFastify(), .forNest(). |
| Express | Mount handlers as Express routes via @runfabric/sdk/adapters/express. |
| Fastify | Mount handlers as Fastify routes via @runfabric/sdk/adapters/fastify. |
| Nest | Use handlers in Nest.js via @runfabric/sdk/adapters/nest. |
| Raw handler | (event, context) => response; wrap with createHttpHandler from @runfabric/sdk/adapters/raw. |
Example (single handler – recommended):
One handler function, one entry point; use as raw HTTP or mount on any framework:
const http = require("http");
const { createHandler } = require("@runfabric/sdk");
const myHandler = (event, context) => ({ message: "hello", stage: context.stage });
const h = createHandler(myHandler);
// Use as raw HTTP server
http.createServer(h).listen(3000);
// Or mount on Express (same h)
// const express = require("express");
// const app = express();
// h.mountExpress(app, "/api", "post");
// Or mount on Fastify (same h)
// h.mountFastify(fastify, { url: "/api", method: "POST" });
// Or use in Nest (same h)
// const nestHandler = h.forNest();
Example (Express only):
const express = require("express");
const { mount } = require("@runfabric/sdk/adapters/express");
const app = express();
app.use(express.json());
const myHandler = (event, context) => ({ message: "hello", stage: context.stage });
mount(app, myHandler, "/api", "post");
app.listen(3000);
Example (raw HTTP only):
const { createHttpHandler } = require("@runfabric/sdk/adapters/raw");
const handler = (event, context) => ({ ok: true });
const httpHandler = createHttpHandler(handler);
// use httpHandler(req, res) in any Node HTTP server
beforeBuild, afterBuild, beforeDeploy, afterDeploy) via loadHookModules and runLifecycleHooks.packages/python/runfabric, runfabric)| Support | Description |
|---|---|
| FastAPI | Mount handlers with runfabric.adapters.fastapi_mount(app, handler, path=..., method=...). |
| Flask | Mount with runfabric.adapters.flask_mount(app, handler, path=..., methods=[...]). |
| Django | Use runfabric.adapters.runfabric_view(handler) in urlpatterns. |
| Raw ASGI/WSGI | runfabric.adapters.create_asgi_handler(handler) or create_wsgi_handler(handler). |
Example (FastAPI):
from fastapi import FastAPI
from runfabric.adapters import fastapi_mount
app = FastAPI()
def my_handler(event, context):
return {"message": "hello", "stage": context.get("stage", "dev")}
fastapi_mount(app, my_handler, path="/api", method="post")
Example (raw ASGI):
from runfabric.adapters import create_asgi_handler
handler = lambda event, context: {"ok": True}
asgi_app = create_asgi_handler(handler)
# use asgi_app in uvicorn or any ASGI server
packages/go/sdk)| Support | Description |
|---|---|
| Handler | Handler func(ctx, event, runCtx) (map[string]any, error); use handler.Func(fn) for simple (event, context) -> response. |
| HTTP | handler.HTTPHandler(h) implements http.Handler for use with net/http or any HTTP framework. |
Example:
import "github.com/runfabric/runfabric/sdk/go/handler"
h := handler.Func(func(event map[string]any, runCtx *handler.Context) map[string]any {
return map[string]any{"message": "hello", "stage": runCtx.Stage}
})
http.ListenAndServe(":3000", handler.HTTPHandler(h))
Build and test: cd packages/go/sdk && go test ./...
packages/java/sdk, io.runfabric:runfabric-sdk)| Support | Description |
|---|---|
| Handler | Handler interface: Map<String, Object> handle(Map<String, Object> event, HandlerContext context). |
| HTTP | HttpHandler wraps a handler for request/response streams (e.g. servlet or programmatic HTTP). |
Example:
import dev.runfabric.Handler;
import dev.runfabric.HandlerContext;
Handler h = (event, context) -> Map.of("message", "hello", "stage", context.getStage());
Build and test: cd packages/java/sdk && mvn clean test
packages/dotnet/sdk, RunFabric.Sdk)| Support | Description |
|---|---|
| Handler | Handler delegate: (event, context) -> IReadOnlyDictionary<string, object?>. |
| HTTP | HttpHandler.InvokeAsync(requestStream, responseStream, handler, ...) for stream-based HTTP. |
Example:
using RunFabric.Sdk;
Handler h = (event, context) => new Dictionary<string, object?>
{
["message"] = "hello",
["stage"] = context.Stage
};
Build and test: cd packages/dotnet/sdk && dotnet test