Firefly Labs
← ブログ

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.