bateri — a terminal for macOS

bateri

3 min read Original article ↗

The mockup terminal, now real.

The terminal everyone draws in their mockups: a command line with its own place at the bottom, a gliding caret, programs that survive a crash. This time, the GPU draws it.

A terminal that edits, remembers, and knows where you are.

The command line, now an editor.

The line you type sits at the bottom of the window: several lines, the mouse, a caret that glides.

Your programs keep running.

Updates, crashes, even ⌘Q: vim, your dev server and your ssh session are still there when bateri comes back.

Update “Install and Relaunch” ends nothing. A file transfer in progress makes the update wait.

Crash If bateri crashes or is force-quit, the same processes come back, with whatever they printed meanwhile below.

Quit With one setting, even ⌘Q ends nothing; a notification names what's still running. ⌥⌘Q ends them.

Where you are, always in plain sight.

On a server, in a database, inside a pod: the bar at the bottom says where you are. Production is red.

⇄ deploy@prod-web-1: ~/app

deploy@prod-web-1:~/app$ systemctl status api | head -3

● api.service - Payments API

Loaded: loaded (/etc/systemd/system/api.service)

Active: active (running) since 09:12:44 UTC

deploy@prod-web-1:~/app$

⇄ prod-web-1 ~/app cpu ▂▃▅▇▅▃▂▁ 23% mem 61%

The machine's name, your remote folder and the server's load. Nothing to install on the server.

The server and database you're connected to — never your password. psql, mysql, sqlite3, redis-cli and mongosh.

The cluster's context, the namespace and the pod. docker and podman name the container you're in, too.

Which interpreter, from where: venv, conda, uv, pyenv, nvm… for Node, Ruby, Bun and Deno too.

After sudo -i or su the shell is red, whatever your marks say. A nested shell names itself too.

Splits as cards, moved by hand.

Hold ⌥⌘ and the panes lift: carry one beside another, or swap two. The program inside keeps running.

Files on the server, as close as Finder.

Upload

Drop a file on the window. bateri asks where it should go, then sends it to your folder on the server.

Preview

⌘-click a name in ls output and a read-only copy opens on your Mac.

Download

Drag a file or folder into Finder. It lands where you drop it.

Server load

CPU and memory sit in the status bar. Click for cores, disk, uptime and the busiest processes.

  • Everything clickable

    Hold ⌘ and URLs, files and folders are underlined; ⌘-click opens them, right-click reveals them in Finder.

  • Zero idle frames

    When nothing on screen changes, the GPU does nothing at all; your battery and fans notice.

  • International keyboards

    Dead keys work, ⌥← ⌥→ jump by word, and ⌥-letters still type what your layout says.

  • Live settings

    One TOML file that applies the moment you save. Or open the settings window with ⌘,.

Drawings

On paper first, then in Metal.

Every surface in bateri began as a written decision. See how a window is drawn, layer by layer.

See the drawings