vobuda Get it
How it worksClaude CodeCompareDownload About Contact

How it works, part by part

One rule holds the whole program together: the window's state lives in memory and the configuration lives in files. Everything below follows from it.

The rule underneath everything

A window holds tabs. A tab holds blocks. A block is a terminal, a file being edited, the files panel, a web page, the system monitor or the settings screen. They split in any direction with nesting, drag, resize and close by one set of rules rather than a new set for each new feature.

Nothing about that arrangement is stored in a database, because there is no database. What the window is doing lives in memory; what you have decided lives in files. That is why a button, a key, the menu bar, Cmd+K and the command line all call the same action by name, and why make it behave differently almost always means editing JSON.

It is also why the best terminal emulator for Mac, for the kind of work this is built for, is one you can inspect. If a setting exists, there is a line in a file that holds it. If an action exists, there is a name you can call it by.

Five ways to an action, and they are the same action

At about two hundred actions, most of a program is in practice hidden. Cmd+K is the way that answers what can it do rather than do this.

The command list narrowed by four typed letters, each line showing the shortcut bound to it The command list narrowed by four typed letters, each line showing the shortcut bound to it
Typed letters match in order but not together, so spld finds Split down, and the action's own name is searched too, so block.zoom finds it for somebody who knows the dictionary.

Notes

  1. It teaches the keys rather than replacing them

    Every line shows its own shortcut. A person who reaches for the list twice for the same action has learnt the key by the third time.

  2. It is not a fifth dictionary

    Every line runs an action by name, exactly as the other four do. A check holds the table it draws to the core's list of what a key may be bound to, in both directions: an action that exists and is not offered there fails the build.

  3. The command line is the same set

    vobuda do block.split-down, vobuda button files, vobuda theme catppuccin-mocha, vobuda send, vobuda signal, vobuda state, vobuda log. Not a side door for scripts: the interface tests drive the whole program through it, which is the reason it can be trusted, and the reason an agent can rearrange your window and you can read exactly what it did.

Blocks, and what they promise

A block changes tabs with its shell running

Drag a block by its header onto a tab in the strip and it lands there: same id, same shell, same folder, still running whatever it was running. The tab lights up in the accent while the block is over it. There is an action for it too, block.to-tab:2, so it can go on a key and a check with no mouse can press it.

Sizes are remembered, and there is a floor

Per block, and no block may get so narrow that it stops being usable. A panel at 200 points is a panel nobody can use.

Closing something that is running asks first

By name. Losing somebody's work once costs more trust than a whole feature earns.

Sessions come back, but only if you ask

Tabs, blocks and each block's working folder are restored, and this is off by default: the window opens with one terminal and nothing else until you decide otherwise. A session that arrived from another machine opens what it can and says what it could not, rather than dropping blocks silently.

The settings folder, file by file

Everything in ~/.config/vobuda is readable JSON, watched while the program runs. Save the file and the window redraws.

FileWhat it holds
settings.jsonTheme, look, terminal, shell, window, signals. About ninety settings across nine sections
themes/*.jsonTerminal and window colours. 25 palettes ship, two built for colour vision deficiency
looks/*.jsonThe window's shape: corners, shadows, panel colours, transparency. 23 ship
skins/*.jsonWhich monitor panels are drawn, and how
buttons.jsonThe dock: buttons, order, side, shape, and a colour for the few worth marking
agents.jsonHow an agent is recognised and what it is offered
keys.jsonEvery shortcut. The native macOS menu is built from this same file
workspaces/*.jsonA project as a window: its own tabs, folder, theme and dock

Built-in themes live inside the binary and the folder overrides them, so an update brings new colours without overwriting anything you edited. The whole folder saves as one archive and restores on another Mac, and a copy can live in iCloud Drive.

A system monitor, arranged by a file

Eleven kinds of panel, and which of them you see is a skin rather than a screen somebody designed once.

The monitor's panels for processor, memory, disk, network and processes, beside the five-line skin file that arranges them The monitor's panels for processor, memory, disk, network and processes, beside the five-line skin file that arranges them
A skin of five lines makes another arrangement. Drop it in ~/.config/vobuda/skins and run vobuda skin essentials.

Notes

  1. The numbers are honest about themselves

    A value the system estimates rather than measures is drawn with a tilde, and absent hardware gives an absent value rather than a zero. A machine with no discrete GPU does not get a GPU panel reading nought per cent.

  2. Both addresses, with a copy button on each

    The address panel names the address the internet sees first and the one this machine has on its own network below it. It asks at most once in ten minutes, only while the panel is on screen, and the request carries nothing about the machine.

  3. Reordered by dragging, like everything else

    The monitor's panels, the dock's buttons and the agent bar's parts are all picked up and put where they go with the same gesture. A settings row is picked up by the grip on its left rather than anywhere on the row, so a drag starting on a text field does not stop you selecting the word you meant to change.

A file opens beside the shell

The thing a terminal usually sends you elsewhere for: a path appears in the output, two lines need changing, and until now that meant leaving for an editor and coming back with the shell's context lost.

The files panel, a file open beside the shell with two cursors in it, and a search running across the whole project The files panel, a file open beside the shell with two cursors in it, and a search running across the whole project
Colouring for 227 kinds of file, taken from the terminal's theme, so an open file looks like it belongs next to the shell that named it.

Notes

  1. Saving is deliberate

    Nothing is written until Cmd+S. An editor that writes as you type is a fine thing in a notes app and a bad one next to a shell that is running. It is an action rather than a keystroke, which also gives it a menu item, a shortcut and a command line entry like everything else here.

  2. The refusals matter as much as the writing

    A file changed on disk since it was opened is not overwritten. A binary is not shown as mangled text. A folder is not opened at all. Unsaved changes carry a visible mark, and closing an edited file asks.

  3. Finding a file

    The files panel searches by name below the folder you are standing on, and each result says which two folders it sits in, because a name alone cannot tell two index.ts apart. It skips node_modules, .git, target and their like, stops at eight levels or two hundred results, and does nothing at all under two letters.

Settings, as a screen and as files

Nine sections and about ninety settings, and every one of them is a line in a file you can also edit by hand.

The settings screen with its nine sections and a theme picker stating each theme's contrast and colour-blind distinguishability The settings screen with its nine sections and a theme picker stating each theme's contrast and colour-blind distinguishability
The theme picker states the contrast of the theme you are choosing and how distinguishable its colours are to a colour-blind reader.

Notes

  1. The settings come to the block

    Right-clicking a panel means this thing here, change it. So choosing a settings line in a block's own menu opens that section over the window, at the corner of the menu, rather than walking you to a screen with nine tabs. It is an action like everything else: settings.here:themes, settings.here:monitor.

  2. A sound you can hear when you choose it

    Choosing a signal sound or the terminal's bell plays it. Picking a sound from a list of names you cannot hear is picking a name.

  3. Nothing asks for a restart

    The settings folder is watched, including the two things the core owns: the macOS menu bar built from your shortcuts file, and the global key of the drop-down window, the old key released before the new one is registered so two cannot answer at once. A check reads every hint in the settings screen and fails on the word restart.

Speaking and being read to

Both use the system's own speech, on your machine. The audio never leaves the computer.

Dictation

Cmd+Shift+V types what you say into the block you are working in, and the strip says which language it is listening in, in two letters. A dictated phrase is typed and never run: recognition mishears, and a misheard command that runs itself is a program that deletes things because a radio was on. Beside an agent, where a phrase is a message rather than a command, it can send by itself, and that is a setting read at the moment the phrase ends.

Reading the answer back

Cmd+Shift+R reads the agent's last answer out loud; pressing again stops it. What is read is the answer, not the screen. A bullet at the front, stars around an emphasised word, back-ticks around a name, a box rule, a full path where the file name would do: those go, and the words inside them stay. The reading is bounded by shapes rather than by words, from below by the agent's input line and from above by its logo, because an agent's furniture changes with every release of it.

The small things that decide whether you keep it

The right button is ours

Everywhere in the window: the block's own menu inside a block, the window's outside one, the tab strip, the dock, the gap between tiles. Every line is an action, and the menu has an action of its own, block.menu, so a gesture only a hand can reach is not a gesture nothing can check. The one place that keeps the system's menu is a text field, where it offers cut, copy, paste and the dictionary.

Open a folder from anywhere

vobuda://open?path=/some/path opens a tab in that folder, from a Finder action, a script or another app. macOS has no system-level default terminal setting, so this is the honest version of that feature rather than a promise it cannot keep.

Search inside a block

Cmd+F. The field belongs to the block it searches, and closing it leaves the view where the match was.

Take the block with you

Cmd+Shift+X copies a block's text, asked of the terminal itself because with WebGL rendering there is no text in the page to select. Cmd+Shift+P captures the block as a picture.

Update checks that are not homework

The core checks once a day, in a thread of its own, and what you see is a strip above the layout rather than over it, because a notice that covers a terminal is one people learn to close unread. Nothing installs itself: for an agent the update is a command typed into the active block where its output is visible, and for vobuda the button opens the release page.

Forty languages, and a guide in each

Including the macOS menu bar, which the system builds in the core. Arabic and Hebrew mirror the whole window except the terminal itself, where mirroring would make output and paths unreadable. A translation key is the English string, so an untranslated string falls back to readable English rather than to a blank or an identifier.

Try the parts you just read about

It opens with one terminal block and nothing else. Everything above is something you turn on when you want it.

curl -fsSL https://vobuda.com/install.sh | sh
Download the .pkg 17.9 MB · macOS 10.15+ · arm64 + x86_64