26 Unix tools. One binary. Zero dependencies.·the missing coreutils for the agent era·vrk mcp - expose all 26 tools to any AI agent·curl vrk.sh/install.sh | sh - ready in 5 seconds·

vrk moniker

vrk moniker generates memorable adjective-noun names for run IDs, job labels, and temp directories.

The problem

Timestamp labels like run-20260330-174856 collide when three runs start in the same minute. UUIDs are unique but nobody can say “check run 98d06ca5” in an incident call. You need identifiers that are both unique and pronounceable.

The solution

vrk moniker generates memorable adjective-noun names from embedded wordlists. Deterministic with --seed for reproducible names. --count for batches, --words for longer names when you need more uniqueness. No duplicates within a single batch.

Before and after

Before

echo "run-$(date +%Y%m%d-%H%M%S)"
# Identical for concurrent runs, not human-memorable

After

vrk moniker

Example

vrk moniker --count 5 --seed 42

Exit codes

CodeMeaning
0Success
1Word pool exhausted for requested count
2–count less than 1, –words less than 2

Flags

FlagShortTypeDescription
--count-nintNumber of names to generate
--separatorstringWord separator
--wordsintWords per name (minimum 2)
--seedint64Random seed for deterministic output
--json-jboolEmit JSON per name: {name, words}
--quiet-qboolSuppress stderr output

How it works

$ vrk moniker
woven-vent

$ vrk moniker --count 3
distant-shore
slate-contour
northern-brine

Deterministic output (–seed)

$ vrk moniker --count 3 --seed 42
distant-shore
slate-contour
northern-brine

Same seed always produces the same names. Use this in tests or when you need reproducible identifiers.

Custom separator

$ vrk moniker --separator _
bold_falcon

Longer names (–words)

More words means more uniqueness. Use --words 3 when two-word names aren’t enough:

$ vrk moniker --words 3
bright-amber-whisper

JSON output

$ vrk moniker --json
{"name":"woven-vent","adjective":"woven","noun":"vent"}

Pipeline integration

Label pipeline runs

RUN_NAME=$(vrk moniker)
vrk kv set --ns pipeline current_run "$RUN_NAME"
echo "Starting run: $RUN_NAME" | vrk emit --tag pipeline
# ... pipeline stages ...
echo "Completed run: $RUN_NAME" | vrk emit --tag pipeline

Create labeled temp directories

WORKDIR="/tmp/$(vrk moniker)"
mkdir -p "$WORKDIR"
# Process files in $WORKDIR

Tag batch jobs with memorable names

# Each batch gets a human-readable name for incident response
BATCH=$(vrk moniker)
vrk kv set --ns batch "$BATCH" "$(vrk epoch --now)" --ttl 168h
echo "Batch $BATCH started" | vrk emit --tag batch --level info

When it fails

Word pool exhausted (unlikely with default settings):

$ vrk moniker --count 100000
error: moniker: word pool exhausted
$ echo $?
1

Invalid count:

$ vrk moniker --count 0
usage error: moniker: --count must be >= 1
$ echo $?
2