Skip to content

Configuration

Nadhi-(Kushi) edited this page Apr 1, 2026 · 2 revisions

Configuration

The primary configuration surface is createApp(config) plus app.listen(options).

createApp(config)

import { createApp } from "@http-native/core";

const app = createApp({
  server: {
    host: "127.0.0.1",
    port: 3000,
    backlog: 2048,
    maxHeaderBytes: 16 * 1024,
  },
  tls: null,
  dev: {
    logger: true,
    hotReload: false,
    hotReloadPaths: ["src"],
    hotReloadDebounceMs: 120,
    devComments: true,
    timing: false,
    cache: false,
  },
});

server

  • host?: string
  • port?: number
  • backlog?: number
  • maxHeaderBytes?: number

tls

  • cert: string
  • key: string
  • ca?: string
  • passphrase?: string

Values can be PEM strings or file paths.

dev

  • logger?: boolean
  • hotReload?: boolean
  • hotReloadPaths?: string[]
  • hotReloadDebounceMs?: number
  • devComments?: boolean
  • notify?: boolean
  • timing?: boolean
  • cache?: boolean

logger is the main switch for optimizer/log output. notify is just an alias.

app.listen(options)

const server = await app.listen({
  host: "0.0.0.0",
  port: 3000,
  backlog: 2048,
});

Options:

  • host?: string
  • port?: number
  • backlog?: number
  • serverConfig?: HttpServerConfig

Chainable Listen Helpers

const server = await app.listen()
  .port(443)
  .tls({
    cert: "./cert.pem",
    key: "./key.pem",
  });

For dev reload:

await app.listen().port(3000).hot({
  paths: ["src"],
  debounceMs: 80,
});

app.reload(options)

app.reload({
  files: ["src", "routes"],
  debounceMs: 80,
  clear: true,
});

Options:

  • watch?: string[]
  • files?: string[]
  • debounceMs?: number
  • clear?: boolean

@http-native/core/http-server.config

The package also exports @http-native/core/http-server.config. That module contains the default low-level HTTP server constants and normalization helpers. It is not the primary way to configure an app.

Clone this wiki locally