v0.2 ยท the whole test stack

Mock it, test it, load it, tail it โ€”
the whole test stack, baked into one binary.

Spec-driven mocks, fixture suites generated from your OpenAPI spec, load gates CI can fail on, and every process log in one stream โ€” all composing on the same | / .pipe(), from the REPL, a crust -c one-liner, or a .crust script. Zero dependencies, one compiled binary โ€” and it never reports a false pass.

curl -fsSL https://raw.githubusercontent.com/lariocpt/crust/main/install.sh | bash
$ range(0, 10000) | parallel 100 | GET :3000/health | expect 200 | stats
# { count: 10001, durationMs: 814, p50: 5, p95: 17, p99: 41 }

$ read fixtures/*.json | POST :3000/users | expect 201
$ lines **/*.log | grep ERROR | filter (l => !l.includes('healthcheck')) | wc -l
$ sql "select email from users limit 5" | (r => r.email)
Why crust

Bash and TypeScript, one pipeline.

Shell stages and TS lambdas are equal citizens โ€” both sit on the same pipeline. Pipe anything into anything: globs into HTTP, ranges into parallel workers, SQL rows into lambdas.

Pipelines, first-class

Every stage produces a stream โ€” Pipeline<T>. Compose with | at the shell line or .pipe() in TypeScript.

HTTP verbs as stages

GET, POST, PUT, PATCH, DELETE ship as pipeline stages โ€” auto JSON encoding, headers via -H, status matchers like expect 201 and expect 2xx.

Request chaining โ€” capture

POST โ€ฆ | (r => r.json()) | capture ID (b => b.id) โ€” later lines expand $ID. Whole CRUD flows as .pipes suites, no framework.

Load scenarios & CI gates

load 30s 100/s | parallel 50 | GET :3000/health | stats | assert (s => s.p95 < 200) โ€” paced ramps, honest drop accounting, thresholds as chained asserts.

Fixture testing & stress mode

test-fixture 'fixtures/*.crust.ts' -n1000 -j32 runs your .crust.ts fixtures with p50/p95/p99 reports.

OpenAPI mock, validator & proxy

mock-server ./openapi.yaml โ€” spec-driven mock with envelope-aware --stateful CRUD โ€” persistent via --state sqlite/postgres, seedable via --seed โ€” --validate 422s, and a --proxy mode that audits a real backend's conformance.

Agent skills, embedded

skills install drops five Claude agent skills into .claude/skills/ โ€” grammar-lint-tested against the live parser, so examples can't rot.

Verify web links + SEO

verify-web-links https://example.com โ€” crawl your sitemap, catch broken links and dead anchors, diff Open Graph tags against fixtures.

One-liner mode

Stay in your shell โ€” call crust -c 'โ€ฆ' from bash/zsh/fish for the lines where pipeline syntax wins.

Bake it in.

Install in one curl. Script it with .crust files, drive it from your shell with crust -c, or live in the REPL.