iTerm2 was enough
I used iTerm2 for years. Splitting is easy, it is light, and each profile can carry its own background colour. It could raise a macOS notification when an LLM answered. I had no complaints.
I usually have four or more products going at once, so I gave each one a colour. Blue is the API, green is the site. For a while that worked.
Then the colours stopped working
The first crack was moving to a different directory mid-task. The colour belongs to the profile, so it does not change when the work does. There I was, doing another product's work inside the blue pane. At that point the colour tells you nothing.
Then eight panes in one tab stopped being enough. Once you are moving between two or three tabs, you run out of colours, and the same colour shows up in another tab.
And I started thinking this more and more often.
Wait, what was I doing in this one?
Especially after sleeping and coming back the next day. Eight panes, all of them printing something, and the colours I chose myself no longer tell me which is which.
What was missing was not colour
Two things were missing. Which project is this, and what was I doing here. Colour stands in for the first until you have too many. It never answered the second at all.
So in Ultenix a profile can carry an icon. You read it faster than a colour. Backgrounds can be images, too, and not only for practical reasons. You spend hours surrounded by eight of these, so it may as well lift you.
Panes move between tabs. What belongs together changes by the day, and if you cannot rearrange them later you end up lost again.
The reason that is harder to admit
It was not that iTerm2 had failed me. It is that opening it never felt like anything. It wears the face of an engineering tool for engineering work. A good tool, and nothing more than a tool.
Which is strange, when you think about it, for the place you spend the most hours of your day. People put a colour scheme they love into their editor and leave the terminal black.
So Ultenix comes with eleven themes ready to go, and from there lets you set every colour yourself. The presets are where you begin, not where you stop. Backgrounds take images, and both can differ per pane. Profiles get icons. It should feel good to use. That was one of the things I set out to build.
I do not think of that as decoration. How the room feels, when you sit in it for hours surrounded by eight of them, shows up in what comes out.
Never lose the work
One more thing that heavy users will recognise. Some days macOS itself gets unstable. Leave a machine up for days with eight panes running, and those days come.
When they do, "everything I was doing will be gone" is the wrong reason to hesitate before restarting.
So Ultenix brings the pane layout back, and then sends --continue on its own to revive
the Claude Code session that was in it.
Restart without thinking about it. When you come back, you pick up where you were. If this product says one thing, it is this: it does not stop your work.
The more that run, the more the notice matters
These days I keep one screen split eight ways, so eight panes at a minimum, and up to sixteen across two screens on a heavy day. That was out of reach before I built this. And it taught me something. The more of them there are, the more the notification carries the whole thing.
You cannot stare at eight panes. A person looks at one thing. So the only way is to be told when you are needed. It stops being a screen you watch and becomes a place that calls you.
Lie down without stopping
The reason it went to the iPhone is simpler than that.
Keep going long enough and your body starts to complain. You want to lie down for a while. But eight of them are running. Leave the desk and every one of them stops there, sometimes waiting on an answer until morning.
You want to rest, and resting stops the work. I did not want that to be the trade.
So now you can keep going lying down. It calls you, you answer in a line, and it runs again. You do not have to sit up.
I did not want remote control. I just did not want it to stop while I rested.
Eighty days
- June 16 I started building
Tauri and xterm.js for the base, and by the end of that same day it had tabs, split panes, a settings screen, and an input box you could type plain language into. Running agents was the point from the first commit.
- Same day I could not decide who it was for
I rebuilt the AI entry point for non-engineers, then put it back for engineers a few hours later. I went back and forth on whether it should be a bar that is always there or a palette you call up.
- July 29 I noticed the waiting
"Notify when the AI is waiting for a reply (bell / OSC 777 / no output)". An agent does not only run. It stops and asks you something. The more of them you run, the more that matters.
- August 18 It went outside
Once it was a tool for watching, it was needed most when I was not at the desk. It started as a connection inside my own network and became an iPhone app.
- September 3 126 commits, 80 days
I still work in it every day.
Not only for me
A lot of my work is helping people bring AI into what they do, and I kept telling them the same thing: learn the terminal and everything gets faster.
It did not work. For someone who is not an engineer, the terminal screen itself is the wall. A black window, text, no idea what to type or what will happen if you do. That is where they stop.
Which felt like a waste. The agent inside that window is the thing that would change their work the most, and they give up at the door because of how the door looks.
So Ultenix carries things for them too. Write in plain language and it becomes a command. Say it out loud instead. A guide that walks a many-step job one step at a time. And anything you cannot undo stops before it runs. The point is to remove the fear that not knowing means breaking something.
All of that is free. Charging for it would keep it from the people who need it most.
What I think is coming
The better agents get, the longer they run in one go. Running longer means the gaps between the moments they need you get longer too.
Which means you spend more time waiting. Waiting is dead time, so you fill it, and there is only one way to fill it. Start another one.
So I think running many at once is going to become normal. What that needs is not a faster terminal or a cleverer one. It needs a place where, however many are running, you never miss being called. That is what Ultenix is for.