A suite of fast, opinionated terminal tools written in Rust. Single static binaries. Shared TUI foundation. No runtime deps.
Rust, the language, was actually named after a family of fungi (Pucciniales, plant pathogens "over-engineered for survival," as Graydon Hoare put it). The iron-oxide association came later, through the visual rhyme with what those fungi look like on a leaf. Fe2O3 is that iron oxide: what happens when iron meets oxygen meets time. These tools are the result of pointing fast iron at the soft corners of a workflow. This is the terminal half of that toolkit.
Every tool sits on crust, a small pane-based TUI library. Colors, borders, scrolling, image rendering, and line wrapping all behave identically everywhere.
No Ruby, no Node, no Python. Drop the binary in ~/bin
and it runs. Startup time is under 50 ms on a warm disk.
Every Fe2O3 tool is a feature port of a long-running Ruby original. Same UX, dramatically faster, and with async fetches so the UI never blocks on network I/O.
glow renders images inline using kitty, sixel, w3m, or — as a graphics-free fallback — colored Unicode braille (works over SSH and in tmux without passthrough). PDFs preview as thumbnails, videos as extracted frames, emails as rendered pictures, astronomy as starcharts.
Thirty binaries and six libraries that together cover most of what a keyboard-bound terminal user does in a day — plus a phone companion that bridges one of those workflows off the laptop.
fe2o3 is the suite as a grid of cards: every app with
its logo, what it is, and one line on why. Arrow keys move, Enter
runs it in the same terminal, ? shows that
app's own help, w opens its repo, /
filters.
It is also the installer. What you have has a solid frame and a
green ✓; what you do not have is dashed with an
amber ↓. i fetches the one under the
cursor, I fetches every missing one in view. So one
binary is all you need — take the whole suite, or only the apps
you fancy.
fe2o3 # the grid
fe2o3 -l # the suite as text
Two-pane file manager with syntax-highlighted previews, inline image + video frame rendering, archive browsing, SSH, async file operations, undo, bookmarks, plugins.
Unified terminal inbox for maildir email, RSS, weechat, Slack, Discord, SMS. Thread view, tagging, search, AI assistant, compose plugins, OSC 8 clickable links.
Vim-flavoured modal editor for writers. Soft-wrap, reading mode, spellcheck, persistent registers, Claude Code in the prompt. Native HyperList editing (full hyperlist.vim parity — replaces the retired hyper).
Day/week/month calendar with ephemeris: sun, moon, planets, astronomical events. Google Calendar + Outlook sync. Desktop notifications. Shared ephemeris engine with nova.
A terminal spreadsheet that lets the AI do the tedious parts. Edit cells and write formulas, or just tell Claude what to change. Reads and writes csv/xlsx/ods with a hand-rolled formula engine, undo, and multi-sheet workbooks.
One read-only view for any file: spreadsheets, documents, slide decks, PDFs, images and syntax-highlighted code. Renders each with the right method and launches the right editor on a keypress. Browses with pointer; new formats are a config line.
Bookmark and resume Claude Code sessions with tags: cc / cl pickers with reorder and running indicators, /bm command inside Claude, automatic follow of context continuations.
A terminal RPN scientific calculator in the HP tradition: a live
X/Y/Z/T stack, the full math/trig/log/stats/base command set, and
coloured cycling shift pages (f/g/h). Runs XRPN (HP-41 / FOCAL)
programs. Shares one Rust engine with the RPNx phone app; the scribe
editor drops its result into your text on =.
Single amateur-astronomy app: Sky mode (weather, ephemeris, observation conditions, APOD, starcharts) plus Gear mode (telescopes, eyepieces, recommended combinations, observation logs). Replaces nova and scope.
3,386 nuclides from the IAEA table, neutrons across and protons up, coloured by how each one comes apart. Enter follows a decay chain to its stable end: uranium-238 reaches lead-206 in fourteen steps. Press i in elements to land here.
The Hertzsprung-Russell diagram in the terminal. 461 named stars plotted by temperature and luminosity, walk between them with the arrow keys, schematic evolutionary tracks for 1, 5 and 15 solar masses, and the full Wikipedia article for each star offline.
The Standard Model chart with every particle's PDG numbers and its Wikipedia article, plus a zoom that takes a carbon atom apart in four steps — nucleus, nucleon, quark — as a 3D model you rotate with the arrow keys.
The periodic table in your terminal. All 118 elements plus the hypothesized 119–126, category-colored, with structured properties and the complete Wikipedia article per element — fetched once, then fully offline.
How far out a planet orbits runs across, how big it is runs up, and our own eight are drawn in white for scale. Enter unfolds the whole system with the band where water could stay liquid.
Five pictures of one idea: repeat something simple and watch what it settles into. Zoom the Mandelbrot set, step into the Julia set of the point you are standing on, or turn the knob on a Lorenz attractor until the butterfly collapses.
Reader for your personal daily news digest. A server-side Claude run gathers the news you care about into a dated Markdown issue (and a typeset PDF); gazette browses the last 7 days and opens source links in scroll.
IMDb Top 250 browser with inline posters, TMDb streaming info, wish/dump lists, genre filters, async background fetching. Cut search time so you spend time watching.
Terminal Spotify controller. Search, browse playlists and saved tracks, queue items, switch devices, drive playback (play / pause / next / prev / seek / volume / shuffle / repeat). No audio backend — drives Spotify Connect, so playback runs on whatever device the user authorizes (phone, desktop, speaker, web player).
A personal library of the books that should exist. Curate a shelf of enticing titles; grab one and Claude writes the whole book, with inline figures, to read in the terminal. Real books fetch from legal sources. Syncs to the phone reader, books.
Five-tab terminal companion for the Amar RPG — a 3-tier d6 system. NPC / encounter / town / weather forge, persistent campaign tracker with adventure import + inline scene images, live combat HUD, browsable canon (187 wiki entries scraped from d6gaming.org), and AI-assisted Inspire prompts.
Terminal melody maker. Play a piano line live on the keyboard, record and edit it on a piano-roll, keep time with the metronome, then export to WAV as the starting point for a song.
Terminal Petri net player. Load a net, fire transitions and watch tokens flow, spot conflicting transitions, and search for deadlocks. A compact playground for modelling concurrency.
Terminal touch-typing tutor. Eight lessons from the home row to full sentences, strict advance-on-correct-key drills, live WPM and accuracy, per-lesson personal bests. US and Norwegian keyboard layouts.
TUI color picker with FG/BG slots, R/G/B and H/S/V sliders, hex input, live sample-text preview, and WCAG 2.x contrast ratio. Pure ANSI 24-bit truecolor — no kitty graphics dependency.
TUI font picker with live previews. Enumerates every installed
font via glyph, previews the highlighted family in its own
typeface (drawn with glow), and returns the chosen family and
point size. Launchable as a picker like prism — scribe binds
\F to it.
Top drainers by CPU%, voluntary-context-switches/s (the
polling proxy), and I/O. Per-workspace attribution via
EWMH, claude-powered analysis pane, persistent baseline,
strace -c on demand, and a pinned summary
for the asm foundation tools.
Replaces Firefox's removed "Open network login page" banner. Subscribes to NetworkManager via D-Bus and opens a Firefox tab at the gateway IP on captive-portal detection. Pure signal-driven; ~4 MB RSS, 0 % CPU when idle.
Interactive shell with tab completion, history search, syntax highlighting, nick/gnick aliases, per-command autocorrect, and OSC 7 for terminal cwd tracking. ~26 ms startup.
Interactive TUI configuration for the rush shell. Browse and modify all rush settings with live color previews, theme cycling, and a full 256-color palette.
The TUI foundation that every Fe2O3 tool builds on. Panes,
colors, borders, input, scrolling, Unicode, OSC 8 hyperlinks,
diff rendering. Published as fe2o3-crust.
Terminal image renderer supporting kitty, sixel, w3m, and
colored-braille fallback for graphics-free terminals. Auto-detects
the best fit. Used by pointer, kastrup, scroll, watchit, and
astro. Published as fe2o3-glow.
Theme-aware syntax highlighter. ~18 source languages plus
dedicated HyperList, Markdown, LaTeX, and email-mode renderers.
Multi-line block-comment / string state, six built-in themes,
shared theme palette. Used by scribe, pointer, kastrup.
Published as fe2o3-highlight.
Moon phases, sun and planet positions, observation windows.
Shared ephemeris engine used by tock and astro.
Published as fe2o3-orbit.
The naked-eye sky in braille: 9,096 stars from the Yale Bright Star Catalogue with Hipparcos distances, the constellation figures, the sky over your head or the celestial sphere as a map, and a picker you walk with a crosshair. Drives astro's chart and stars' sky.
Sparklines, line charts, candlestick charts, and bar charts rendered with Unicode block / braille characters and ANSI colors. Pure Rust, zero runtime dependencies.
The parts of reading mail that are pure logic: quoted-printable,
base64, RFC 2047 headers, the multipart walk that finds the
readable part, HTML mail reduced to text, and which messages
have been read, merged across devices. Shared by kastrup and the
nomad mail app. Published as fe2o3-mail.
RSS and Atom turned into entries, with no I/O: give it the XML,
get back the items. Deliberately not a strict XML parser, because
feeds in the wild are not strict XML. Shared by kastrup and the
nomad phone app. Published as fe2o3-feed.
nomad is the mobile half of the family — a single Android monorepo with a shared Rust core (the same logic as the desktop, via UniFFI) under thin Kotlin / Compose shells. Each app carries one Fe2O3 workflow off the laptop and syncs over Syncthing — no Google account, no cloud middleman.
HyperList todo editor + Glance home-screen widget for the same
~/.tasks/todo.hl that scribe edits and kastrup's
z triage appends to.
General HyperList editor — full syntax highlighting, fold, drag-reorder across depth, and auto-renumber.
Notification gateway: relays WhatsApp / Messenger / Instagram / SMS / Discord (and photos) into kastrup and fires replies — replacing the laptop's Marionette bridge.
Amateur-astronomy companion: ephemeris, met.no weather + observing conditions, in-the-sky events, APOD, starchart, and a telescope/eyepiece gear catalog (shared with desktop astro).
TMDB movie / series browser — top-rated & popular lists, your own wish/dump lists, posters, full detail, and search-to-add.
Amar RPG O6 dice roller: D6, skill, and combat rolls with the full crit/fumble tables, plus fear rolls with mental-fortitude.
Pocket HP-41 RPN scientific calculator — full stack/registers/modes, an HP-41-style multi-shift keypad, and a FOCAL program runner. Same Rust engine as the rpnx terminal calculator.
Distraction-free notes pad — the touch companion to the scribe editor, syncing the same plain-text notes over Syncthing.
Offline, searchable reference reader — glossaries, books, and your own writings in your pocket, with no network needed.
Voice quick-capture — hold, talk, and file a transcribed note; the
pocket version of the laptop's Win+a VTT.
Reader for your personal daily news digest — browse the last 7 daily
issues (and the typeset PDF) synced into ~/.news, open
source links. Touch companion to the gazette TUI.
The library on your phone. Read-only reader over the synced
~/.library: only the books you have made, grouped by
shelf, with inline figures, read full-screen and offline.
A minimal home-screen launcher: one screen, your widgets placed freely, nothing else. Built to cost nothing when idle, no polling or background wake-ups.
Your Gmail inboxes and RSS feeds on the phone, decoded by the same crates kastrup uses. Headers on sync, bodies on open. The laptop stays authoritative: opening a message here changes nothing, only an explicit Mark READ does, and that reaches the laptop too.
Archived: nova and scope have been folded into astro; hyper has been folded into scribe.
Each tool ships multi-platform prebuilt binaries on every tagged
release. Grab the launcher, then press I and it fetches
every app you do not have:
curl -L "https://github.com/isene/fe2o3/releases/latest/download/fe2o3-linux-x86_64" \ -o ~/bin/fe2o3 && chmod +x ~/bin/fe2o3 fe2o3 # then press I # Other platforms: replace -linux-x86_64 with: # -linux-aarch64 (Raspberry Pi, ARM64 Linux) # -macos-x86_64 (Intel Mac) # -macos-aarch64 (Apple Silicon)
Or take them straight from the shell:
for app in pointer kastrup scribe scroll gazette tock astro watchit torii prism fonts drain amar tune melody petri library grid viewer rpnx typo elements stars particles; do
curl -L "https://github.com/isene/$app/releases/latest/download/$app-linux-x86_64" \
-o ~/bin/$app && chmod +x ~/bin/$app
done