Skip to content


Worxbend logo

Tools for my own machine. Linux utilities, firmware, libraries, and a lot of things written twice.

I learn a system by building it, so some of these exist only because I wanted to understand something. Read the code before you run it. This page is a summary — the project site has every repo, searchable.

Start here

If you open one thing, open one of these. The rest is grouped below.

Project What it is
Scala libraries worxbend/worxbend → libs/commons/pretty-printo Pretty-prints any Scala 3 value. Mark a field @Excluded or @Redacted and it prints the declared type without ever reading the value — the secret never enters the output path.
worxbend/worxbend → libs/commons/reveal Same idea, derives PrettyPrintable, all resolved at compile time. Zero reflection, zero per-call cost, zero runtime deps. Enums, sealed traits, opaque types.
OBS & streaming worxbend/obs-stats btop for OBS. CPU, frame pacing, encoder health, scenes, audio — live, in a terminal.
worxbend/obsctl · worxbend/obsctl-rs Script OBS from the shell. Written twice: Crystal, then Rust.
Air quality worxbend/airgradient-desktop · ·-android · ·-cli · ·-papr One sensor, read five ways: GTK, Android, CLI, e-paper, GNOME applet. LAN only, no cloud account.
Linux setup worxbend/fluxion.cr · w0rxbend/system-bootstrap Wiped disk to working dev machine, driven from Git.
Hardware w0rxbend/spycam + w0rxbend/instachron Two halves of one link. ESP32-CAM pushes JPEG frames over a raw TCP socket; a Go server catches them.

🎛️ OBS and streaming tools

Everything that runs while the stream is live. Most of it drives OBS over obs-websocket.

Project What it does Built with
worxbend/scenedeck Desktop window for Linux: switch scenes, toggle sources, start and stop the stream. Shipped on Snapcraft. Rust, GTK4
worxbend/obs-stats btop for OBS health, live in a terminal. Rust, Ratatui
worxbend/obsctl CLI plus TUI for scenes, audio and profiles. A daemon keeps the socket warm so commands are instant. Crystal
worxbend/obsctl-rs Same controller, rewritten in Rust. Keyboard-driven, full screen. Rust, Ratatui
worxbend/multistream-manager Fill one form, press Start Streaming once, go live on Twitch and YouTube together. Rust
worxbend/twi Twitch chat over IRC in a terminal. Multiple channels, 13 themes. Go
worxbend/yc YouTube live chat in a terminal, with the daily API quota on screen. 58 themes. Go
worxbend/streaming-tools-site Interactive map of how these tools wire into OBS, Twitch and YouTube. obs.worxbend.com JavaScript, PixiJS
w0rxbend/obs-effects Animated transparent overlays, dropped into OBS as browser sources. obs-effects.worxbend.com TypeScript, PixiJS 8
w0rxbend/twitch-voxer Reads chat aloud. Detects Ukrainian or English, pins one voice per chatter. Python
w0rxbend/twitch-vizer Alerts for follows, subs, cheers and raids, off Twitch EventSub. Python, TypeScript
w0rxbend/twitch-musicplayer Go service serves the library, browser front end plays it and draws the visualiser. Go, TypeScript
w0rxbend/chat-brawl Type in chat, spawn into an on-screen fighting arena. TypeScript, PixiJS

⬡ Scala, the JVM and libraries

pretty-printo and reveal live in the worxbend monorepo, not in their own repos. Mill build, reusable pieces under libs/.

Project What it does Built with
libs/commons/pretty-printo Configurable string rendering for any value. @Excluded and @Redacted fields are described from their declared type, so the printer never touches the value — which is what makes redaction and null safe. Scala 3, Magnolia
libs/commons/reveal The successor, derived by macro. Omissions, redactions and type spellings are all decided during expansion. No reflection, no runtime deps. Enums, sealed families, opaque types. Scala 3 macros
w0rxbend/scalacv Scala 3 API over OpenCV 4.13. Typed pipeline that frees native memory exactly once. Docs Scala 3, OpenCV
worxbend/gitea-scala-client Typed Gitea client, verified against the OpenAPI contract. Site Scala 3, ZIO 2
worxbend/codeberg4s Codeberg and Forgejo client returning plain Future. No effect system dragged into your build. Scala 3, sttp
w0rxbend/shield Self-hostable auth server, wire-compatible with SuperTokens clients. Scala 3, ZIO
w0rxbend/compression-flix Lichess clock and move compression ported to Flix, byte-for-byte. One differing bit would invalidate every stored game. Flix
w0rxbend/scalachess-flix Lichess chess rules in Flix, checked against the upstream fixtures. Not a drop-in replacement. Flix
w0rxbend/data-engineering Kafka, Kafka Connect and Flink sandbox, with a custom partitioner for the S3 sink. Scala, Kafka
worxbend/playground One event-streaming service, three web frameworks, side by side. Scala 3, Kafka
worxbend/worxbend The monorepo: small Scala apps, the libraries above, deploy recipes, notes. Scala, Mill

🛠️ Linux tooling and provisioning

Wiped disk to working dev machine, no manual steps. The same tool shows up four times in four languages. That is not accidental — rebuilding something you already understand is how you learn a language, because the problem stops being the problem.

Project What it does Built with
worxbend/fluxion.cr One YAML file: packages, Flatpaks, dotfiles, fonts, binaries. Diffs the plan before it touches anything. CLI or TUI. Site Crystal
w0rxbend/system-bootstrap My real setup: Fedora, Arch and openSUSE. Packages, binaries, dotfiles, Nerd Fonts, terminals, Neovim, GNOME/COSMIC/Sway. Shell, Lua
worxbend/fluxion The original, on the JVM. Records what it installed so the second run skips finished work. Site Java
worxbend/binstaller Same prebuilt binaries on every machine from one profile. SHA-256 checked, lock file written. Site Scala 3, GraalVM
worxbend/nerd-fonts-installer Nerd Fonts from one config file, with an interactive picker. Site Go
worxbend/dotbot-go · worxbend/dotbot-scala Dotbot rewritten twice. The Scala one compiles to a static binary, so the target box needs no JVM. Go · Scala 3
w0rxbend/infrastruct An ARM homelab as files in Git: inventory, Ansible, K3s with Flux CD, Docker stacks, encrypted secrets. Python, Ansible
w0rxbend/ops-dashboard Watches that homelab. Exporters, VictoriaMetrics, Grafana, uptime checks, one browser dashboard. TypeScript, SolidJS

🌬️ IoT: air quality and TCP cameras

Firmware on small Wi-Fi boards, usually shipped with the server on the other end of the socket. Raw TCP, no broker, no cloud.

The ESP32-CAM link — three repos, one system

spycam is the camera half: ESP32-CAM firmware that captures JPEGs and pushes the newest one over a long-lived raw TCP socket, dropping stale frames and reconnecting on its own. instachron is the server half: a Go service that listens on that socket, stores frames, and republishes them over HTTP with restreaming, optional detection and upscaling, and a timelapse recorder. spycam-s3 is the camera half rebuilt for ESP32-S3, stamping a camera ID into every frame so several boards feed one server.

AirGradient

CO₂, PM2.5, temperature and humidity off an open-source indoor monitor. Every client below reads the device over LAN. No cloud account, no vendor app.

Project What it does Built with
worxbend/airgradient-desktop Linux desktop window, live readings, monitor discovered on the network. Rust, GTK4
worxbend/airgradient-android Native Android app. Dashboard plus notifications past a severity threshold. Kotlin, Compose
worxbend/airgradient-cli Reads the desktop app's config, fetches once, prints compact. Rust
worxbend/airgradient-papr E-paper firmware. Portable readout with weather and forecast. C++, ESP32
worxbend/airgradient-gnome-extension One icon in the GNOME top bar, coloured by air quality, gauges in the popup. JavaScript
worxbend/airgradient-observability Self-hosted metrics: collector scrapes the sensor into VictoriaMetrics, Grafana on top. TypeScript, Go
worxbend/tv-dashboard Always-on TV dashboard: air quality, weather, indoor climate, agenda, system status. TypeScript, SolidJS
w0rxbend/neoncore Addressable LED panel as an air-quality indicator. Readable across the room, no legend needed. C++, ESP32

Other boards

Project What it does Built with
worxbend/frostfire ESP32 across a PC power-button header. Remote power-on. Fixed-length pulses, relay off at boot, token required. C++
worxbend/frostfire-backend The guarded service in front of that relay. Every request hits a safety policy before it reaches hardware. Python, FastAPI
w0rxbend/led-matrix-controller ESP8266 driving an 8x8 panel. Binary command protocol over TCP, falls back to its own AP when unconfigured. C++
w0rxbend/echo Webhook to LED panel. Post an event, rules pick an animation, echo pushes it over TCP and reconnects itself. Go

No API stability, no release cadence, no support. Issues and small PRs welcome — Linux usability, packaging, docs, clear bugs. Anything that changes a project's direction will probably get a no.

Pinned Loading

  1. airgradient-gnome-extension airgradient-gnome-extension Public

    GNOME Shell panel extension for the same AirGradient local-server workflow used by airgradient-desktop.

    JavaScript

  2. dotbot-go dotbot-go Public

    A Go implementation of Dotbot for managing dotfiles with declarative config, symlink creation, cleanup, directory creation, and shell commands.

    Go

  3. nerd-fonts-installer nerd-fonts-installer Public

    🎨 Nerd Fonts, installed the boring way — one config file, one command, every machine. A small, scriptable Go CLI with checksum-verified downloads and an interactive terminal picker.

    Go

  4. airgradient-desktop airgradient-desktop Public

    Air Monitor is a GTK 4 + libadwaita desktop dashboard for an AirGradient device

    Rust

  5. scenedeck scenedeck Public

    SceneDeck is a Linux desktop controller for OBS Studio. It is built with Rust, GTK4, libadwaita, Tokio, and the OBS WebSocket protocol

    Rust 2

  6. airgradient-android airgradient-android Public

    Kotlin

Repositories

Showing 10 of 28 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…