# originclient (Go) ``` go get git.warky.dev/wdevs/origin_client/go ``` ## Usage ```go c, err := originclient.New(originclient.Config{ ServiceKey: "...", Type: "myservice", Version: "1.2.3", Name: "myservice-nova", }) if err != nil { log.Fatal(err) } go c.Run(ctx) // immediate check-in, then every 24h until ctx is done ``` Call `c.CheckinOnce(ctx)` directly instead of `Run` to send a single check-in and observe the error/response. ## Config | Field | Required | Default | |---|---|---| | `ServiceKey` | yes | — | | `Type`, `Version`, `Name` | yes | — | | `URL` | no | `DefaultURL` (`https://origin.warky.dev/api/public/service-checkin`) | | `AppType` | no | `"go"` | | `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 | `DefaultIntervalHours` (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.