crod.me

Festina lente — and build something that lasts.


Using the tool without becoming the tool

How I keep AI small in a suckless workflow

AI is never going to be suckless. The models are huge, opaque, networked, and proprietary. The companies behind them go against almost everything the suckless philosophy stands for, which is small, simple code you can actually read in an afternoon. And yet I use these tools every day. So this is me trying to make sense of that.

If you have not run into suckless before, it is a project that ships things like a window manager (dwm), a terminal (st), and a launcher (dmenu). The whole point of them is that they are tiny. dwm is around 2,000 lines of C. You configure it by editing the source and compiling it again. There is no plugin system, because the source is the plugin system. The idea is not that small is good for its own sake. It is that you can hold the entire thing in your head. You can read it, you can change it, and nothing about it is a mystery to you, because you can see every line.

AI is the exact opposite of that. A frontier model is hundreds of billions of numbers that no human has ever read or understood. Even the people who trained it cannot tell you why it said any particular thing. Whatever AI is, it is not transparent.

So a lot of people in the Linux and free software circles I read land on a simple position. AI is the worst kind of black box, it is closed, it needs the network, it is monetized, and on top of all that it makes confident garbage. So avoid it. And honestly, they are not wrong about the tool. The big AI products really are that. Cursor, Copilot autocomplete, the IDE agents that bury your screen in suggestions, I do not want any of that near how I work. They go against every preference I have.

Where I think that position goes wrong is the conclusion. “The tool is bad, so don’t use it” assumes you have to use it the way the companies want you to. You don’t. They want you inside their app, watching their suggestions. You do not have to be there.

The more interesting question to me is whether the way you use AI can be suckless, even if the AI itself never will be. I think it can. It runs in the terminal, not some IDE plugin or browser tab. Claude Code is the one I use. It only does something when I ask it to, there is no autocomplete sitting there guessing what I am typing. I read whatever it gives me, run it through my own eyes and my own tools, and throw it out if it is wrong. It reads and writes the same files I already control. In that shape it is just another thing in the terminal. I give it something, I read what comes back, I keep the good part.

People throw the term vibe coding around like it is one thing, but there are two very different versions of it. One is passive. You let the model write whatever it wants, you do not really read it, you do not understand it, and you ship it because it ran. That is the part the suckless instinct is right to reject. It puts the AI between you and the problem and rewards you for not thinking. The other version is the one I actually do. I let it write the code, yes, but I am opinionated about it. I tell it exactly what I want, I read everything it gives back, I throw out what is wrong, and I have to actually understand what I am building or the output is just confident nonsense. Maybe that still makes me a vibe coder. If it does, I am a picky one. The typing is the part I handed off. The thinking and the judgment stayed with me. That is the whole difference, and it is the same difference as any unix tool. find does not think for you, awk does not think for you, and neither does this. Getting it right is still on you.

In practice this is pretty boring, which is the point. I am on Void Linux running dwm, and claude runs in a terminal scoped to whatever project I am in. I am not sitting there hand-typing the code next to it. I direct it, it writes, and then I read what it did and keep it, change it, or throw it out. I drop into nvim when I want to read a file myself or fix something by hand. No plugin, no extension, no IDE, it is the same unix I have run for years with one more tool I can point at a problem. The work that moved off my plate is the typing. The work that did not is deciding what to build, reading what comes back, and being the one responsible when it is wrong.

I am not going to pretend this is actually suckless. It is not very close. The tool is still a giant black box on someone else’s computer, and I am still depending on a network and a company’s pricing. None of that is great. It is a trade I decided to make for what I get out of it, while keeping it boxed into the smallest corner of my workflow I can. The trick is to keep the tool small in how you use it even though the tool itself is enormous. Direct it, do not get directed by it. Check what it gives you. Do not let it creep into places it has no business being. AI is not going to become suckless. But you can. That part is up to you.