Skip to content
Tinker
Download

Installation

Download the signed build, or build from source with Xcode 26.

Requirements

  • macOS 14 Sonoma or later, Apple Silicon.
  • A PostgreSQL, MySQL, MariaDB or Redis server you can reach directly or over SSH — or nothing at all, if the database you want to open is a SQLite file.
  • Xcode 26 or later, only if you build from source. The manifest is swift-tools-version: 6.2; Xcode 16 cannot open it.

Download

Releases are published on GitHub. Drag Tinker into your Applications folder and launch it. The app is Developer ID signed and notarized, so Gatekeeper opens it without a warning. Updates arrive through Sparkle 2: a version found on the daily check arrives as a macOS notification rather than a window opening over your work, and permission to notify is asked for when you turn automatic checks on, never before.

https://github.com/tammami/Tinker/releases

Build from source

git clone git@github.com:tammami/Tinker.git
cd Tinker
open App/Tinker.xcodeproj

Select the Tinker scheme and run. The packages can also be built and tested from the command line:

swift build
swift test

Run the test suite against real servers

Integration tests run against an isolated tinker_test database and a non-privileged tinker_test user on servers you already run. Nothing is installed, started or reconfigured, and Docker is never used. Prepare once with admin URLs, then export the non-admin URLs the script prints.

export TINKER_TEST_PG_ADMIN_URL='postgresql://<you>@localhost:5432/postgres'
export TINKER_TEST_MYSQL_ADMIN_URL='mysql://root:<password>@127.0.0.1:3306/'
testenv/prepare.sh

export TINKER_TEST_PG_URL='postgresql://tinker_test:tinker_test@localhost:5432/tinker_test'
export TINKER_TEST_MYSQL_URL='mysql://tinker_test:tinker_test@127.0.0.1:3306/tinker_test'
Scripts/ci.sh
Careful
The suite refuses to run against any database not named tinker_test or any superuser account. Engines without a URL are skipped with a visible warning. A skipped test is never counted as a pass.

Release builds

Scripts/release.sh                  # archive, Developer ID sign, notarize, staple, package
Scripts/release.sh --skip-notarize  # sign only
Scripts/release.sh --unsigned       # local smoke test

The appcast URL and EdDSA key for Sparkle are supplied from the environment at release time. A build without them ships with the updater disabled and says so.