Introduction
Tinker is a native macOS client for PostgreSQL, MySQL, MariaDB and SQLite — and for the Redis beside them — built for the developer who lives in a database all day: dev in the morning, staging after lunch, production over SSH at 5 p.m.
big_table (1,000,000 rows). The first page of 1,000 rows is on screen in 122 ms, and the pane picker already offers to draw them as a chart.What Tinker is
It is fast enough to page through a million rows without flinching, honest enough to show you the server’s exact words when something goes wrong, and careful enough that every write is a transaction you previewed first. No Electron. No web view. A real Mac app with real menus, real windows, and a data grid that is an NSTableView because nothing else keeps up.
Design principles
In priority order. When two of them conflict, the one higher on the list wins.
- Never corrupt or lose user data. Every write is explicit, previewable as SQL, and reversible before commit.
- Handle large result sets without degrading. A 1M-row table scrolls at 60 fps and is never loaded fully into memory.
- Feel like a Mac app. Menus, keyboard shortcuts, multiple windows, tabs, dark mode, native text editing.
- Be honest with the user. Every error surfaces the server’s actual message. No silent retries, no swallowed exceptions.
What is in version 0.1
- PostgreSQL, MySQL and MariaDB on Apple Silicon, macOS 14 or later, and SQLite files opened straight from disk.
- Redis, added through the same sheet as any other engine: every key in the view its type needs — time series, Bloom filters and vector sets included — a console that prints what
redis-cliprints, and the server’s INFO, clients and slow log. - Connections with TLS, SSH tunnels, production and read-only modes, Keychain-backed secrets.
- A paged, editable data grid with typed editors, enum and SET values picked from a menu, filters, a cell inspector, and a map pane that draws a geometry column on Apple Maps.
- A SQL editor with highlighting, alias-aware autocomplete, function completion with signatures, a formatter, per-tab sessions and true cancellation — beside its results or above them, as you prefer.
- A Chart pane after Rows: any result with something to measure drawn as a bar, line, pie, scatter or area chart, without leaving the query tab — within a budget of marks, so a large result opens at once.
- Objects overview, a structure designer that offers every type each engine’s manual documents and chooses foreign keys from lists, structure sync, visual query builder, server view, and the MySQL and MariaDB event scheduler.
- Export, dump, import from CSV, Excel and JSON, and transfer, all streamed so a table is never held in memory — and transfer, data sync and structure sync run between two different engines as readily as within one.
How the project is run
Tinker is specification-driven. SPEC.md is the source of truth for contracts, screens and acceptance criteria. DECISIONS.md is an append-only log of architecture decision records. PROGRESS.md records, per phase, what was completed, which tests prove it, and what was deliberately deferred. These docs are written from those three documents.