Files
warkanumandClaude Sonnet 5 ac3c0f149c
CI / js (push) Successful in 18s
CI / go (push) Successful in 36s
CI / rust (push) Successful in 2m3s
Add runnable smoke-test clients for each SDK
Each package gets a small example program that exercises the real
client: with no ORIGIN_SERVICE_KEY set it runs against a local mock
check-in server, otherwise it checks in against ORIGIN_URL/Origin's
public endpoint. Wired into CI (mock mode) as a regression check, and
documented per README.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 15:38:37 +02:00
..

@warkanum/origin-client (JS/TS)

npm install @warkanum/origin-client

Node >=18, ESM only.

Usage

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.

Manual smoke test

npm run example                          # single check-in, local mock server
node examples/testclient.mjs --watch     # loops via start() until Ctrl-C

Set ORIGIN_SERVICE_KEY (and optionally ORIGIN_URL, ORIGIN_TYPE, ORIGIN_VERSION, ORIGIN_NAME, ORIGIN_SITE, ORIGIN_ENVIRONMENT, ORIGIN_INTERVAL_HOURS) to check in against a real endpoint instead.