NitNab ποΈ
Nifty Instant Transcription Nifty AutoSummarize Buddy
A powerful, privacy-focused native macOS application for transcribing audio files using Apple's cutting-edge Speech framework and Apple Intelligence. Built for macOS 26+ with Swift 6.0 and optimized for Apple Silicon.
200+ features β’ 70+ languages β’ 8+ audio formats β’ 5 export formats β’ 100% privacy-first
π Table of Contents
β¨ Features
π΅ Audio File Management
File Import
- Browse Files button for native macOS file picker
- Drag & Drop support with visual feedback
- Multi-file selection for batch processing
- Automatic duplicate detection using MD5 checksums
- File validation (format, duration, quality)
Supported Audio Formats
- M4A, WAV, MP3, AIFF, CAF, FLAC, AAC, ALAC
- 8+ audio formats with automatic format detection
- Support for compressed and lossless codecs
File Organization
- Automatic timestamped folder creation:
YYYY-MM-DD_HH-MM-SS_filename/ - Structured storage: Audio/, Transcript/, AI Summary/ subfolders
- SQLite database tracking for all files and metadata
- MD5 checksums prevent duplicate processing
ποΈ Transcription Engine
Core Transcription
- Apple Speech Framework (SFSpeechRecognizer API)
- 100% on-device processing (privacy-first)
- High accuracy leveraging Apple's latest speech recognition
- Real-time progress with time-based estimation
- Automatic error handling and recovery
- Status tracking: Pending, Processing, Completed, Failed
Multi-Language Support
- 70+ languages supported
- Language selector dropdown
- Remembers preferred language
- Per-file language selection
Batch Processing
- Sequential file processing
- Automatic queue management
- Error recovery (continues after failures)
- Cancel anytime without losing progress
Quality Metrics
- Word count tracking
- Character count tracking
- Confidence scores
- Duration tracking
- Timestamp support for subtitles
π€ Apple Intelligence Features
AI Summaries
- One-click summary generation
- Context-aware using FoundationModels
- Regenerate for different perspectives
- Copy to clipboard instantly
- Auto-saved to
AI Summary/summary.txt - Persistent across app restarts
Interactive AI Chat
- Per-file conversations - Each file has independent chat
- Chat history saved per file in
AI Summary/chat.json - Context persistence when switching files
- Natural language queries
- Draft emails based on transcript
- Extract action items automatically
- Summarize on demand
- Copy individual responses
- Keyboard shortcuts: Enter to send, Shift+Enter for new line
AI Context & Memory
- User profile (name, role, company)
- Company context for files
- Custom vocabulary per company
- Name correction using context
- Smart pre-populated suggestions
πΎ Data Persistence & Storage
Automatic Saving (Enabled by Default)
- Audio files β
Audio/folder - Transcripts β
Transcript/transcript.txt - Metadata β
Transcript/metadata.json - AI summaries β
AI Summary/summary.txt - Chat history β
AI Summary/chat.json
Storage Options
- iCloud Drive: Automatic sync across devices
- Custom Folder: Store anywhere on Mac or external drives
- Ubiquitous container:
iCloud.com.lanec.nitnab - Works with unsigned builds via direct file paths
Database Management
- SQLite database (
nitnab.db) - Automatic schema migration
- Job metadata tracking
- MD5 checksums for duplicates
- Referential integrity
Folder Structure
NitNab/
βββ nitnab.db
βββ 2025-10-10_16-30-00_filename/
βββ Audio/filename.m4a
βββ Transcript/
β βββ transcript.txt
β βββ metadata.json
βββ AI Summary/
βββ summary.txt
βββ chat.json
π€ Export & Sharing
Export Formats
- Plain Text (.txt) - Clean transcript
- Markdown (.md) - Formatted document
- SRT (.srt) - Subtitle format with timestamps
- WebVTT (.vtt) - Web video text tracks
- JSON (.json) - Structured data with metadata
Export Features
- Single file or batch export
- Format selection per export
- Optional metadata inclusion
- Automatic file naming with timestamps
Copy & Paste
- One-click copy full transcript
- Copy AI summaries
- Copy individual chat responses
- Select and copy text portions
- Native clipboard integration
π¨ User Interface
View Modes
- Standard Mode: Simple file list with drop zone
- Advanced Mode: Power user features (search, tags, sorting)
- Instant mode switching
- Persistent mode preference
Three-Tab Interface
- Transcript Tab: Full transcription text
- Summary Tab: AI-generated summaries
- Chat Tab: Interactive AI conversation
File List Features
- Visual selection with blue border
- Status icons for job states
- Real-time progress bars
- Inline error messages (no popups!)
- File info: name, duration, format, date
- Right-click context menu
Drop Zone
- Visual drag & drop feedback
- Large Browse Files button
- Supported format list
- Clear instructions
- Helpful empty state
π Advanced Mode Features
Search & Filter
- Full-text search (filename, transcript, description)
- Real-time filtering as you type
- Result count display
- Case-insensitive matching
- Quick clear button
Tag System
- Custom tags for organization
- Tag cloud with counts
- Click to filter by tag
- Multi-tag support per file
- Visual tag display
Sorting Options
- Date Added (newest first)
- Date Modified
- Date Completed
- Alphabetical (A-Z)
- Persistent sort preference
Company Management
- Associate files with companies
- Company picker interface
- AI uses company context
- Custom vocabulary per company
- People database integration
βοΈ Settings & Configuration
General Settings
- Default transcription language
- Always open in Advanced Mode
- Auto-start transcription after adding files
- Default export format
Persistence Settings
- Auto-persist toggle
- Storage location (iCloud or custom)
- iCloud availability status
- Folder picker
- Current path display
Memory & Context
- User profile management
- Company management
- People/contacts database
- Custom vocabulary
- Context building for AI
π Privacy & Security
Privacy-First Design
- 100% on-device processing
- No cloud services (except optional iCloud Drive for file sync)
- No external API calls
- No data collection or analytics
- No account required
- Works completely offline
Data Security
- Security-scoped resource handling
- macOS sandbox compliance
- Encrypted iCloud sync
- Local SQLite database
- MD5 file integrity checks
Permissions
- Speech Recognition (required)
- File Access (per-file basis)
- iCloud Access (optional)
- Minimal permission requests
β¨οΈ Keyboard Shortcuts
- βN - Add new files
- βR - Start transcription
- β. - Cancel transcription
- βC - Copy transcript
- β, - Open settings
- Enter - Send chat message
- Shift+Enter - New line in chat
π Metadata & Analytics
Job Tracking
- Creation, modification, completion dates
- Processing time
- File size and audio duration
- Word and character counts
- Confidence scores
- Language detection
- Format information
Performance
- Progress estimation
- Queue position tracking
- Detailed error logging
- Status history
π οΈ Developer Features
Architecture
- MVVM pattern with SwiftUI
- Actor-based services (thread-safe)
- Swift Concurrency (async/await)
- Combine for reactive data flow
Services (7 Actor-Based Services)
- AIService - Apple Intelligence
- TranscriptionService - Speech recognition
- AudioFileManager - Audio operations
- PersistenceService - File system
- DatabaseService - SQLite management
- ExportService - Multi-format export
- MemoryService - Context management
Quality
- Swift 6.0
- Type-safe throughout
- Memory-safe with ARC
- Actor isolation for thread safety
- Clean, maintainable codebase
π― Key Statistics
- 200+ total features
- 70+ languages supported
- 8+ audio formats
- 5 export formats
- 2 UI modes (Standard/Advanced)
- 7 service actors
- 3-tab interface
π Getting Started
Requirements
- macOS 26.0 (Tahoe) or later - Required for Apple Intelligence features
- Apple Silicon Mac - Required for FoundationModels API
- Xcode 26.0 or later - For building from source
- Speech Recognition permission - Granted on first launch
Installation
Option 1: Build from Source
- Clone the repository:
git clone https://github.com/lanec/nitnab.git
cd nitnab- Open the project in Xcode:
- Build and run (βR)
Option 2: Download Release
Download the latest release from the Releases page.
First Launch
- Launch NitNab
- Grant Speech Recognition permission when prompted
- Click "Browse Files" to select audio files (recommended over drag-and-drop)
- Select your preferred language from the dropdown
- Click "Start Transcription"
- Click completed files to view transcripts
- Use Summary tab to generate AI summaries
- Use Chat tab to interact with the transcript
π Usage
Adding Files
- File Picker (Recommended): Click "Browse Files" to select files from Finder
- Automatically grants file access permissions
- Most reliable method
- Drag & Drop: Drag audio files directly onto the app window
- May require Full Disk Access in System Settings
- Batch Import: Select multiple files at once for batch processing
Transcribing
- Add one or more audio files using "Browse Files"
- Select the language from the dropdown (defaults to English)
- Click "Start Transcription"
- Monitor progress in real-time (time-based estimation)
- Files process automatically, skipping empty audio files
- Click any completed file to view results
Viewing Results
Transcript Tab
- View full transcription text
- Click "Copy" button to copy entire transcript
- Text is selectable for partial copying
Summary Tab
- Click "Generate Summary" to create AI-powered summary
- Click "Copy" to copy summary text
- Click "Regenerate" for a new summary
- Powered by Apple Intelligence (FoundationModels)
Chat Tab
- Ask questions about the transcript
- Request email drafts or action items
- Get context-aware AI responses
- Conversation history maintained
- Try suggestions: "Draft an email about this", "What action items were mentioned?"
Data Persistence & iCloud Sync
Automatic Saving (Enabled by Default)
When you transcribe files, NitNab automatically saves everything to a structured folder:
YourChosenFolder/NitNab/
βββ nitnab.db # SQLite database tracking all transcriptions
βββ 2025-10-09_15-30-45_MyRecording/
βββ Audio/
β βββ MyRecording.m4a # Copy of original audio file
βββ Transcript/
β βββ transcript.txt # Full transcript text
β βββ metadata.json # Job details (duration, confidence, etc.)
βββ AI Summary/
βββ summary.txt # AI-generated summary (after generation)
βββ chat.json # Chat conversation history
Storage Options:
-
iCloud Drive (Recommended): Automatically syncs across all your Macs and future iOS devices
- Uses app-specific ubiquitous container:
iCloud.com.lanec.nitnab - Location:
iCloud~com~lanec~nitnab/Documents/NitNab/ - Select "Use iCloud Drive" in Settings β Persistence
- Configured automatically on first launch if iCloud is available
- Uses app-specific ubiquitous container:
-
Custom Local Folder: Store files anywhere on your Mac
- Choose "Choose Folder..." in Settings β Persistence
- Great for local-only storage or external drives
Managing Persistence:
- Toggle auto-save on/off in Settings β Persistence
- Files are saved after transcription, summary generation, and each chat message
- All data syncs via iCloud if that option is selected
- Future mobile app will access the same iCloud data
Exporting
Export transcripts in multiple formats:
- Plain Text (.txt): Simple, clean transcript
- SRT (.srt): Subtitle format with timestamps
- WebVTT (.vtt): Web video text tracks
- JSON (.json): Structured data with metadata
- Markdown (.md): Formatted document
Access export options from the Export menu in the header or file context menu.
Keyboard Shortcuts
βN: Add new filesβR: Start transcriptionβ.: Cancel transcriptionβC: Copy selected transcriptβ,: Open settings
ποΈ Architecture
NitNab is built with modern Swift and SwiftUI:
NitNab/
βββ Models/ # Data models
β βββ TranscriptionJob.swift # Job state and metadata
β βββ AudioFile.swift # Audio file information
β βββ TranscriptionResult.swift # Transcript data
β βββ PersistedJobData.swift # Serializable job data
βββ Services/ # Business logic (Actor-based)
β βββ AIService.swift # Apple Intelligence integration
β βββ AudioFileManager.swift # Audio file operations
β βββ TranscriptionService.swift # Speech recognition
β βββ ExportService.swift # Multi-format export
β βββ PersistenceService.swift # File system persistence
β βββ DatabaseService.swift # SQLite job tracking
βββ ViewModels/ # MVVM view models
β βββ TranscriptionViewModel.swift # Main app coordinator
βββ Views/ # SwiftUI views
βββ ContentView.swift # Main app container
βββ HeaderView.swift # Top bar with controls
βββ DropZoneView.swift # File drop target
βββ FileListView.swift # Job list sidebar
βββ TranscriptView.swift # Three-tab interface
βββ SettingsView.swift # App configuration
Key Technologies
- SwiftUI: Modern declarative UI framework
- Swift Concurrency: Async/await and actors for clean asynchronous code
- Actors: Thread-safe service layer with isolated state
- SFSpeechRecognizer: Apple's on-device speech-to-text API
- FoundationModels: Apple Intelligence for summaries and chat (macOS 26+)
- LanguageModelSession: On-device LLM integration
- AVFoundation: Audio file processing and format conversion
- SQLite: Database for job tracking and metadata
- FileManager: iCloud and local file system integration
- MVVM Architecture: Clean separation of concerns
Design Principles
- Privacy-First: All processing happens on-device, no cloud services
- Offline-Capable: Works without internet connection
- Actor-Based Concurrency: Thread-safe by design
- Persistent State: Jobs and transcripts survive app restarts
- iCloud Sync Ready: Built for seamless cross-device sync
π€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
- Built with Apple's SpeechTranscriber API
- Inspired by the need for privacy-focused, local transcription tools
- Thanks to the Swift and macOS developer community
π§ Contact
Lane Campbell - @lanec
Project Link: https://github.com/lanec/nitnab
Website: https://www.nitnab.com
π§ Development
Building from Source
# Clone the repository git clone https://github.com/lanec/nitnab.git cd nitnab # Open in Xcode open NitNab/NitNab.xcodeproj # Build and run # Press βR or Product > Run
Project Structure
The project follows clean MVVM architecture with actor-based services:
- Models: Immutable data structures
- Services: Actor-isolated business logic
- ViewModels: @MainActor view coordinators
- Views: SwiftUI declarative UI
Testing
Run tests with:
xcodebuild test -project NitNab/NitNab.xcodeproj -scheme NitNabπ Troubleshooting
Speech Recognition Not Working
- Check Permissions: Go to System Settings β Privacy & Security β Speech Recognition
- Enable for NitNab: Make sure NitNab is checked
- Restart the App: Quit and relaunch NitNab
Files Not Persisting
- Database Migration: The app automatically migrates old database schemas
- Check Storage: Ensure sufficient disk space in your iCloud or local storage
- View Logs: Check Console.app for any error messages from NitNab
Apple Intelligence Features Not Available
- Requirements: macOS 26.0+ and Apple Silicon required
- Enable Apple Intelligence: System Settings β Apple Intelligence
- Language: Currently Apple Intelligence requires English (US)
Build Errors
- Xcode Version: Ensure you're using Xcode 16.0 or later
- macOS SDK: The project requires macOS 26.0 SDK
- Clean Build: Try Product β Clean Build Folder (ββ§K)
πΊοΈ Roadmap
Completed β
- Multi-language transcription
- AI-powered summarization
- Interactive AI chat
- Batch processing
- iCloud sync for transcripts
- Database persistence
- Multiple export formats
Planned π―
- Live audio recording and transcription
- Speaker diarization (multiple speakers)
- Streaming transcription with real-time updates
- Custom vocabulary support
- iOS/iPadOS companion app
- Shortcuts integration
- Share extension for system-wide transcription
- Timeline view with segment navigation
πΈ Screenshots
Screenshots coming soon
Made with β€οΈ by Lane Campbell