CLI and SDKs
Call Skippr Cloud from your terminal or from application code. The official skippr CLI and the public SDKs are generated from the same Cloud API catalog.
Status: Preview — product subcommands match catalog operations that are callable in Preview. Local ELT ingest (discover, sync) is the separate Production runner at skippr.io/elt.
At a glance
| Surface | Package | Use it to |
|---|---|---|
| CLI | skippr | Sign in, then call catalog operations as skippr <service> <operation> |
| Rust SDK | skippr-cloud | Typed Cloud JSON and auth REST calls from Rust |
| TypeScript SDK | @skippr/cloud | The same catalog from Node.js |
| Python SDK | skippr-cloud | The same catalog from Python |
Root CLI commands handle account session: login, logout, whoami. Product namespaces (tables, elt, functions, and the rest of the service catalog) expose only catalog operations. skippr elt does not invent local runner verbs such as discover or sync.
Authenticate
skippr login --email you@example.comThe CLI calls auth REST SignIn, then Confirm, and stores the Cloud JWT. Use skippr whoami to print the current session. For automation, set CLOUD_BEARER_TOKEN, or a SigV4 pair CLOUD_ACCESS_KEY_ID / CLOUD_SECRET_ACCESS_KEY. See Auth.
Call a catalog operation
skippr tables list-tables
skippr elt create-pipeline --name orders-bronze --source postgres://orders --sink s3://lakeskippr services lists generated product namespaces. skippr <service> --help lists operations for that service. Pass --input - or --input request.json when a request body is easier as JSON than as flags.
Use an SDK
TypeScript:
import { CloudClient } from "@skippr/cloud";
const client = new CloudClient({
region: "eu-central-1",
bearerToken: process.env.CLOUD_BEARER_TOKEN,
});
const tables = await client.call("tables", "ListTables", {});Python:
from skippr_cloud import CloudClient
import os
client = CloudClient(region="eu-central-1", bearer_token=os.environ["CLOUD_BEARER_TOKEN"])
print(client.call("tables", "ListTables", {}))Rust:
use skippr_cloud::{Client, Config};
let client = Client::new(Config::from_env()?)?;
let tables = client.call_json("tables", "ListTables", serde_json::json!({})).await?;