Skip to content

ELT for engineers

Skippr Cloud ELT is a compiled runner: WAL-backed exactly-once delivery, deterministic schema discovery, Apache Arrow in memory. Ingest does not require Python, a JVM, or a cluster. Modeling uses generated dbt (Python + adapter on the machine that runs skippr model).

Under the hood

Rust — single binary

Skippr compiles to a statically linked binary. Memory safety is compile-time. Deploy with scp, a container, or cron. Host dependencies for ingest are compiled in.

WAL-backed exactly-once

Every record is written to a write-ahead log before processing. Offsets are per-record. If the process is killed between WAL write and warehouse commit, recovery replays from the last committed offset.

Apache Arrow

Records move as Arrow RecordBatches — columnar, cache-friendly. Type checks and null counts do not require per-row objects.

Deterministic schema discovery

Inference is algorithmic, not generative. Nested types recurse. Type changes add a new column; existing data is never mutated.

Per-sink types

TIMESTAMP becomes TIMESTAMP_NTZ in Snowflake, TIMESTAMP in BigQuery, timestamptz in Postgres. DDL uses additive ALTER TABLE and is safe to re-run.

Dead letters

Only unparseable records are quarantined (truncated JSON, binary garbage). Dead letters are queryable Parquet with the original payload, error, run ID, and timestamp.

What you are not building

ComponentDIYSkippr ELT
IngestionKafka / custom scriptsBuilt-in
Schema managementManual DDLAutomatic evolution
Type mappingPer-source, per-sink codeDeterministic, per-sink
Crash recoveryCustom checkpointsWAL-backed
Data qualitySeparate test suiteDead letters
dbt bootstrappingHand-written SQLskippr model
OrchestrationAirflow / DagsterSingle process for the default path
InfrastructureKubernetesOne binary