Tara and the Absence of Wu Wei
On building Tara, forcing OpenCode into the wrong shape, and realizing the missing thing was not a better interface but a reason for the interface to exist.
I spent the last two days building Tara. Or trying to, anyway.
At first I thought this was going to be one of those satisfying little AI projects that comes together quickly. OpenCode already existed. The models were more than capable. The rough idea felt simple enough: build a better front end, make it calmer, make it feel more native, make it feel a bit more like Codex, and I would end up with something I actually wanted to use every day.
Instead I got message drops, approval states that did not settle cleanly, turns that looked finished but were not, actions that completed without a visible response, and a general feeling that I was spending a lot of time persuading the app to behave like something it did not really want to be.
That feeling has stayed with me.
The part that bothers me is not even that building AI products is hard, though it obviously is. It is that I started building before I had answered a much simpler question: who exactly is this for?
I kept telling myself I wanted a better front end for coding agents. Something less rough than OpenCode. Something more coherent. Something I would trust more.
But if the answer to that question is just me, then I have to be a little more honest than that.
Because Codex already exists.
If I want to do Codex things, I can just use Codex.
So what was Tara meant to be, apart from a front end I preferred looking at?
I managed to avoid that question for about two days by doing the much more seductive work of fixing surfaces.
This is one of the strange traps around AI tools right now. The infrastructure makes a lot of things look easier than they are. You see an SDK, or a runtime, or an open-source shell, and you think the hard part is done. All that remains is product taste. Some interface polish. A better wrapper.
But "better wrapper" is one of those phrases that makes a problem sound much smaller than it is.
What looks like front-end work quickly turns into trust work. You are no longer drawing boxes on a screen. You are trying to decide what counts as a finished turn. You are trying to decide whether a tool action happened, whether the app knows it happened, whether the user can see that it happened, and what should occur when one of those layers lag behind the others.
That is not really a UI problem. It is a state machine with feelings, which is a ridiculous sentence, but also true.
And I think that is where Tara started to feel wrong to me. Not just buggy. Wrong.
The effort had a strange heaviness to it. Every time I fixed one thing, some adjacent thing started wobbling. The whole project felt like it needed to be argued into existence. I could make progress, but nothing flowed.
The closest word I have for that is the Taoist one: a lack of wu wei.
I do not mean that in the lazy internet sense where wu wei becomes an excuse for doing nothing. I mean something more basic. Some projects have a natural grain to them. You push, and the thing pushes back in an intelligible way. The resistance teaches you where to go next. Other projects make you feel like you are forcing a shape onto material that would rather become something else.
Tara felt like the second kind.
I was trying to make OpenCode into a product that was calmer, more native, more trustworthy, maybe even more tasteful than it naturally was. That sounds nice when written down. In practice it meant I was constantly fighting the assumptions of the thing underneath.
And that raises a more uncomfortable possibility.
Maybe I was trying to force a substrate into being something it is not.
OpenCode may be useful for exactly what it already is. It may even be very good at it. The right move might be to use it on those terms rather than keep trying to bend it toward my preferred fantasy of a native AI workbench. Or, if I really want something more opinionated, more instrument-like, more mine, maybe the answer is a different substrate entirely. Something like Pi. Something I can shape more deeply from the start.
I do not know yet.
What I do know is that Tara taught me a fairly expensive lesson about fit. Not market fit. More like tool fit, or maybe substrate fit.
I thought the missing thing was a better interface.
I am less convinced of that now. It feels more like the missing thing was a reason for the interface to exist at all.
That is a more annoying problem because you cannot solve it with a few extra passes from DeepSeek or GPT. You cannot patch it with nicer CSS. You cannot keep saying "almost there" while the core question stays fuzzy.
If Tara is going to exist, it has to be for something other than "Codex, but mine."
It has to earn its shape.
Maybe that means Tara becomes a thin way of using OpenCode for what OpenCode is naturally good at. Maybe it becomes a different kind of tool entirely. Maybe it dies here and leaves behind a useful lesson about the difference between irritation and product thesis.
I am less sure than I was two days ago. Oddly, that feels like progress.
At the start I thought I had an implementation problem. I still do, obviously. The app is half-baked. But underneath that there was another problem: I was trying to build the thing before I knew what kind of thing it was.
And that, more than any dropped message or half-settled approval state, is what made the whole process feel effortful in the wrong way.
No wu wei. Too much persuasion.
Software resists that. People do too.