Privacy
Tablen is designed with privacy as a core principle. Your data stays on your machine, passwords are secured in the macOS Keychain, and analytics are entirely opt-in.
Data Storage
Local Storage
All Tablen data is stored locally on your Mac:
~/Library/Application Support/DBClient/
Files stored locally:
| File | Content |
|---|---|
| connections.json | Saved connection configurations (no passwords) |
| groups.json | Connection group definitions |
| query_history.json | Recent query history |
| tabs.json | Open tab state |
| favorites.json | Favorite queries |
| saved_queries.json | Saved queries |
| audit_log.json | Local audit log |
| plugins/ | Installed plugins |
Password Security
Passwords are stored exclusively in the macOS Keychain:
- Never written to JSON files
- Never stored in UserDefaults
- Each connection's password is a separate Keychain item
- Keychain errors are handled explicitly with user-visible messages
- Keychain items are deleted when connections are deleted
No Cloud Data by Default
- No data is sent to any server unless you explicitly opt in
- iCloud Sync is opt-in and only syncs connections and queries (never passwords)
- Crash reporting is opt-in
Crash Reporting (Sentry)
Opt-In Only
Crash reporting via Sentry is completely opt-in:
- Go to Settings > General > Privacy
- Toggle "Send crash reports and performance data"
- Default: Off
What Is Sent (When Enabled)
- Anonymous crash reports (stack traces)
- Performance metrics (app launch time, etc.)
- App version and macOS version
- No personal data
- No database content
- No connection details
- No SQL queries
Disabling
- Toggle off in Settings > General > Privacy
- Disabling requires an app restart to take full effect
- No data is sent after disabling
Delete All My Data
Complete data deletion is available:
- Go to Settings > General > Data
- Click "Delete All My Data"
- Confirm the action
What Is Deleted
- All connection configurations
- All saved passwords (Keychain)
- All query history
- All saved queries and favorites
- All tab state
- All audit logs
- All UserDefaults preferences
- All group definitions
After Deletion
- A restart is recommended for changes to take full effect
- The app returns to its initial state (as if freshly installed)
- This action cannot be undone
Network Communication
When Tablen Connects to External Servers
| Action | When | Data Sent |
|---|---|---|
| Database connections | User-initiated | Connection credentials (to your database only) |
| License validation | App launch, feature access | Machine fingerprint, license key |
| Plugin marketplace | User-initiated | Plugin slug for install/search |
| iCloud Sync | When enabled | Connections and queries (no passwords) |
| Crash reports | When enabled | Anonymous crash data |
| Update checks | When enabled | App version |
| Team features | Team plan users | Team-related data |
When Tablen Does NOT Connect
- Normal SQL editing and execution (local processing)
- Plugin management (local plugins)
- Settings changes
- Theme switching
- Data profiling (queries run on your database, not sent elsewhere)
App Sandbox
Tablen runs in the macOS App Sandbox:
- Outgoing network connections: Enabled (required for database connections)
- User-selected files: Enabled (for SQLite, DuckDB, SSH keys, exports)
- No file system access beyond sandbox boundaries and user-selected files
- Sandbox settings are in the Xcode build settings (not entitlements file)
DNS and Localhost
- "localhost" is resolved to "127.0.0.1" to bypass sandbox DNS restrictions
- This ensures reliable connections to local databases
AI Privacy
When AI features become available:
- AI features will be opt-in
- Database schema may be shared with AI providers for context
- Actual database data will not be sent
- AI provider configuration will be under your control
Team Plan Privacy
For Team plan subscribers:
- Team features require server communication
- Shared connections exclude passwords
- Data masking rules are fetched from the server
- Approval workflow requires server communication
- Role verification uses the Tablen server
Third-Party Dependencies
| Dependency | Purpose | Data Sent |
|---|---|---|
| GRDB.swift | SQLite driver | None (local) |
| PostgresNIO | PostgreSQL driver | Database credentials (to your DB) |
| MySQLNIO | MySQL driver | Database credentials (to your DB) |
| Sentry | Crash reporting | Anonymous crashes (opt-in) |
| Paddle | Licensing | License validation data |
Compliance Considerations
- Tablen stores data locally by default, supporting data sovereignty requirements
- The "Delete All My Data" function supports right-to-erasure requests
- Audit logging supports compliance requirements
- Data masking (Team plan) supports data protection regulations
- No personal data processing occurs without user consent