Firefly Labs
← Blog

Terminal-first by default

Across the lab β€” firetasks, firekeep, firecalendar, firesearch, firenotes, and others β€” the common thread is the same: every tool is usable from a shell before anything else.

That is policy, not accident.

Why the terminal comes first

The terminal is fast, scriptable, and honest.

  • No loading spinner hiding a slow backend
  • No onboarding flow pretending the product is simpler than it is
  • No UI team blocking a bug fix in the core logic

If a tool works in the terminal, it composes with what you already have β€” grep, jq, fzf, cron, ssh, your editor, your own scripts.

The progression

Most Firefly projects follow the same path:

  1. Core library β€” stable Rust API, storage, business logic
  2. CLI β€” thin wrapper, scriptable, pipe-friendly
  3. TUI β€” optional interactive layer on top of the same core
  4. GUI β€” only when the use case genuinely needs it

firetasks and firecalendar have TUIs. firenotes and aire are web/desktop because writing benefits from a visual surface. firemusic stays in the terminal because that is where discovery and playback fit.

GUIs are not forbidden. They are just not the default assumption.

The bar

A Firefly tool should be useful in one command. Everything else β€” menus, themes, dashboards β€” is optional.

If it takes a GUI to accomplish the basic job, we have not finished the CLI yet.