The terminal that shows its state.

상태가 보이는 터미널. 계정도, 수집도 없이.

An ops-first terminal for people who live in SSH sessions on production boxes. Command blocks built on standard prompt marks, lenses over real command output, hosts and tunnels one keystroke away, and instruments that never lie about what they know.

Follow on GitHub brew install --cask opsty-dev/tap/opsty

Free and open source · Apache-2.0 · macOS, Windows, Linux · not yet released

idle — cyan 80. Every session has a lamp, in its tab, in the Dock, and in the wordmark above.

lonelyduck · prod
saju · palja top
doclife · ~/projects
deploy full · 63%
claude · 입력 대기
PRODdeploy@lonelyduck.io sgp1 · 41ms ~/lonelyduck main blue 2/2 · green 2/2 터널 1KST 14:32 · UTC 05:32
$ docker compose -f docker-compose.blue.yml ps0.8s · 14:31:02
NAME STATUS PORTS
ld-blue-backend Up 3 days 0.0.0.0:8081->8080
ld-blue-frontend Up 3 days 0.0.0.0:3001->3000
$ curl -s localhost:8082/api/health | jq .dbexit 1 · 0.2s
"down"
$ docker compose -f docker-compose.green.yml logs -f backendrunning 42s
05:31:58 INFO HikariPool-1 - Starting...
05:31:59 ERROR Connection refused: mysql:3306 (retry 3/10)
05:32:01 INFO HikariPool-1 - Start completed.
$
⌘K 명령⌘I 세션 ⌘⇧F 전체 검색 드래그 선택 zsh 통합 ssh 3h12mcpu 4% · 212MB

Blocks on standard marks

OSC 133 from zsh, bash, fish or your remote rc file. opsty never replaces your shell's line editor, so zle, readline, fzf and vim mode all keep working.

Lenses over real output

compose ps, health JSON, winston and log4j2 lines become tables you can filter. The raw bytes stay in the scrollback and are what copy and search use.

Hosts, tunnels, prod

Read from ~/.ssh/config. Production is a tag, and a colour: red chrome, masked previews, safety rails on. Nothing is installed on your servers.

No account, no telemetry

One network call: a static GET of the release feed, carrying no identifier, not logged, and switchable off. There is no crash reporter running.

Where this is

opsty is being built in the open by one developer. This page exists so the links in the repository have somewhere to point.

phase0 · spike — Electron 44, xterm.js 6, node-pty, Bridge chrome
first build
idle memorymeasured by CI from the first tagged build
input latency

A number that could not be measured is a dash, never a zero. That rule is from the dashboards opsty was built to replace, and it applies to its own marketing too.