Skip to content
Tinker
Download

Installation

Download the signed DMG, or build from source with Xcode 16.

Requirements

  • macOS 14 Sonoma or later, Apple Silicon.
  • A PostgreSQL, MySQL or MariaDB server you can reach directly or over SSH — or nothing at all, if the database you want to open is a SQLite file.
  • Xcode 16 or later, only if you build from source.

Download the DMG

Releases are published on GitHub. Open the DMG, drag Tinker into Applications, and launch it. The app is Developer ID signed and notarized, so Gatekeeper opens it without a warning. Updates arrive through Sparkle 2; check for them from the Tinker menu.

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, DMG
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.