News: the terminal now splits into panes, and agents address each one. Read the changelog →
Local Postgres. No Docker.
Your database, an editor and a terminal in one native Mac app.
curl -fsSL https://sawit.dev/install.sh | shApple Silicon · macOS · one 60 MiB binaryNo Docker
PostgreSQL 16, 17 or 18 from Homebrew, Postgres.app, your PATH, or a download Sawit fetches itself.
Drawn by the GPU
Rust and GPUI in one native binary, with no JVM, Chromium or Node runtime inside.
Agents welcome
sawit-mcp gives AI agents 123 tools. Destructive ones ask for the name again.
A database in four steps
Name it, let Sawit check the port, start it, and your app connects. Each instance listens on localhost only.
LOG: database system is ready to accept connections
01New
shop
PostgreSQL 16 · :55432- Listens on localhost only
- postgres superuser, trust auth
02Checked
:55432 is free
No other process, Homebrew service or container- Shadowed binds caught too
- Start is held on a conflict
03Running
pg_ctl start
Live log in the window- Stop and restart one click away
- Data kept when it stops
04.env
DATABASE_URL
postgres://postgres@localhost:55432- Written to the project’s .env
- Next.js, Rails, TanStack Start
One window, every tool
Postgres, an editor, a terminal and git, side by side, in Zed’s One Dark colours.

SQL editor, shortcut ⌘↩
Runs the selection, or the whole editor. Results stream in, with DETAIL and HINT on errors.

Table browser
50 rows a page over a separate read-only connection. Export what matches to CSV or Excel.

Schema diagrams
Tables and foreign keys drawn as a diagram, or read as DBML. Save it as .dbml or .svg.

Code editor, shortcut ⇧⌘I
About 200 languages, and Prettier, rustfmt, gofmt or Ruff on one shortcut.

Terminal, shortcut ⌘J
Full alacritty emulation in a dock under your code, with split panes.

Listening ports
Every dev server you started, the project it belongs to, and a button to stop it.
Git
Status, diff, stage and commit, and a graph of the branches.

Browser for agents
A tab per project on your dev server, with Web Inspector, that AI agents drive over MCP.

One binary, about 60 MiB
Welcome screen, instances, a table, SQL, a schema diagram, code with a terminal, ports, git, dev tools, MCP and the canvas, in one take.
- Binary
- 60 MiB
- PostgreSQL
- 16–18
- Tools for agents
- 123
- Editor languages
- ~200
Served in any terminal
The sawit menu
Every command works with or without the app open.
Kebun · the estate
sawit kalimantanLists the tables of a databasesawit kalimantan hutanThe first 100 rows, like psqlsawit kalimantan hutan "izin is null"The text becomes the WHERE clausesawit listInstances, databases, ports and connectionssawit browseThe dev server of this project, a port or a URL, in the browser tab
Panen · the harvest
sawit panen kalimantan hutan hutan.xlsxA table or a query, to CSV or Excelsawit backup kalimantan kalimantan.dumpThe database, one schema or one tablesawit tanam kalimantan konsesi konsesi.csvPlants a CSV in a table, all rows or none
Bakar · the burning
sawit bakar portsDev servers only: asks, then SIGTERM, then SIGKILLsawit bakar ports 3000 -yWhatever listens there, without askingsawit bakar instancesRunning instances; the data is keptsawit nyalakanStopped instances; a port already taken is explained, never forced
Pupuk · the fertiliser
sawit list toolsPackage managers, runtimes and AI agentssawit pasang bun uvOfficial install scripts, prerequisites firstsawit pupukEvery tool with a newer releasesawit cabut bunOnly the copy its installer, Homebrew or npm put there
“Bakar 2 lahan di atas? Asapnya tanggung sendiri.”Burn the two plots above? The smoke is on you.
Install Sawit
Two ways in, the same app. After the first install it updates itself.
ScriptRecommended
curl | sh one command
Downloads the latest release into Applications.
- No “cannot verify” warning
- Install a given release with SAWIT_VERSION=vX.Y.Z
- Quits and replaces a running Sawit
Disk image
.dmg from GitHub releases
Drag Sawit to Applications, the usual way.
- Apple Silicon, macOS only
- Not notarized yet: Open Anyway in Privacy & Security, once
- Same app, same self-updates
Good to know
Do I need Docker?
No. Sawit uses PostgreSQL from Homebrew, Postgres.app or your PATH, or downloads PostgreSQL 16, 17 or 18 itself.
Which Macs does it run on?
Apple Silicon, macOS only. Sawit leans on the Keychain, lsof, AVPlayer and CoreGraphics.
Why does macOS say it cannot verify Sawit?
Sawit is not notarized yet. The install script avoids the warning. With the DMG, open Sawit once and choose Done, then Open Anyway in System Settings → Privacy & Security, or run xattr -dr com.apple.quarantine /Applications/Sawit.app.
Where do my passwords go?
Into the macOS Keychain, never a file. The table browser reads over a separate read-only connection.
How does it update?
After the first install the app updates itself. To install a given release instead of the latest, put SAWIT_VERSION=vX.Y.Z (a tag from the releases page) before sh.
Can I edit a single cell in the grid?
Not yet. The grid deletes rows or sets one column on the rows you select; single cells go through the SQL editor.
Pasang Sawit
Install it with one command on an Apple Silicon Mac.
Your passwords stay in the macOS Keychain, never a file.