The unified home for BrightDate utilities — file search, networking, timing, and the shell that ties them together. Every tool speaks the same timezone-free decimal day count since J2000.0. No translation step between your prompt, your logs, and your pipelines.
Each utility is a fork of a familiar GNU or system tool — not a thin
wrapper, but a color-enhanced,
feature-extended rebuild. BrightDate scalars, new predicates,
spacetime metrics, and TTY-aware color output — while
-printf, -f, and piped output stay plain for
scripts.
Unix timestamps, ISO 8601 strings, and local-midnight boundaries each
solve part of the problem — and each introduce invisible complexity
when tools disagree. BrightDate is a single f64: decimal
SI days since the astronomical epoch J2000.0, on a TAI substrate. No
timezone. No leap-second jumps. b − a = elapsed days,
always.
In one sentence:
BrightDate is a timezone-free SI-day count since J2000.0
(2000-01-01T11:58:55.816 UTC). BD 0.0 = the standard astronomical
epoch. BD 9628 ≈ May 2026. Machine interchange and log
correlation should prefer %W* at 9 decimal places.
Shell prompt %P, $BRIGHTEPOCH,
stat, ls -l, TIMEFMT
Core library + bdate, btime,
buptime, bcal, bwatch
bfind, blocate,
bupdatedb, bxargs
bping, bclockdiff,
btraceroute, bmtr, baudit
Bright Utils are not drop-in aliases. Each project forks a mature
upstream (GNU findutils, iputils, GNU time/date, zsh) and adds
BrightDate-native behavior plus interactive polish: semantic
color on TTYs, richer reports, and capabilities the stock tools never
had. Machine output stays script-safe — color applies to human-facing
reports; -printf, -f, and pipes remain
plain text.
Interactive tools share a consistent
--color / --color-scheme model:
| Flag | Behavior |
|---|---|
| --color=auto | Colorize when stdout/stderr is a TTY (default) |
| --color=always | Force color even when piped |
| --color=never | Plain text everywhere |
| --color-scheme | Palette selection (e.g. default, bright) |
Used by bfind, btime,
bping, btraceroute, bmtr,
baudit, and more. BrightDate integers, fractional
parts, labels, and efficiency scores each get distinct hues so
you can scan output at a glance.
| Stock tool | Bright extension |
|---|---|
| find | -after/-before, %W*, BD -daystart |
| ping | Light-floor, geo distance, efficiency %, ECEF coords, per-hop trace |
| time | %Wt/%Ws, milliday durations, CPU heat colors |
| traceroute | Per-hop geoIP, RTT in md, path-length vs direct comparison |
| — | bmtr, baudit — new tools, not upstream forks |
-after / -before — BD scalar time filters%Wt/%Wa/%Wc/%WB printf family-daystart floors to BD integer, not local midnight-newer* accepts BrightDate literals firstblocate --statistics shows DB age as BDbmtr live rolling probe; baudit multi-anchor boundingbtime -f '%Wt %dE md' — machine timing strings--color=ansi / truecolor / plainbdate, bcal, buptime, bwatch — full CLI suitebrightdate crate for every other project%P — live BrightDate in the shell line$BRIGHTEPOCH exported for downstream toolsstat, ls -l, history -d show BDTIMEFMT with %dE/%dU/%dS millidaysb* binary
Four projects, one scalar. Each renames GNU or system utilities with a
b prefix so they coexist with stock tools — then extends
them with BrightDate semantics, interactive color, and domain-specific
features the originals never had. All share the same J2000.0 / TAI
semantics from
brightdate-rust.
A zsh-compatible shell where BrightDate is woven into every time-related surface. Color prompt, exported epoch, built-in commands — the natural home for the whole pipeline.
Canonical Rust implementation. Core library plus CLI replacements
for date, time, uptime, cal, and watch — with colorized default
reports and %W* format strings.
GNU findutils 4.10.0 re-dressed for BrightDate. New predicates,
%W printf, BD -daystart, and colorized
interactive output.
Linux & macOS networking tools extended with BrightSpace: light-floor, milliday RTT, geo distance, efficiency scoring, and full-color hop tables.
TypeScript/JavaScript library. Same J2000.0 / TAI semantics for Node.js, Deno, and the browser.
All Digital Defiance BrightDate tools from one tap. Install the whole stack with short names.
brew tap digital-defiance/tap
brew install bsh bright-findutils bright-iputils
brew install bdate btime buptime bcal bwatch
% formatting.BrightDate format characters across the ecosystem. Scalar semantics follow brightdate-rust (TAI substrate, J2000.0 epoch, SI days). Full spec: FORMAT-SPEC.md.
%W<letter> — absolute BrightDate scalar
Output: decimal SI days since J2000.0,
%.9f, no unit suffix.
| Specifier | bfind -printf |
btime -f |
|---|---|---|
| %Wt | File mtime | Command end wall time |
| %Ws | — (not applicable) | Command start wall time |
| %Wa | File atime | — |
| %Wc | File ctime | — |
| %WB | File birth time | — |
| %W<other> | Same as %Wt (mtime) | GNU swap count (%W not followed by t/s) |
Color:
bfind --color and btime default report
colorize on TTY; -printf / -f output is
plain text.
Aliases in btime -f only:
%N ≡ %Ws, %n ≡
%Wt (same 9 d.p. values).
| Specifier | Output | BSH TIMEFMT | btime -f |
|---|---|---|---|
| %dE | Elapsed (real) | %.6f md | %.6f md |
| %dU | User CPU | %.6f md | %.6f md |
| %dS | System CPU | %.6f md | %.6f md |
| %b | Elapsed millidays | — | %.6f (machine; no suffix) |
Conversion: millidays = seconds ÷ 86.4
btime -f timing extensions (GNU -f namespace)
These letters reuse GNU time -f slots with BrightDate
meaning inside btime -f only. Do not
use in bfind -printf (different GNU meanings there).
| Specifier | Meaning | Output |
|---|---|---|
| %B | Elapsed wall time | {:.9} BrightDate days |
| %b | Elapsed wall time | {:.6} millidays (no suffix) |
| %N / %n | Start / end wall time | {:.9} (same as %Ws / %Wt) |
Standard GNU letters (%E, %e,
%U, %S, %P,
%C, %M, …) behave as GNU time 1.10.
-printf)Fixed formatting, not user format strings:
| Surface | Typical precision | Notes |
|---|---|---|
| BSH prompt %P | 6 d.p. | Current BrightDate |
| stat / ls -l | 6 d.p. | File timestamps |
| btime default report | 6–9 d.p. | Multi-line, optional color |
| BSH TIMEFMT %d* | 6 d.p. + md | Shell time keyword |
bright-iputils does not implement
-printf specifiers. It uses explicit unit suffixes:
| Suffix | Meaning |
|---|---|
| md | Millidays |
| ud | Microdays |
| nd | Nanodays |
| d | Days |
Example: bclockdiff -B →
115740.740740741ud. Semantically equivalent to
BrightDate sub-day units; different syntax from %W*.
| Pattern | Reason |
|---|---|
| %b in bfind | GNU 512-byte blocks |
| %B in bfind | GNU birth-time strftime (%Bk) |
| %n in bfind | GNU hard-link count |
| %*E, %m*, %u*, %n* in TIMEFMT | zsh/BSH shell time keyword only |
| %b / %B in bdate --strftime | POSIX month names (chrono), not millidays |
Implementation references:
crates/btime/src/format.rs (timing),
bright-findutils/find/print.c (files),
bsh/Src/jobs.c (TIMEFMT).
brew tap digital-defiance/tap
# Shell + file tools + networking
brew install bsh bright-findutils bright-iputils
# Rust CLI utilities
brew install bdate btime buptime bcal bwatch
On Ubuntu/Debian,
bright-iputils
is also available via PPA:
ppa:digital-defiance/bright-iputils.
bdate # current BrightDate
bfind ~ -maxdepth 1 -printf '%Wt %p\n' | head -3
btime -f '%Wt %dE md' sleep 1
bping -c 1 127.0.0.1
Per-project build instructions and platform notes live in each repo's README and docs site: bright-findutils, bright-iputils, brightdate-rust, BSH.