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

origin_client

Client SDKs that register a running service with Origin's public check-in endpoint and re-ping it on an interval. One package per language, same wire contract, same behavior.

Packages

Language Path Module/package
Go go/ git.warky.dev/wdevs/origin_client/go
JavaScript/TypeScript js/ @warkanum/origin-client
Rust rust/ origin-client

What it does

  • Resolves a machine unique ID: real OS ID first (/etc/machine-id on Linux, IOPlatformUUID on macOS, MachineGuid on Windows), falling back to a generated UUID persisted to disk.
  • Detects hostname, outbound IP, container ID (Docker/cgroup), and orchestrator (Kubernetes/Docker) best-effort.
  • POSTs a check-in payload to Origin immediately, then again every interval_hours (default 24), until stopped. Network/server failures are logged and swallowed — check-in never crashes or blocks the host app.

Wire contract

POST {base_url} (default https://origin.warky.dev/api/public/service-checkin) with header X-Origin-Service-Key: <your key>.

Required: type, version, name, unique_install_id. Optional: site, environment, database_type, database_name, app_type, hostname, port, base_url, internal_url, container_id, orchestrator, description.

Response: success, service_instance_id, unique_install_id, status, pinged_at.

Full contract: see origin/doc/service-checkin.md in the Origin repo.

Status

Structured for independent versioning/publishing per package. Not yet published to any registry.

S
Description
origin client
Readme
81 KiB
Languages
Rust 38.4%
Go 32.2%
TypeScript 25.5%
JavaScript 3.9%