# origin_client Client SDKs that register a running service with [Origin](https://origin.warky.dev)'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/`](go/) | `git.warky.dev/wdevs/origin_client/go` | | JavaScript/TypeScript | [`js/`](js/) | `@warkanum/origin-client` | | Rust | [`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: `. 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.