# @warkanum/origin-client (JS/TS) ``` npm install @warkanum/origin-client ``` Node >=18, ESM only. ## Usage ```ts import { OriginClient } from "@warkanum/origin-client"; const client = new OriginClient({ serviceKey: "...", type: "myservice", version: "1.2.3", name: "myservice-nova", }); client.start(); // immediate check-in, then every 24h until stop() ``` Call `client.checkinOnce()` directly instead of `start()` to send a single check-in and observe the result/error. ## Config | Field | Required | Default | |---|---|---| | `serviceKey` | yes | — | | `type`, `version`, `name` | yes | — | | `url` | no | `DEFAULT_URL` (`https://origin.warky.dev/api/public/service-checkin`) | | `appType` | no | `"javascript"` | | `hostname` | no | OS hostname | | `containerId` | no | best-effort Docker/cgroup detection | | `orchestrator` | no | best-effort Kubernetes/Docker detection | | `installId` | no | OS machine ID, else a generated UUID persisted to `installIdPath` | | `intervalHours` | no | `DEFAULT_INTERVAL_HOURS` (24) | | `logger` | no | discards warnings | `site`, `environment`, `databaseType`, `databaseName`, `port`, `baseUrl`, `internalUrl`, `description` are optional metadata with no default. `hostname()`, `outboundIp()`, `containerId()`, `orchestrator()`, and `resolveMachineId()` are exported standalone for callers that want the detection logic without the HTTP client.