28 Unix tools. One binary. Zero dependencies.·the missing coreutils for the agent era·try vrk in your browser at vrk.sh/play·curl vrk.sh/install.sh | sh - ready in 5 seconds·

Docs

Core

vrk tok core

vrk tok counts the tokens in text (o200k_base by default). Use --check N to stop a pipeline when the input is over your context budget.

vrk prompt core

vrk prompt sends text to Claude or GPT and prints the reply. It can check the reply against a --schema and retry on a mismatch.

vrk chunk core

vrk chunk splits text into chunks that fit a token budget and writes each one as a JSONL record. It never splits inside a character.

Pipeline

vrk grab pipeline

vrk grab fetches a URL and returns clean markdown. Use --text for plain text or --raw for HTML. No HTML parsing script needed.

vrk pdf pipeline

vrk pdf extracts the text layer of a PDF as Markdown or plain text, or as one JSONL record per page. It does no OCR and needs no Python.

vrk sql pipeline

vrk sql runs SQL over CSV or JSONL files in an in-memory SQLite database. It supports joins, GROUP BY, and type inference. Output is CSV or JSONL.

vrk sse pipeline

vrk sse parses Server-Sent Events (text/event-stream) into JSONL records. Use --field to pull out one value, such as streamed LLM text.

vrk validate pipeline

vrk validate checks JSONL records against a flat key-to-type schema. With --strict it exits 1 on the first bad record, so bad data stops early.

vrk coax pipeline

vrk coax retries a command with fixed or exponential backoff and replays the same stdin on every attempt. Use it for flaky API calls.

vrk kv pipeline

vrk kv is a persistent key-value store for shell pipelines. It uses SQLite and supports namespaces, TTL, and atomic counters.

vrk mask pipeline

vrk mask redacts secrets such as API keys, Bearer tokens, and high-entropy strings from text. It reads line by line.

vrk throttle pipeline

vrk throttle paces the lines in a pipe to a fixed rate, so LLM batch jobs stay inside API rate limits. Set the rate with --rate N/s or N/m.

Utilities

vrk jwt

vrk jwt decodes a JWT on your machine, prints its claims, and checks expiry with --expired. It does not verify the signature.

vrk epoch

vrk epoch converts between Unix timestamps and ISO 8601 dates. It also accepts relative times such as +3d or -1h, on macOS and Linux.

vrk uuid

vrk uuid generates v4 (random) or v7 (time-ordered) UUIDs from the command line, with the same output on macOS and Linux. Use --count for a batch.

vrk base

vrk base encodes and decodes base64, base64url, hex, and base32 from the command line. It gives the same output on macOS and Linux.

vrk digest

vrk digest hashes text or files with SHA-256, MD5, or SHA-512. Use --hmac to sign, --verify to check, and --compare to match files.

vrk plain

vrk plain removes markdown syntax and keeps the prose. Use it to cut tokens before you send text to an LLM or count it with vrk tok.

vrk links

vrk links extracts every hyperlink from markdown, HTML, or plain text. It writes one JSONL record per link with text, URL, and line number.

vrk recase

vrk recase converts text between naming conventions: snake_case, camelCase, kebab-case, PascalCase, and Title Case. Pick one with --to.

vrk slug

vrk slug turns any text into a URL-safe, filename-safe slug. It folds Latin text to ASCII, accepts custom separators, and limits length.

vrk moniker

vrk moniker generates memorable adjective-noun names for run IDs, job labels, and temp dirs. Use --seed for repeatable output.

vrk pct

vrk pct percent-encodes and decodes text per RFC 3986. Use --form for HTML form encoding, where spaces become +, and --decode to reverse it.

vrk jsonl

vrk jsonl converts a JSON array to JSONL (one object per line) and back with --collect. It streams, so large files do not fill memory.

vrk sip

vrk sip samples lines from stdin. Take the first N, a reservoir sample, every Nth line, or a random percentage, on input of any size.

vrk urlinfo

vrk urlinfo parses a URL into scheme, host, port, path, query, and fragment as JSON. Use --field to print one component.

vrk emit

vrk emit turns plain text lines into JSONL log records with timestamps, levels, and tags. Pipe the output of any command through it.

vrk assert

vrk assert checks a condition on pipeline data and exits 1 if it fails. Use a jq expression, --contains, or --matches to stop bad data early.

Meta

vrk completions meta

vrk completions prints a tab-completion script for bash, zsh, or fish. The script completes every vrk tool name and flag.

vrk bare meta

vrk --bare creates symlinks so you can run tok, grab, and prompt without the vrk prefix. Remove the symlinks later with --remove.