// STRYKE-ARROW — APACHE ARROW + PARQUET + FEATHER + ARROW-CSV/JSON FOR STRYKE

stryke package · CLI launcher arrow · Rust helper stryke-arrow-helper · opt-in (kept out of stryke core)

Report GitHub Issues
// Color scheme

>_STRYKE-ARROW

Columnar data, on demand. No daily-driver weight. Apache Arrow + Parquet + Arrow IPC + Feather + arrow-CSV + arrow-JSON for stryke. Opt-in package, kept out of the stryke core binary so the daily-driver install stays slim. The stryke side is a thin NDJSON-pipe wrapper; the heavy arrow-rs / parquet code lives in the stryke-arrow-helper sidecar.

Install

# build the helper binary, install as a stryke package
cd ~/projects/stryke-arrow
cargo build --release
s pkg install -g .

# one-liner
make install

# verify
arrow --help

After install, arrow --help works from anywhere on PATH (assuming ~/.stryke/bin/ is on PATH). The stryke library is auto-discoverable to any project that depends on the package via [deps] arrow = { path = "..." } or, when published, by name.

CLI: arrow

inspect a parquet file's schemaarrow schema sales.parquet
convert parquet -> arrow IPCarrow convert sales.parquet sales.arrow
read csv -> featherarrow convert input.csv output.feather
query parquet headarrow head -n 10 sales.parquet
ndjson pipe (stryke side)stryke -E 'use Arrow; Arrow::read("sales.parquet") |> p'

The full flag matrix lives in the README "CLI" section.

Why a package, not a builtin

Core stays small on purpose — most one-liner / awk-replacement work doesn't need 200 transitive crates of columnar data infrastructure. arrow-rs + parquet hit a different scale, so they ship as an opt-in package.

The stryke side is a thin NDJSON-pipe wrapper; the heavy code lives in the stryke-arrow-helper sidecar binary and is loaded on demand. Core stryke is never linked against this package's deps.

Helper protocol

The stryke-arrow-helper sidecar speaks newline-delimited JSON over stdin/stdout. The stryke library shells out per call and pipes structured data both ways. This keeps stryke startup small while making the package's surface area available on demand.

# manual invocation (debugging only)
echo '{"op":"version"}' | stryke-arrow-helper

Layout

stryke-arrow/
├── Cargo.toml             # bin = stryke-arrow-helper (publish = false)
├── src/
│   └── main.rs           # helper binary entry point
├── lib/                   # stryke .stk wrapper(s)
├── stryke.toml            # stryke package manifest
├── t/                     # zunit-style tests
├── examples/              # runnable .stk examples
├── Makefile               # `make install` builds + installs
└── docs/                  # this site (GitHub Pages)

Sibling packages

Part of the stryke connector family. Browse the others via the MenkeTechnologiesMeta umbrella repo (Tier 2):