Eduardo Freitas / tools

Tools I built for my own work, published for yours.

Free, open source and in use. Each one gets its manual page here: what it does, how to install it, and what it actually prints.

Every tool on this page
NameKindLangLicenceVersionWhatStatus
confdriftCLIGoMIT0.1.0Finds config drift between environmentsreleased
reithemeTOMLMITmainBlue-on-black theme for Omarchyreleased
CONFDRIFT(1)General Commands ManualCONFDRIFT(1)
kind
CLI
status
released
version
0.1.0
released
2026-10-01
language
Go 1.24
licence
MIT
platforms
Linux, macOS, Windows
amd64, arm64
binary
static, ~3 MB
deps
yaml.v3

confdriftCompares configuration files across environments and tells you what drifted, before you deploy. Staging works, production doesn't, and somewhere between the two a key went missing or a timeout lost a zero.

SYNOPSIS

confdrift [flags] FILE FILE [FILE...]

INSTALL

go install github.com/eduardofrafre/confdrift@latest

or a prebuilt binary, Linux amd64 shown:

curl -sL https://github.com/eduardofrafre/confdrift/releases/download/v0.1.0/confdrift_0.1.0_linux_amd64.tar.gz | tar xz

Builds for Linux, macOS and Windows on amd64 and arm64, with checksums, are on the releases page.

DESCRIPTION

confdrift never compares text. It reads each file into a flat list of key paths and typed values, then lines every key up across all the files at once, two environments or ten. Ordering, indentation and format stop mattering; only real differences are left. A key is the same, changed, or missing somewhere.

  • dotenv: .env, .env.production, prod.env. Quotes, export, comments and multi-line values. ${VARS} are not expanded.
  • YAML and JSON flatten the same way, to paths like db.pool.max or servers[0], so a YAML file compares with a JSON one.
  • Kubernetes ConfigMaps compare by their data keys. helm template and kustomize build output works as is.

Types count: 5432 and "5432" differ. Values of keys that look like credentials print as <redacted>, and are still compared, so a rotated secret still shows up.

EXAMPLE

examples/k8sexit 1
$ confdrift staging/configmap.yaml production/configmap.yaml
DATABASE_URL  changed
  staging     "postgres://checkout:<redacted>@db.staging.example.com:5432/checkout"
  production  "postgres://checkout:<redacted>@db.prod.example.com:5432/checkout"

FEATURE_NEW_CART  missing from production
  staging     "true"
  production  (not set)

LOG_LEVEL  changed
  staging     "debug"
  production  "info"

PAYMENTS_TIMEOUT_MS  changed
  staging     "3000"
  production  "300"

STRIPE_API_KEY  changed
  staging     <redacted>
  production  <redacted>

5 of 6 keys drifted across 2 files (1 missing, 4 changed).

OPTIONS

--keys-onlyReport only keys missing somewhere, not value differences. Usually what CI wants.
--ignore PATTERNSkip keys matching PATTERN, * as wildcard. Repeatable.
--format text|jsonOutput for people, or for scripts and bots.
--show-secretsPrint the values of keys that look like credentials.
--versionPrint the version and exit.

EXIT STATUS

0The files agree.
1Drift found.
2Bad input: unreadable file, parse error, unknown flag.

SEE ALSO

The confdrift page runs the real engine, compiled to WebAssembly, on your own files in the browser, and covers CI and per-platform install. Bugs and formats it should read go to the issue tracker.

confdrift 0.1.02026-10-01CONFDRIFT(1)
REI(7)Miscellaneous Information ManualREI(7)
kind
theme
status
released
version
main (untagged)
released
2026-08-23
language
TOML
licence
MIT
platforms
Omarchy
Hyprland

Rei, a theme for OmarchyOne muted blue against true black, taken from Rei Ayanami's hair and eyes, with gradient window borders driven straight from the palette file.

INSTALL

omarchy theme install https://github.com/eduardofrafre/omarchy-rei-theme

Omarchy clones it to ~/.config/omarchy/themes/rei and applies it. omarchy theme update pulls changes; omarchy theme remove rei takes it out.

An Omarchy desktop in the Rei theme: a blue-lit anime wallpaper behind a terminal showing system information in blue on black.
Rei on Omarchy: wallpaper, terminal and borders from one palette.

DESCRIPTION

The palette, an icon theme, the wallpaper and a character cutout that Omarchy's theme switcher shows as the preview. The accent #617bb9 runs through the terminal, the window borders and the UI. The border gradient is two keys in colors.toml:

# colors.toml
hyprland_active_border = "rgba(617bb900) rgba(617bb9b3) 45deg"
hyprland_inactive_border = "rgba(617bb955)"

The thin 1px border and the slightly transparent terminals in the screenshot are personal Hyprland settings, not part of the theme; the README has both snippets, plus a cutout to use as a fastfetch logo.

PALETTE

ground
#000000
ink
#e2e8e9
muted
#686163
accent
#617bb9
red
#9987c3
green
#71ccfb
cyan
#87deff
magenta
#9c9ff3

SEE ALSO

This page. It is set in the same colours and the same typeface, iA Writer Quattro and Mono, as are eduardofrafre.com and its sibling sites.

rei2026-08-23REI(7)
HIRE

Need something built, kept running or fixed?

I take paid engagements alongside these tools. Scope and price in writing before any work starts.

SUPPORT

The tools are free and stay free.

If one of them saved you time or caught something before a deploy did, a donation pays for hosting and the hours that go into them.

QR code for the PayPal donation page
scan to donate