Why so many tools?
Each one occupies a slot in the chain. Removing any one of them creates a step the agent has to fill with native tools, which means losing budget control at that step.
fsuite isn’t a CLI. It’s a discipline, packaged as 14 tools, delivered through whatever surface the agent already speaks.
After Episodes 1, 2, and 3, fsuite was working. Telemetry showed adoption climbing past 90% on agents that had hooks installed. Token usage per task was down 8-12×. Agents that used to compact their context every twenty turns now ran for a hundred without strain.
Someone — it doesn’t matter who, but it does matter that they were not on the team — asked the question that reframed everything:
“I don’t get it. It’s just
grepandcatwith budgets. Why does this work so much better?”
The answer the team almost gave was the technical one: ripgrep is faster than grep, ranking matters, symbol-aware reading is novel, hooks force adoption. All true. All beside the point.
The answer they ended up with was different.
The 14 tools are not the product.
The chain is the product:
Every tool exists because the chain needed something there. fmap exists because step 3 had no native equivalent. fcase exists because the chain had to survive across sessions. fmetrics exists because the chain needed to learn from itself. fbash exists because sometimes you need to break out of the chain entirely, but in a budgeted way.
If you removed the discipline and kept the tools, you’d have 14 mildly-better Unix utilities. If you removed the tools and kept the discipline, you’d have a worthless instruction sheet — agents don’t follow instructions they can sidestep with cat.
You need both. The tools are how the discipline gets delivered. That’s the lightbulb.
Once you see fsuite as a delivery vehicle for a discipline, every design question gets clearer:
Why so many tools?
Each one occupies a slot in the chain. Removing any one of them creates a step the agent has to fill with native tools, which means losing budget control at that step.
Why hooks AND MCP?
Hooks deny the wrong tools. MCP delivers the right ones. The discipline only takes hold when both are present — anything less and the agent slides back to muscle memory.
Why telemetry?
A discipline that can’t measure its own adherence is a religion. fmetrics makes the chain falsifiable — we can see when an agent skips step 3 and bleeds tokens at step 4.
Why fcase?
Disciplines that don’t survive context compaction aren’t disciplines, they’re moods. fcase is how the chain persists across sessions so day-2 agent picks up where day-1 left off.
Think of fsuite as two things stacked on top of each other:
CARGO — the discipline Scout, narrow, map, read, act. Token-budgeted. Symbol-aware. Persistent across sessions. Falsifiable via telemetry.
CARRIER — the delivery surfaces
14 CLI tools (fs, fmap, …). MCP server. Hook configs. JSON output mode. fbash escape hatch.
The cargo is what moves the needle. The carrier is what makes the cargo reach an agent’s actual hands. We optimize both, but we never confuse them — adding a tool that doesn’t carry a piece of the discipline is dead weight, and tightening the discipline without a carrier the agent can hold is empty advice.
If you’re trying to figure out whether fsuite is worth installing for your team’s agents:
grep.fmetrics shows the chain being followed, you have the discipline. If it shows agents stopping at step 2, the chain isn’t sticking and something is wrong with your hooks.The story so far: 3 incidents, 1 synthesis, 14 tools, 1 chain. Where it goes from here is open. A few directions the team is exploring:
fmap handles the major languages well; the long tail (Rust macros, Elixir behaviors, Zig comptime) is uneven.fcase. Telemetry knows what the agent did yesterday. There’s a path to making that learnable.fmetrics benchmarking is starting to map this surface.But the lightbulb itself doesn’t change. fsuite is the tools. The tools are the chain. The chain is the point.