Skip to content
Tinker
Download

You are about to point this at production. Here is what is underneath it.

A Swift Package Manager workspace with a strictly downward dependency graph. The app depends on the packages, the packages depend on DBCore, and DBCore depends on Foundation and swift-log, and nothing else.

App/Tinker     SwiftUI shell, AppKit grid├── DBGrid     paging, DML generation├── DBSQL      splitter, tokenizer, formatter├── DBPostgres postgres-nio, binary results├── DBMySQL    mysql-nio, prepared statements├── DBSQLite   libsqlite3, a thread per file├── DBTunnel   SSH forwarding over Citadel├── DBStore    Keychain, history, settings├── DBTestKit  fixtures, server resolution└── DBCore     driver protocol, value model

All database I/O runs in actors

@MainActor is reserved for views and view models. There is no DispatchQueue anywhere.

One driver-neutral value model

Every native type maps to exactly one DBValue case. An unknown type surfaces as .raw with its type name rather than being guessed at.

SQLite is the system library, not a package

DBSQLite is a SQLDriver over the libsqlite3 macOS already ships, reached through the system SQLite3 module. A whole engine arrived and the dependency list did not grow.

No try!, no force unwraps, no print

Swift 6 with -strict-concurrency=complete and zero warnings, enforced in CI. Over 300 tests run as integration against real servers, and a skipped test is never counted as a pass.

Every load-bearing decision

Two more things a careful reader usually wants before the download.