An agent is working in subtank subtank is waiting for you subtank is in front, with its question on screen Answered. The agent carries on

The terminal you don’t have to watch.

Start your dev server and your coding agent, then go back to your work. When the agent needs you, answer it from the notification.

Free · no account · updates itself · macOS 13 or later

New in 0.7.0 Tab takes the grey text, ⌘K clears, and one line for each thing running

The window is Opsty’s real interface, rendered with made-up projects.

Opsty’s window, behind the editor you are writing in. Its tabs: doclife, a dev server ready on port 3000; saju, an agent fixing a login bug; and subtank, an agent adding a CSV export, which stops to ask whether it may run npm install papaparse. The question arrives as the notification above, with the agent’s own answer, Yes, as a button.

One day, left running

Start things, go do your work, and come back to a terminal that tells you what happened.

One Opsty window through the day. Each time on the page sets what it shows.
  1. Monday morning

    The server starts. An agent gets to work.

    npm run dev in doclife, and Claude Code on saju’s login bug. Each tab’s lamp says which is which: green for a server, a turning ring for an agent at work.

  2. Monday, mid-morning

    subtank’s agent asks you something.

    Its tab says your turn with a violet pulse. If you’re in another app, a notification brings the question to you, and you can answer it there.

  3. Monday afternoon

    shop’s server stops. Opsty says why.

    The package zod isn’t installed. Put on the line places npm install at your prompt, and nothing runs until you press Enter.

  4. Monday evening

    Before you go, everything still running is in one list.

    Running shows all of it: the tab that needs you first, and a server on port 5173 that no tab started. When you quit, Opsty remembers what was running.

  5. Tuesday morning

    Opsty offers to start it all again.

    Running when you left · yesterday: tick what you want and press Start. Each tab types the command it shows, and each Claude Code tab picks up its own conversation.

Explained, in plain words

When a command fails with one of twenty common errors, one sentence says the usual cause and one fix goes on your line. Opsty never runs it: the Enter is yours.

exit 1 · npm run dev in shop

Port 3000 is taken. Opsty says by what.

Another server is already using port 3000, and the card names it: your tab doclife. Go to that tab, Stop it and run here, or Another port. The one that runs something shows the command it will run.

From the error it printed · ps · lsof, on this Mac only

Opsty’s real failure cards and command helper, rendered with made-up projects.

It also marks an error from a dev server that keeps running, walks you through a block of commands pasted from a chat one step at a time, and explains a word you select, citing where the words came from. The sentences come from a table of known errors and the manuals on your Mac, not a model.

Everything you left running

Servers, agents and ssh sessions keep going while you look at something else. Opsty keeps track of them from what is actually running, with nothing to describe in a config file.

⇧⌘R

Every server, even the ones no tab started.

Running lists what each tab is doing, the ones that need you first. A Vite server on port 5173 that no tab started is there too, under No tab, with Stop.

Read from ps and lsof, on this Mac only.

Opsty’s real Running list, away summary and morning sheet, rendered with made-up projects.

Arm a server’s restart on the list and Opsty runs it again when it stops, the command it shows, giving up after five stops in two minutes. Select a server on the list and, a moment later, its detail shows the page it serves, loaded from your own Mac.

New in 0.6.0

Nothing cut off

Every list lines up, nothing is cut short without a way to read the rest, and nothing is drawn over what a program printed. Commands, paths and output can be selected, and copying gives them back exactly as they were written.

⇧⌘R

A stopped command says why, beside the list.

Running is now a list and the detail of what you select. shop’s server stopped: its detail quotes the line Opsty read, Error: Cannot find module 'zod', and offers the fix, with Go to the block as the Enter.

With no explanation that fits, it quotes the program’s own last error lines.

Opsty’s real Running list, formatted view and launcher, rendered with made-up projects.

And in the menu bar, Opsty’s mark: the lamp and the cursor from its icon. It turns while something works, lights up with the cursor blinking when it is your turn, and becomes a cross when something stops. Click it for the Glance: the agent’s question and its first answer, why something stopped, and one line for each thing running. Right-click it for the menu. The menu bar, in the guide.

Room to move

As many windows as you want, and tabs and panes that move between them. Whatever runs in them keeps running: moving a tab never restarts its shell, its server or its agent.

⌘N

Tear a tab off. Drop it back.

Drag doclife’s tab out of the strip and let go: it becomes a window of its own, its server still on :3000. Drop it on another window’s strip to bring it back, or choose Merge all windows.

The same shell, scrollback and Ledger move with the tab.

Make it yours

Eight themes in four families, each with a light and a dark member that follow your Mac. Pick one and every window on this page repaints.

In the app, Settings ▸ Appearance can also import a Terminal or iTerm2 profile, with its font and size, and offers to adjust any color that would be hard to read.

The windows on this page follow your Mac’s light or dark until you pick a theme, and go back when you leave.

What leaves your Mac

A terminal sees everything you type. So Opsty keeps what it learns on your Mac and makes one request of its own.

  • Never reports on you. Its one network request is the update check, about once a day, with no account and no install ID, and you can turn it off. Fetching only what changed in an update can tell the server which version you had. No analytics, no crash reports.
  • No account, no telemetry, no AI inside. Its explanations were written in advance and ship inside the app. No model makes them up.
  • Never runs what you didn’t see. A fix is placed on your line. The buttons that do type something, like Restart, Start or an agent’s own answer in a notification, show it first.
  • Never owns your input line. Everything goes to the shell as keys. If Opsty’s window crashes mid-keystroke, your shell carries on.
  • Never restarts by itself. An update waits until you say so or until you quit, and first lists what a restart would stop.
  • Never records production. Mark a server as production and nothing you run there is kept, and the tab bar turns red while you’re on it.

It never edits your dotfiles. What it keeps is in ~/.config/opsty, plus the update it downloaded. The programs it starts (ps and lsof, plus a few macOS tools when it installs an update), every file it reads and writes, and exactly what the update check sends are on the privacy page, with how to check it yourself.

Opsty 0.7.0

A signed, notarized disk image. Open it, drag Opsty to Applications, and from then on it updates itself.

Download for Macopsty-0.7.0-arm64.dmg · 142 MB
curl -fsSL opsty.sh | sh

Or paste that into Terminal. It downloads the same disk image, checks it against SHA256SUMS and Apple’s notarization, and copies Opsty to Applications, or to the Applications folder in your home folder if the main one isn’t writable. It never asks for your password. To read it first: curl -fsSL opsty.sh | less. (Yes, Opsty itself would point out that this is a pasted curl | sh.)

Needs
macOS 13 Ventura or later, on a Mac with Apple silicon (M1 or later). In Apple menu ▸ About This Mac, Chip: Apple M… means Opsty runs there.
Costs
Nothing, for any use. No account.
Checks
SHA256SUMS lists one line per file. Compare it with shasum -a 256, or let the Terminal line check it for you.
Updates
About once a day Opsty checks for a new version, downloads it quietly and installs it when you say so. Settings ▸ Privacy turns the check off. Have 0.3.0? It can’t update itself: download this one once and drag it over the old one.
Speaks
English and 한국어, following your Mac’s language.
Intel
Not supported. Opsty is built for Apple silicon only.