Pages
  • life with BSD
  • 2025-12-07 Trying out flow control binaries for FreeBSD
  • 2025-11-07 Swift nightly preview for FreeBSD
  • 2025-11-02 Using jujutsu in a git compatible way to track freebsd ports
  • 2025-10-28 The sherlocking of the gemini protocol
  • 2025-10-09 How to change the options in a freebsd port
  • 2025-09-16 Waiting on Swift mainline for FreeBSD
  • 2025-08-25 Dmesg for Cable Matters USB 3.1 to 4 port Gigabit Ethernet Adapter
  • 2025-08-15 Generate a QR code with typst
  • 2025-07-31 Fixing jujutsu and leaky ascii escape sequences on FreeBSD
  • 2025-07-31 Swift now available as a package for FreeBSD
  • 2025-07-28 The FreeBSD project clarifies its stance on gen-ai powered contributions
  • 2025-07-28 The rustup question
  • 2025-07-08 Goodbye old friend, a tale
  • 2025-06-30 Configuring FreeBSD to network with a postmarketos phone over usb
  • 2025-06-25 swift (re)lands in the FreeBSD ports tree
  • 2025-06-24 typst a rust powered typesetting tool aiming at latex
  • 2025-06-19 Open Source Two Worlds thoughts
  • 2025-06-14 Taking a look at repolocli
  • 2025-06-09 Zig master builds now with FreeBSD support
  • 2025-06-07 Finding rust dependencies in Makefile.crates
  • 2025-06-05 Ripgrep or ripgrep-all
  • 2025-06-02 Ripgrep a nice Rust utility for ports spelunking
  • 2025-05-31 Get started with gpui on FreeBSD
  • 2025-05-29 Query freshports with Deno
  • 2025-05-27 Trying out Defuddle an npm tool via Deno
  • 2025-05-25 Deno for FreeBSD
  • 2025-05-23 A new beginning
life with BSD
  • life with BSD
  • 2025-12-07 Trying out flow control binaries for FreeBSD
  • 2025-11-07 Swift nightly preview for FreeBSD
  • 2025-11-02 Using jujutsu in a git compatible way to track freebsd ports
  • 2025-10-28 The sherlocking of the gemini protocol
  • 2025-10-09 How to change the options in a freebsd port
  • 2025-09-16 Waiting on Swift mainline for FreeBSD
  • 2025-08-25 Dmesg for Cable Matters USB 3.1 to 4 port Gigabit Ethernet Adapter
  • 2025-08-15 Generate a QR code with typst
  • 2025-07-31 Fixing jujutsu and leaky ascii escape sequences on FreeBSD
  • 2025-07-31 Swift now available as a package for FreeBSD
  • 2025-07-28 The FreeBSD project clarifies its stance on gen-ai powered contributions
  • 2025-07-28 The rustup question
  • 2025-07-08 Goodbye old friend, a tale
  • 2025-06-30 Configuring FreeBSD to network with a postmarketos phone over usb
  • 2025-06-25 swift (re)lands in the FreeBSD ports tree
  • 2025-06-24 typst a rust powered typesetting tool aiming at latex
  • 2025-06-19 Open Source Two Worlds thoughts
  • 2025-06-14 Taking a look at repolocli
  • 2025-06-09 Zig master builds now with FreeBSD support
  • 2025-06-07 Finding rust dependencies in Makefile.crates
  • 2025-06-05 Ripgrep or ripgrep-all
  • 2025-06-02 Ripgrep a nice Rust utility for ports spelunking
  • 2025-05-31 Get started with gpui on FreeBSD
  • 2025-05-29 Query freshports with Deno
  • 2025-05-27 Trying out Defuddle an npm tool via Deno
  • 2025-05-25 Deno for FreeBSD
  • 2025-05-23 A new beginning

2025-12-07 Trying out flow control binaries for FreeBSD

Here is the 'quick start' method as mentioned on their website.


curl -fsSL https://flow-control.dev/install | sh

Let's break down the options for curl (--help all):

  • -f - failfast

  • -s - silent mode

  • -S - show errors

  • -L - follow http redirects

Let's dive into its shell script execution assumption fun (or hell, I guess). First off, run it as a normal user.


$ curl -fsSL https://flow-control.dev/install | sh
sh: jq: not found

This machine doesn't have jq installed. oops...

Here is where I am supposed to say "just install jq" and be done with it (and find even more assumptions).

On second thought, let's make this more interesting (to me) and use FreeBSD standard tools and poke around at this install script and discover some things about it:


$ cd /tmp

$ fetch  https://flow-control.dev/install

## check the top line (/bin/bash is a headache for FreeBSD)
$ head -n 1 install
#!/bin/sh

## any chance freebsd is mentioned here?
$ grep -i freebsd install

## nope
$ echo $?
1      

## how about something related to os detection? bingo
$ grep 'os=' install
os="$(uname -s | tr '[:upper:]' '[:lower:]')"

## how often is it used?
$ grep '$os' install
if [ "$os" = "darwin" ]; then
    filename="flow-$version-$os-$arch"
if [ "$os" = "windows" ]; then

## which lines ask for jq?
$ nl install | grep jq
 139  version=$(curl -s "https://api.github.com/repos/$repo/releases/latest" | jq -r .tag_name)
 141      version=$(curl -s https://codeberg.org/api/v1/repos/neurocyte/flow-nightly/releases/latest | jq -r .tag_name)
 143          version=$(curl -s https://git.flow-control.dev/api/v1/repos/$repo/releases/latest | jq -r .tag_name)
       

tldr; it looks for a binary named flow that includes version, operating system and architecture in the filename.

Does it actually support FreeBSD binary downloads? (A question always worth asking (in 2025)). According to the latest release notes (as of this writing), yes!

We now produce binary release for FreeBSD, thanks to Zig 0.15 support for FreeBSD cross-compilation.

After a bit more finagling and downloading the binary manually. Here is a screenshot:

flow control screenshot

Oh interesting it supports vim and emacs keybindingmodes (for those old-skool trained fingers).

Time to play!

PREVRANDOMNEXT