A Goblin Reactor project · Montpelier, Vermont

Alpine roots.
New horizons.

Skadi is a fork of Alpine for modern terminals and life on a thin connection. Inline images, rich-text composition, and offline mail, with support for kitty and Silkie.

Keyboard at hand. Mail close by. A little farther from the grid.

The fluffy black-and-white Goblin Reactor silkie chicken on a pair of skis.
01 / SKADIReady for different terrain.
THE FAMILY TREE

Pine Alpine Skadi

Built on Alpine’s foundations

01 / What’s new

Familiar mail.
More capable terminals.

Skadi keeps Alpine’s keyboard-driven workflow, mail configuration, and Pico composer. These are the additions in the fork.

01Images in your mail
See image attachments and embedded HTML images directly in the message viewer. Thumbnails preserve their proportions, adapt to terminal resizing, and work over SSH with the kitty graphics protocol.
02A richer composer
Add bold, italic, headings, links, lists, quotes, and inline images with keyboard shortcuts. Send HTML with a plain-text alternative, preview that text before sending, and resume HTML drafts. Optional formatted replies preserve basic markup.
03Files across the connection
Use the kitty file-transfer protocol to download attachments to the computer running your terminal, or attach files from that computer to a remote mail session. Choose one attachment or download them together.
04Modern keyboard input
Support for the kitty keyboard protocol and modified keys makes Alt shortcuts available throughout the composer. Bracketed paste keeps pasted text from turning into editor commands.
05Browser sign-in, less copying
OAuth authorization can receive a browser callback locally, with a clickable sign-in link and a responsive authorization screen. Remote sessions provide instructions for forwarding the callback over SSH.
06Mail when the link drops
Read cached IMAP mail offline, keep flag changes for the next sync, and queue failed sends in a local outbox. Select messages and Sync to download their bodies in one batch; complete downloads survive interruptions.
07Fewer waits, informed downloads
Sync fetches every uncached header and subject in one flight with message and attachment metadata. Press [ in the index to inspect encoded attachment sizes before downloading. Metadata stays available offline.
08Images on your terms
Click an HTTPS image, or Tab to it and press Enter. With Njord, your home computer fetches it and sends a smaller WebP preview. Press O for the original. Repaints and cache lookups never fetch images automatically.

02 / The terminal is part of the experience

At home in
kitty & Silkie.

Skadi uses the graphics, keyboard, and file-transfer protocols provided by kitty and inherited by Silkie, Goblin Reactor’s fork of kitty.

Image rendering also supports iTerm2 images and sixel. Available features depend on the terminal and connection.

A few practical details

  • File transfers require a direct terminal session; the current transfer path does not run through tmux or screen.
  • Kitty and iTerm2 images under tmux need passthrough enabled.
  • On macOS, configure Option to send Alt for the composer’s formatting shortcuts.
  • The offline cache and new relay workflow target Unix systems.

03 / Meet Njord

Your connection home.

Njord is Skadi’s companion IMAP proxy. Run it on your home Linux computer and let that machine talk to your mail provider.

Njord 0.1.0 · native C++ Optional zstd level 22 transport, verified provider TLS, and WebP image previews.

THE OPTIONAL NJORD PATH Normal IMAP works directly too
WITH YOU

Skadi

Your mail client

AT HOME

Njord

Your Linux computer

AT YOUR PROVIDER

Your mail

Your existing account

Add /njord to a mailbox connection to use the proxy, or connect directly to your provider with normal IMAP. Header and body batches work either way. Njord compresses traffic in both directions and handles explicitly requested HTTPS images at home.

The goal is practical mail on constrained connections. This release adds the transport, batches and previews; automatic reconnect replay and measured satellite performance remain future work. The original image is always available on request.

Njord setup and configuration ↗

04 / Get started

Take it for a run.

Skadi and Njord live in the same repository. Skadi builds on Alpine’s C codebase; Njord is a native C++ relay with zstd compression and WebP previews.

macOS · Homebrew

Native Apple Silicon bottle, built and tested on macOS 26 Tahoe.

brew tap goblinreactor/tap https://brew.goblinreactor.com/homebrew-tap.git
brew install goblinreactor/tap/skadi goblinreactor/tap/njord
skadi
Bottles, source & checksums ↗

Skadi 0.1.0 · Njord 0.1.0. Native builds from localhost, naamah, graviton5, and loongson. Packages retain Alpine’s configuration paths and upstream version banner. Njord installs separately; no relay service starts automatically.

Build Skadi from source

Use Alpine’s build prerequisites plus zstd and WebP; the bundled Njord build also needs libevent and libcurl.

git clone https://github.com/adamdeprince/skadi.git
cd skadi
./configure
make
./alpine/alpine

The source build currently retains the alpine executable name and existing Alpine configuration paths.

Build documentation ↗

Install the Njord relay

Build with C++17, pkg-config, libevent, OpenSSL, zstd, libcurl, and WebP. See the build prerequisites for your platform.

make -C njord install PREFIX="$HOME/.local"
$HOME/.local/bin/njord \
  --upstream imap.example.com

Replace the example with your provider’s IMAP hostname. Njord listens on 127.0.0.1:1143 and connects upstream with verified TLS on port 993. Use listener TLS or an encrypted tunnel for remote access.

All relay options ↗

Work on the next chapter. Follow development, report an issue, or help improve mail on constrained connections.

Skadi on GitHub ↗