Press a word
A to type in, a built in, in its panes: the terminal.
A terminal with a real interface, drawn on the GPU. For macOS; free software, GPL-3.0.
The line you type has a place of its own at the bottom of the window: several lines, the mouse, a caret that glides.
Tabs and splits, no tmux. Through an update, a crash, even ⌘Q, what you started keeps running and is there when bateri comes back.
Pens are programs with a real interface in the pane they run in, on your Mac or on a server: Docker, SQL, a system monitor, an editor. Each installs with one line.
bateri, one of its themes. Fonts, where the tabs sit, how the caret moves: one TOML file, applied the moment you save.
Pens: a real interface, in a pane.
A pen is a program that takes its pane the way vim takes the screen, and puts a real interface there: on your Mac or on a server over plain ssh, in your font and your theme.
All pens- textpen A code editor: the project's files as a tree, tabs, search across them, and what git says of them. →
- toppen A system monitor in the way of top and btop: CPU, memory, network, disks, GPU and a process table you can sort and act on. →
- dockerpen Docker in the pane: containers, their logs and resource use, images, volumes, networks and disk. →
- sqlpen A SQL client for PostgreSQL and SQLite: the tables of the database, an editor that knows SQL, and the rows in a grid. →
- pickpen Choose rows in the middle of a pipeline: filter, sort and mark them, and the rows you chose go out on stdout. →
- linearpen Your Linear issues in a pane, an issue open beside them, and Claude, Codex or Cursor started on it in the pane next to it. →
- your own A pen is one file, made with pencere, in Lua, TypeScript or Rust. →
On a server, you always know where you are.
The bar at the bottom names the machine, the database or the pod you are in. Production is red.
The machine's name, your remote folder and the server's load. Nothing to install on the server.
The database, the container or the pod you are in, never your password. psql, mysql, redis-cli, docker, kubectl and more.
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 the cores and the busiest processes.
Agents at work, one glance away.
- What each one is doing
- Under each Claude Code tab: what the agent said last, or what it asks. Show Activity adds its state and for how long.
- What waits for you
- The side column counts the tabs that ask, failed or finished while you were elsewhere.
- Panes they open
- With the bateri command an agent opens a pane or a tab and sends a notification, here or on a server.
Before you install, six short answers.
-
zsh, fish and bash
Set up by itself when a shell starts; bash needs 4.4 or newer. bateri never writes to your dotfiles.
-
Plain ssh
Nothing to set up on a server by hand: bateri keeps what it needs under ~/.local/share/bateri there and leaves your rc files alone.
-
Zero idle frames
When nothing on screen changes, the GPU does nothing at all; your battery and fans notice.
-
Updates that ask first
A check once a day, straight to GitHub; nothing but the version check is sent. Signed, notarized, and your programs keep running through it.
-
Classic, if you prefer
integration = "blocks" keeps the command blocks and drops the dock; "off" turns it all off. One TOML file, applied the moment you save.
-
Free software
GPL-3.0, written in Rust. The source and every release are on GitHub.
Download bateri
Free and openly licensed. Open it and your zsh arrives as usual; bateri handles the rest.
Download for macOSOr with Homebrew: