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>
origin-client (Rust)
cargo add origin-client
Async, built on tokio + reqwest (rustls, no OpenSSL dependency).
Usage
use origin_client::{Client, Config};
use tokio_util::sync::CancellationToken;
let client = Client::new(Config {
service_key: "...".into(),
type_: "myservice".into(),
version: "1.2.3".into(),
name: "myservice-nova".into(),
..Default::default()
})?;
let cancel = CancellationToken::new();
tokio::spawn({
let cancel = cancel.clone();
async move { client.run(cancel).await }
}); // immediate check-in, then every 24h until cancel.cancel() is called
Call client.checkin_once().await directly instead of run to send a
single check-in and observe the result/error.
Config
| Field | Required | Default |
|---|---|---|
service_key |
yes | — |
type_, version, name |
yes | — |
url |
no | DEFAULT_URL (https://origin.warky.dev/api/public/service-checkin) |
app_type |
no | "rust" |
hostname |
no | OS hostname |
container_id |
no | best-effort Docker/cgroup detection |
orchestrator |
no | best-effort Kubernetes/Docker detection |
install_id |
no | OS machine ID, else a generated UUID persisted to install_id_path |
interval_hours |
no | DEFAULT_INTERVAL_HOURS (24) |
logger |
no | discards warnings (NoopLogger) |
site, environment, database_type, database_name, port,
base_url, internal_url, description are optional metadata with no
default. Config implements Default, so use struct-update syntax
(..Default::default()) as shown above.
hostname(), outbound_ip(), container_id(), orchestrator(), and
resolve_machine_id() are exported standalone for callers that want the
detection logic without the HTTP client.
Manual smoke test
cargo run --example testclient # single check-in, local mock server
cargo run --example testclient -- --watch # loops via run() 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.
Platform notes
macOS/Windows machine-ID detection is compiled but not exercised by CI
(this repo's CI runs on Linux). cargo build --target ... for those
targets is a reasonable spot-check before release.