A coding agent is only as good as what's in its context window, and most of what lands there isn't reasoning. It's raw data. A thousand-line file you needed three functions from. A build log where one assertion failed. Search results you'll scan once and discard. Every one of those tokens competes with the thinking that actually solves your problem, and you pay for all of them. Lineman's job is to make sure your model sees the signal and skips the noise.
What sits between your tools and your model
When your agent reads a file, runs a build, searches the codebase, or fetches a page, the result normally flows straight back into the conversation, verbatim and however large. Lineman steps into that gap. The raw output goes to a fast secondary model that distills it down to what the task actually needs, and your primary model receives the distilled version instead of the firehose.
The effect is easy to describe:
| Without Lineman | With Lineman |
|---|---|
| 1,200 lines of a file pasted into context | The functions and signatures you asked about |
| A full build log | The failures and what caused them |
| Raw search output | The matches that matter, ranked |
Your agent keeps working exactly as before. What changes is how much it has to wade through to do it.
Three principles
A few ideas guide how Lineman behaves, and they hold whatever the tool or the language:
- Preserve intent. Compression is worthless if it drops the thing you were looking for. The goal is always "what does this task need from this output," never just "make it shorter."
- Only step in when there's something to gain. Small or already-tight output isn't worth touching, so Lineman leaves it alone. The win comes from the heavy stuff.
- Stay out of the way. You don't learn new commands or change how you work. Lineman runs in the background and your agent does what it always did.
Why this beats just reading less
The obvious alternative is to tell your agent to read fewer files, or to truncate the big ones. That trades tokens for blind spots. Truncation is positional: it keeps the first N lines whether or not they're the relevant ones. Distillation works on meaning, so it keeps the parts that answer the question wherever they sit in the file.
That's the whole idea behind Lineman: keep the expensive model thinking, and hand everything else to a sidekick built for it. You can watch the savings add up in your own sessions with /lineman:stats, or estimate them up front with our savings calculator.