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
..

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.