Driftline is a SwiftPM-first native macOS app with these main products and targets:
DriftlineCore: UI-free domain, security, persistence, networking, transfers, terminal helpers, updates, diagnostics, and localization.DriftlineMCP: UI-free MCP protocol adapter, tool router, local sandbox, stdio transport, and loopback HTTP transport.Driftline: SwiftUI macOS app with narrow AppKit bridges for native outline views, menus, and desktop behavior.driftline: CLI facade for opening paths, bookmarks, and new tabs without accepting secrets.driftline-mcp: standalone stdio MCP server for local AI clients.
DriftlineCoremust stay UI-free and testable.- Credentials are referenced by
CredentialReferenceand resolved throughCredentialStore. - Saved profiles, bookmarks, recents, preferences, host trust, and transfer history live behind repository protocols.
- Remote file browsing conforms to
RemoteFileSystemClient. - Upload/download work conforms to
TransferClient. - MCP tools call the same core protocols and never resolve credentials outside
CredentialStore. - Terminal commands are built from structured arguments or carefully quoted remote path expressions.
- SwiftUI owns app state in
Sources/DriftlineApp; protocol clients and repositories live in core.
| Backend | Purpose | Status |
|---|---|---|
| System SSH/SFTP | Default remote browsing and transfer path using system SSH tooling. | Stable default |
| Native Swift SFTP | In-process SwiftNIO SSH/SFTP backend for password and supported key auth. | Tested, opt-in |
| SCP | Simpler transfer fallback. | Available |
| FTP/FTPS/WebDAV/S3/SMB | Future protocol adapters. | Not implemented |
Native SFTP supports password auth, unencrypted and passphrase-protected Ed25519 keys, ECDSA PEM keys, host trust, list/create/rename/delete/exists, file and folder upload/download, cancellation, progress, large-file tests, and ~ remote path resolution.
SSH agent signing remains on the System SSH backend. Driftline includes native agent protocol pieces, but SwiftNIO SSH 0.11.0 does not expose the user-auth signer hook needed for agent-backed native auth.
The release workflow is tag-driven. Pushing a v*.*.* tag whose commit is on main runs lint/tests, builds the macOS app, packages Driftline.dmg, uploads Driftline.dmg.sha256, and creates the GitHub Release.
Signing and notarization are wired for manual workflow dispatch only and require Apple credentials. Do not claim public artifacts are signed or notarized unless CI or local verification proves it.