Skip to content

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

SurfacePackageUse it to
CLIskipprSign in, then call catalog operations as skippr <service> <operation>
Rust SDKskippr-cloudTyped Cloud JSON and auth REST calls from Rust
TypeScript SDK@skippr/cloudThe same catalog from Node.js
Python SDKskippr-cloudThe 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

bash
skippr login --email you@example.com

The 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

bash
skippr tables list-tables
skippr elt create-pipeline --name orders-bronze --source postgres://orders --sink s3://lake

skippr 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:

javascript
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:

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:

rust
use skippr_cloud::{Client, Config};

let client = Client::new(Config::from_env()?)?;
let tables = client.call_json("tables", "ListTables", serde_json::json!({})).await?;