vrk moniker
Try it in your browser
# Makes five readable names. The same seed gives the same names.
Press RUN. Nothing leaves your browser.files you can cat:
Edit the command and press RUN. Open the full playground for more recipes, or install vrk to run it on your own files.
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. Use --seed to get the same names on every run. Use --count to make a batch and --words to make longer names. A single batch has no duplicates.
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
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Word pool exhausted for requested count |
| 2 | –count less than 1, –words less than 2 |
Flags
| Flag | Short | Type | Description |
|---|---|---|---|
--count | -n | int | Number of names to generate |
--separator | string | Word separator | |
--words | int | Words per name (minimum 2) | |
--seed | int64 | Random seed for deterministic output | |
--json | -j | bool | Emit JSON per name: {name, words} |
--quiet | -q | bool | Suppress stderr output |
How it works
vrk moniker generates short, readable names like distant-shore that you can use as run IDs, labels or directory names.
$ vrk moniker --seed 42
distant-shore
Deterministic output (–seed)
$ vrk moniker --count 3 --seed 42
distant-shore
slate-contour
northern-brine
The same seed always gives the same names. Use a seed in tests or when you need names you can reproduce.
Custom separator
$ vrk moniker --separator _ --seed 42
distant_shore
Longer names (–words)
More words give more unique names. Use --words 3 when two-word names are not enough:
$ vrk moniker --words 3 --seed 42
foggy-hazy-furrow
JSON output
$ vrk moniker --json --seed 42
{"name":"distant-shore","words":["distant","shore"]}
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
If you ask for more names than the word lists can make, moniker exits 1:
$ vrk moniker --count 100000
error: moniker: requested 100000 names but only 87024 unique 2-word combinations exist
$ echo $?
1
If the count is below 1, moniker exits 2:
$ vrk moniker --count 0
usage error: moniker: --count must be >= 1, got 0
$ echo $?
2