Skip to content

bendiknordeng/Drift

Repository files navigation

Drift Logo

Drift

A fast, keyboard-first PostgreSQL browser for macOS


Features

  • Native macOS app — SwiftUI + AppKit, no Electron
  • Cell-level selection — click, shift-click, cmd-click, drag-select, arrow keys
  • Keyboard-first — Cmd+P quick open, Cmd+Shift+F global search, Cmd+K AI query, Cmd+Shift+E SQL editor
  • SQL editor — syntax highlighting, autocomplete, Cmd+Enter to execute
  • Neon integration — connect to Neon databases directly via API key
  • Connection string support — paste any postgres:// URI
  • AI-powered queries — describe what you want in natural language (Claude API)
  • IDE-style tabs — preview tabs, double-click to pin, navigation history
  • Column filtering — per-column ILIKE filters with debounced search
  • Infinite scroll — lazy loading with automatic pagination
  • Dark theme — Darker design with purple accents

Keyboard Shortcuts

Shortcut Action
⌘P Quick open (fuzzy table search)
⌘⇧F Global value search
⌘K AI query (Claude API)
⌘E SQL editor
⌘B Table browser
⌘N New connection
⌘1-9 Open favourited/recent connection from home
⌘⏎ Execute SQL
⌘R Refresh current context
⌘C Copy selected cells
⌘A Select all loaded cells
⌘H Go home
⌘← Navigate back
⌘+ / ⌘- Zoom in/out
Arrow keys Navigate cells
Shift+Arrows Extend selection
⌘+Arrows Jump to edge in that direction
⌘⇧+Arrows Extend selection to edge

Getting Started

Requirements

  • macOS 14+
  • Xcode 15+ (for building)

Build & Run

# Clone
git clone https://github.com/bendiknordeng/Drift.git
cd Drift

# Build and run
swift build
swift run Drift

# Or open in Xcode
open Package.swift

Release PKG

GitHub Actions builds an Apple Silicon installer package on every v* tag and from manual workflow dispatch:

git tag v0.1.0
git push origin v0.1.0

The workflow signs, notarizes, staples, and publishes Drift-<version>-arm64.pkg to the GitHub Release. The package installs Drift.app into /Applications.

The release workflow requires these repository secrets:

Secret Description
APPLE_DEVELOPER_ID_APP_CERTIFICATE_BASE64 Base64-encoded .p12 for the Developer ID Application certificate
APPLE_DEVELOPER_ID_APP_CERTIFICATE_PASSWORD Password for the Developer ID Application .p12
APPLE_DEVELOPER_ID_INSTALLER_CERTIFICATE_BASE64 Base64-encoded .p12 for the Developer ID Installer certificate
APPLE_DEVELOPER_ID_INSTALLER_CERTIFICATE_PASSWORD Password for the Developer ID Installer .p12
APPLE_DEVELOPER_ID_APP_IDENTITY Exact signing identity, e.g. Developer ID Application: Name (TEAMID)
APPLE_DEVELOPER_ID_INSTALLER_IDENTITY Exact signing identity, e.g. Developer ID Installer: Name (TEAMID)
APPLE_NOTARY_KEY_BASE64 Base64-encoded App Store Connect API private key .p8
APPLE_NOTARY_KEY_ID App Store Connect API key ID
APPLE_NOTARY_ISSUER_ID App Store Connect issuer ID

You can also build the package locally:

VERSION=0.1.0 BUILD_NUMBER=1 ARCH=arm64 scripts/package-macos.sh

The local output is written to dist/. Without Developer ID identities, local packages are only ad-hoc signed and will trigger Gatekeeper warnings.

Connect to a Database

  1. Launch Drift
  2. Click New Connection or press ⌘N
  3. Enter your PostgreSQL credentials, paste a connection string, or use Neon API key
  4. Browse your schemas and tables

Architecture

Sources/
├── DriftApp.swift              # App entry point
├── Theme.swift                 # Design tokens (colors, fonts, spacing)
├── Models/
│   └── Models.swift            # Data models
├── Services/
│   ├── PostgresService.swift   # PostgresNIO connection & queries
│   ├── NeonService.swift       # Neon API integration
│   ├── LLMService.swift        # Claude API for AI queries
│   ├── ConnectionStore.swift   # UserDefaults persistence
│   └── KeyboardMonitor.swift   # Global keyboard shortcuts
├── State/
│   └── AppState.swift          # Observable app state
└── Views/
    ├── MainView.swift          # Main layout + welcome screen
    ├── SidebarView.swift       # Schema tree browser
    ├── DataGridView.swift      # Grid container + filters
    ├── NSDataGridView.swift    # NSTableView-based data grid
    ├── SQLEditorView.swift     # SQL editor pane
    ├── SQLSyntaxEditor.swift   # NSTextView with syntax highlighting
    ├── GlobalSearchView.swift  # ⌘⇧F search overlay
    ├── CommandPalette.swift    # ⌘P quick open
    ├── LLMChatView.swift       # ⌘K AI chat
    ├── ConnectionSheet.swift   # Connection dialog
    ├── SettingsView.swift      # Settings overlay
    └── StatusBarView.swift     # Bottom status bar

Built with PostgresNIO for the PostgreSQL wire protocol.

License

MIT — see LICENSE for details.

About

A fast, keyboard-first PostgreSQL browser for macOS. Native SwiftUI + AppKit. Linear-inspired design.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors