README.md

June 24, 2026 · View on GitHub

 ███████╗████████╗██████╗ ██╗   ██╗██╗  ██╗███████╗
 ██╔════╝╚══██╔══╝██╔══██╗╚██╗ ██╔╝██║ ██╔╝██╔════╝
 ███████╗   ██║   ██████╔╝ ╚████╔╝ █████╔╝ █████╗
 ╚════██║   ██║   ██╔══██╗  ╚██╔╝  ██╔═██╗ ██╔══╝
 ███████║   ██║   ██║  ██║   ██║   ██║  ██╗███████╗
 ╚══════╝   ╚═╝   ╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝╚══════╝
                   [ d e m o ]

CI License: MIT stryke

[LIVE DEMOS FOR EVERY STRYKE-* PACKAGE]

"Fourteen packages, one pull."

Live demos for every package in the stryke-* family. One s install pulls all fourteen from GitHub; each demo is a standalone .stk script.

strykelang · MenkeTechnologiesMeta · stryke-arrow · stryke-aws · stryke-docker · stryke-kafka

Read the Docs · Engineering Report


Table of Contents


[0x00] Packages exercised

#PackageDemoService needed
1stryke-arrowdemos/01_arrow.stknone (in-process)
2stryke-mysqldemos/02_mysql.stkMySQL 5.7+ / MariaDB
3stryke-postgresdemos/03_postgres.stkPostgres 12+
4stryke-sparkdemos/04_spark.stknone (embedded)
5stryke-awsdemos/05_aws.stkLocalStack or real AWS
6stryke-gcpdemos/06_gcp.stkreal GCP (ADC)
7stryke-kafkademos/07_kafka.stkKafka broker
8stryke-grpcdemos/08_grpc.stka reflection-enabled gRPC server
9stryke-parquetdemos/09_parquet.stknone (in-process)
10stryke-duckdbdemos/10_duckdb.stknone (embedded)
11stryke-redisdemos/11_redis.stkRedis 6+
12stryke-mongodemos/12_mongo.stkMongoDB 5+
13stryke-k8sdemos/13_k8s.stkKubernetes 1.24+ (kind / k3s / cloud)
14stryke-dockerdemos/14_docker.stkDocker daemon (Desktop / dockerd / DOCKER_HOST)

[0x01] Install

git clone https://github.com/MenkeTechnologies/stryke-demo
cd stryke-demo
s install         # pulls all 14 packages from GitHub, builds helpers

s install resolves every git dep, builds each package's Rust cdylib into the global stryke store, and locks the graph in stryke.lock. No per-demo install needed.

[0x02] Spin up all live services

docker-compose.yml ships MySQL, Postgres, Redis, Mongo, Kafka (KRaft mode), LocalStack, and a single-node k3s cluster so you can exercise everything but GCP and gRPC locally:

make up                  # start every container
make all                 # auto-detects which services are reachable
make down                # tear down + clear volumes

[0x03] Run a single demo

make arrow               # in-process; no services
make duckdb              # embedded
make spark               # embedded DataFusion session

make mysql               # needs make up (or your own mysql at :3306)
make postgres
make redis
make mongo
make kafka
make aws                 # uses LocalStack at :4566
make k8s                 # uses kubeconfig from $KUBECONFIG (k3s at ./k3s-data/kubeconfig.yaml)
make docker              # uses $DOCKER_HOST or the local /var/run/docker.sock

# Need explicit args:
s demos/06_gcp.stk gs://my-bucket projects/my-proj/subscriptions/my-sub
s demos/08_grpc.stk localhost:50051

Or invoke directly:

MONGODB_URI=mongodb://localhost s demos/12_mongo.stk

[0x04] Run everything available

s demos/run_all.stk

run_all.stk pings each backing service and runs only the demos whose service answers. The rest print SKIP and the runner moves on. Safe to run against any subset of services.

[0x05] Layout

stryke-demo/
  stryke.toml                # 14 git deps, one per package
  docker-compose.yml         # MySQL + Postgres + Redis + Mongo + Kafka + LocalStack + k3s
  Makefile
  demos/
    01_arrow.stk             # in-process Arrow RecordBatch + CSV/Parquet/Feather/JSON
    02_mysql.stk             # CREATE / INSERT / SELECT round-trip
    03_postgres.stk          # CREATE / INSERT / SELECT round-trip
    04_spark.stk             # SparkSQL via embedded DataFusion session
    05_aws.stk               # S3 + DynamoDB + STS via LocalStack
    06_gcp.stk               # GCS put/get/list + Pub/Sub pump
    07_kafka.stk             # create-topic + produce + consume + describe + delete
    08_grpc.stk              # list services + describe via reflection
    09_parquet.stk           # inspect + schema + head + stats
    10_duckdb.stk            # in-mem + bind + scalar + persistent file db
    11_redis.stk             # KV + list + hash + sorted set
    12_mongo.stk             # CRUD + aggregate + index admin
    13_k8s.stk               # discovery + apply + scale + get + cleanup
    14_docker.stk            # pull + run + inspect + exec + logs + cleanup
    run_all.stk              # ping each service, run only the reachable demos
  t/                         # cross-package integration tests (arrow compute,
                             #   parquet footer diagnostics, arrow dedupe ↔ null
                             #   rollup, arrow cast ↔ duckdb types, arrow IN/NOT IN
                             #   ↔ parquet drop ↔ duckdb LIKE, arrow concat/rename
                             #   ↔ duckdb, arrow slice/tail/select/drop ↔ duckdb,
                             #   duckdb aggregate helpers ↔ arrow footer stats,
                             #   arrow↔duckdb, polars)

[0x06] Updating dep pins

stryke.toml pins each of the 14 packages to branch = "main". When the packages start cutting vX.Y.Z tags, swap to tag = "vX.Y.Z" for reproducible installs and rerun s install to refresh stryke.lock.

[0xFF] License

MIT.