Upload
Drop a file on the window. bateri asks where it should go, then sends it to your folder on the server.
bateri
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.
The line you type sits at the bottom of the window: several lines, the mouse, a caret that glides.
Updates, crashes, even ⌘Q: vim, your dev server and your ssh session are still there when bateri comes back.
web
> web@1.0.0 dev
> vite
VITE v7 ready in 312 ms
➜ Local: http://localhost:5173/
12:04:07 [vite] hmr update /src/App.tsx
1 import { Nav } from "./Nav";
2
3 export function App() {
4 return (
5 <main>
6 <Nav />
7 <h1>Hello</h1>
8 </main>
9 );
10 }
~
"src/App.tsx" 10L, 142B7,16
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.
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.
Hold ⌥⌘ and the panes lift: carry one beside another, or swap two. The program inside keeps running.
Drop a file on the window. bateri asks where it should go, then sends it to your folder on the server.
⌘-click a name in ls output and a read-only copy opens on your Mac.
Drag a file or folder into Finder. It lands where you drop it.
CPU and memory sit in the status bar. Click for cores, disk, uptime and the busiest processes.
Hold ⌘ and URLs, files and folders are underlined; ⌘-click opens them, right-click reveals them in Finder.
When nothing on screen changes, the GPU does nothing at all; your battery and fans notice.
Dead keys work, ⌥← ⌥→ jump by word, and ⌥-letters still type what your layout says.
One TOML file that applies the moment you save. Or open the settings window with ⌘,.
Drawings
Every surface in bateri began as a written decision. See how a window is drawn, layer by layer.
See the drawings