Pre-beta preview0.1.2 · Early, but in daily use

The agent writes it.
You read it here.

Git, files, databases and a shell in one native Mac window, every card linked to where it came from. And soon the same box from your iPhone and iPad, wherever you are.

Download for Mac iPhone & iPad · TestFlight soon 0.1.2 preview · macOS 15+ · Apple silicon
16 54 46 r14 r4 Grid 120 · walls and stem 16 · only the stem coloured
Fig. 1 · An investigation, labelledA made-up duck shop and its code
the batchabox window: a note about customers who got their duck twice, a SQL card that finds them, and the agent's fix as a diff from its worktree; the sidebar shows the agent's worktree as done, the rail lists four cards the same investigation in light 1 2 3 4 5
  1. The agent's worktree, done and waiting for you, with how much of it you have viewed.
  2. A note says what you are chasing, in your words.
  3. The query that shows the bug in the data: 16 customers got their duck twice.
  4. The agent's fix as a diff against main, opened from its worktree.
  5. The rail. Every card, and the line that brought it here.
Runs onmacOS 15+
Apple silicon
RemoteiPhone · iPad
TestFlight soon
GitWorktrees · diff · log
Commit · push
DatabasesPostgreSQL · MySQL
MariaDB · SQLite
Built withSwift · AppKit
No web view
TelemetryNone
No account
Where you came from

Every card knows how you got there

A query result opens the table behind row 1. A diff opens from the commit in the log. Each card keeps that line, and the rail shows the whole trail, so after an hour of digging you can still say why a card is open.

Fig. 2 · From a query to the rows behind itA made-up shop database
a sql card finding customers who got a rubber duck twice, and below it a table card of orders opened from result row 1, Rafael Verbeke; the rail lists both the same workspace in light 1 2 3
  1. The query on a read-only connection. Run is the one mint button.
  2. Opened from row 1. The table card names the row it came from.
  3. The rail draws it as a branch under the query.
One box, every screen · TestFlight soon

Leave the desk, keep the diff

Pair your iPhone or iPad once and pick up right where you left off, with the same projects, cards and even unsaved edits. It talks straight to your Mac, at home or over Tailscale.

Want it on TestFlight?Write to us and we will send you the invite when it opens. No newsletter, we promise.
batchabox@chillbor.com

Pairing, once per device

  1. 1

    On the Mac, Pair a Device… shows a one-time code. On a server: batchad pair.

  2. 2

    On the iPhone or iPad, scan the code or type it.

  3. 3

    The Mac asks you to confirm. The device gets its own key, and you can revoke it any time.

What a paired device may do

ActionDefault
Read code, diffs, logs, tablesOn
Edit files, Git writesOff, per project
Run commandsOff, per project
Write to a databaseOff, per connection
Delete a projectThe Mac only
The parts

The daily parts of an IDE, minus the heavy bits

What you open ten times a day while checking your agent's work. Nothing you haven't touched since last year.

Agent worktrees
the sidebar's Agents group with four agent worktrees, one done, one writing, two quiet, and the review of one worktree open as a diff against masterthe agent worktrees and a review card in light

Every agent's worktree, as a review queue

Finds
The worktrees your agents make, whatever made them: Conductor, worktrunk, gtr, a .worktrees folder or your own pattern. Each knows the branch it started from.
Shows
A row per agent with what needs you now: still writing, quiet for 38 minutes, 2 of 4 files viewed, done. Lines, commits ahead and the database its .env points to are in its tooltip and its review card.
Writes
A new worktree with your ignored files copied in, and removing it when the work has landed.
Git
a diff card: a branch against its base, six files, the patch with syntax coloursthe diff card in light

The whole review, in one card

Reads
Any branch against its base, word by word. The log with its graph, blame, worktrees.
Writes
Stage a hunk, commit, push, pull, cherry-pick, branches, stash. The conflicts a pull stops on.
Leaves
Interactive rebase, bisect.
Log
a log card with a multi-lane branch graph and a commit's detailthe log card in light

The history, drawn

Reads
Branches and merges as lanes, a commit's message and files beside it.
Opens
The diff of a commit, linked back to it.
Files & code
a file card on a rust source file with syntax coloursthe file card in light

Read the code the agent touched

Reads
Syntax colours, go to definition and find in files, for the languages you install.
Writes
Quick fixes in place, then save.
Leaves
Completion, refactors, a debugger.
⌘K
the command palette open over a diff, listing branches, cards and filesthe command palette in light

⌘K finds all of it

Finds
Branches, open cards, files, tables, commands.
Keys
Every action names its shortcut in its tooltip.
Databases

Your connections, with a prod pill

Reads
PostgreSQL, MySQL, MariaDB, SQLite. Tables, filters, foreign keys you can follow, query history.
Writes
Edit cells right in the grid, even in a query result. Edits stay tinted until you save, then go in as one transaction, and a row someone else changed meanwhile stops the save. Each connection is read-only, preview first, or direct.
Leaves
Schema designers, migrations, import wizards.
Shell
a shell card that ran bat's integration tests inside its docker compose service: 265 passed, under a file card of the test filethe shell card in light

A quick command, in the right place

Runs
A command in the project, or inside its Docker Compose service. The output is a card.
Leaves
Tabs and a full terminal. Your agent runs where it runs.
Built like a Mac app

Native, and measured

Written in Swift and AppKit, with no browser hiding inside.

0.3s

From opening the app to a window that takes input.

119fps

Scrolling a stack of mixed cards on a 120 Hz display.

~2ms

CPU per frame while it scrolls.

43ms

For the box to start and answer.

~50MB

For the box at rest, after indexing a 9,706-file repository.

Measured on a MacBook Pro with M4 Max and 64 GB: launch (reopened after quitting) and scrolling on 1 November, the box on 27 October 2026.

Private by default

No telemetry. No account. Nothing phones home.

Your code, your databases and your credentials stay on your machines. We never see them, and the app sends us nothing about how you use it.

Update checkOnce a daySparkle, bundled for easy updates. It asks our server if there is a newer build and sends no information about your Mac. Every update is signed and checked before it installs. Turn it off in Settings → Updates.
A language you installWhen you clickThe grammar for syntax colours and go to definition, downloaded once.
Anything elseNeverNo analytics, no crash upload, no license check. Feedback is an email you send yourself.
Out of scope

What it is not

Not an IDE

Keep yours for writing. Batchabox is for reading what got written.

Not a terminal

One quick command, yes. Your agent runs in its own.

Not a full Git client

The daily writes are in. rebase -i and bisect stay in the terminal.

Not a database admin

Read, follow, query, a careful write. No schema designer.

Try the preview

No account. No telemetry. Just your new favourite daily driver.

Download for Mac