From files
src/
users/
user.controller.ts
user.service.ts
user.repository.ts
tasks/Where is this called from?
What does it depend on?
How far did execution get?
Define one Application Model, then run it on Node.js, Bun, Cloudflare Workers, AWS Lambda, and Electron.Loutre Dev lets you trace the structure and execution from that same model.
npm create loutre@latest my-appMULTI-RUNTIME
Keep the application model and choose the runtime that fits your environment.Run the same code on Node.js, Bun, Cloudflare Workers, AWS Lambda, or Electron.
const application = defineApplication({
modules: [UsersModule(), HealthModule()],
})
export default application
Loutre builds Modules, Providers, Executions, and Runtime Capabilities into one canonical Application Model.Its Graph projection keeps ownership, injection, requirements, routes, middleware, and handlers explicit.
From files
src/
users/
user.controller.ts
user.service.ts
user.repository.ts
tasks/Where is this called from?
What does it depend on?
How far did execution get?
With Loutre
handles: create
injects
requires
The path is explicit.
TYPE INFERENCE
Define the Contract once, and request and response handling stays typed throughout the implementation.
No declare / as / is needed to carry those types.
Contract
const AppContract = http.contract({
greet: {
method: 'GET',
path: '/{name}',
request: {
params: {
name: z.string(),
},
},
responses: {
ok: {
status: 200,
body: z.object({
message: z.string(),
}),
},
},
},
})Implementation
const AppController = http.implementation({
contract: AppContract,
factory: () => ({
greet(ctx) {
// inferred as string
const name = ctx.input.params.name
return ctx.response.ok({
body: {
message: `Hello, ${name}!`,
},
})
},
}),
})FOR AI AGENTS
Share the same Application Graph with coding agents so structure and dependencies do not have to be inferred from files alone.
Agent context
ARCHITECTURE
Modules, Providers, Executions, and Runtime Capabilities come together in one Application Model shared by Runtime, CLI, DevTools, and OpenAPI.
One model. Whole picture.
Open the Hello HTTP example in StackBlitz and explore Loutre without setting up a local project.