7 KiB
VibeTunnel Files Catalog
Overview
VibeTunnel is a cross-platform terminal sharing application organized into distinct platform modules: macOS native app, iOS companion app, and a TypeScript web server. The codebase follows a clear separation of concerns with platform-specific implementations sharing common protocols and interfaces.
The project structure emphasizes modularity with separate build systems for each platform - Xcode projects for Apple platforms and Node.js/TypeScript tooling for the web server. Configuration is managed through xcconfig files, Package.swift manifests, and package.json files.
Core Source Files
macOS Application (mac/)
Main Entry Points
VibeTunnel/VibeTunnelApp.swift- macOS app entry point with lifecycle managementVibeTunnel/Core/Protocols/VibeTunnelServer.swift- Server protocol definitionVibeTunnel/Core/Services/ServerManager.swift- Central server orchestration
Core Services
VibeTunnel/Core/Services/BunServer.swift- Bun runtime server implementationVibeTunnel/Core/Services/BaseProcessServer.swift- Base server process managementVibeTunnel/Core/Services/TTYForwardManager.swift- Terminal forwarding coordinatorVibeTunnel/Core/Services/TerminalManager.swift- Terminal app integrationVibeTunnel/Core/Services/SessionMonitor.swift- Session lifecycle trackingVibeTunnel/Core/Services/NgrokService.swift- Tunnel service integrationVibeTunnel/Core/Services/WindowTracker.swift- Window state management
Security & Permissions
VibeTunnel/Core/Services/DashboardKeychain.swift- Secure credential storageVibeTunnel/Core/Services/AccessibilityPermissionManager.swift- Accessibility permissionsVibeTunnel/Core/Services/ScreenRecordingPermissionManager.swift- Screen recording permissionsVibeTunnel/Core/Services/AppleScriptPermissionManager.swift- AppleScript permissions
UI Components
VibeTunnel/Presentation/Views/MenuBarView.swift- Menu bar interfaceVibeTunnel/Presentation/Views/WelcomeView.swift- Onboarding flowVibeTunnel/Presentation/Views/SettingsView.swift- Settings windowVibeTunnel/Presentation/Views/SessionDetailView.swift- Session detail view
iOS Application (ios/)
Main Entry Points
VibeTunnel/App/VibeTunnelApp.swift- iOS app entry pointVibeTunnel/App/ContentView.swift- Root content view
Services
VibeTunnel/Services/APIClient.swift- HTTP API clientVibeTunnel/Services/BufferWebSocketClient.swift- WebSocket terminal clientVibeTunnel/Services/SessionService.swift- Session managementVibeTunnel/Services/NetworkMonitor.swift- Network connectivity
Terminal Views
VibeTunnel/Views/Terminal/TerminalView.swift- Main terminal viewVibeTunnel/Views/Terminal/TerminalHostingView.swift- SwiftTerm hostingVibeTunnel/Views/Terminal/TerminalToolbar.swift- Terminal controlsVibeTunnel/Views/Terminal/CastPlayerView.swift- Recording playback
Data Models
VibeTunnel/Models/Session.swift- Terminal session modelVibeTunnel/Models/TerminalData.swift- Terminal buffer dataVibeTunnel/Models/ServerConfig.swift- Server configuration
Web Server (web/)
Server Entry Points
src/index.ts- Main server entrysrc/server/server.ts- Express server setupsrc/server/app.ts- Application configuration
Terminal Management
src/server/pty/pty-manager.ts- PTY process managementsrc/server/pty/session-manager.ts- Session lifecyclesrc/server/services/terminal-manager.ts- Terminal service layersrc/server/services/buffer-aggregator.ts- Terminal buffer aggregation
API Routes
src/server/routes/sessions.ts- Session API endpointssrc/server/routes/remotes.ts- Remote connection endpoints
Client Application
src/client/app-entry.ts- Web client entrysrc/client/app.ts- Main application logicsrc/client/components/terminal.ts- Web terminal componentsrc/client/components/vibe-terminal-buffer.ts- Buffer terminal componentsrc/client/services/buffer-subscription-service.ts- WebSocket subscriptions
Platform Implementation
macOS Platform Files
apple/Local.xcconfig- Local build configurationmac/VibeTunnel/Shared.xcconfig- Shared build settingsmac/VibeTunnel/version.xcconfig- Version configurationmac/VibeTunnel.entitlements- App entitlementsmac/VibeTunnel-Info.plist- App metadata
iOS Platform Files
ios/Package.swift- Swift package manifestios/project.yml- XcodeGen configurationios/VibeTunnel/Resources/Info.plist- iOS app metadata
Web Platform Files
web/package.json- Node.js dependenciesweb/tsconfig.json- TypeScript configurationweb/vite.config.ts- Vite build configurationweb/tailwind.config.js- Tailwind CSS configuration
Build System
macOS Build Scripts
mac/scripts/build.sh- Main build scriptmac/scripts/build-bun-executable.sh- Bun server buildmac/scripts/copy-bun-executable.sh- Resource copyingmac/scripts/codesign-app.sh- Code signingmac/scripts/notarize-app.sh- App notarizationmac/scripts/create-dmg.sh- DMG creationmac/scripts/release.sh- Release automation
Web Build Scripts
web/scripts/clean.js- Build cleanupweb/scripts/copy-assets.js- Asset managementweb/scripts/ensure-dirs.js- Directory setupweb/build-native.js- Native binary builder
Configuration Files
mac/VibeTunnel.xcodeproj/project.pbxproj- Xcode projectios/VibeTunnel.xcodeproj/project.pbxproj- iOS Xcode projectweb/eslint.config.js- ESLint configurationweb/vitest.config.ts- Test configuration
Configuration
App Configuration
mac/VibeTunnel/Core/Models/AppConstants.swift- App constantsmac/VibeTunnel/Core/Models/UpdateChannel.swift- Update channelsios/VibeTunnel/Models/ServerConfig.swift- Server settings
Assets & Resources
assets/AppIcon.icon/- App icon assetsmac/VibeTunnel/Assets.xcassets/- macOS asset catalogios/VibeTunnel/Resources/Assets.xcassets/- iOS asset catalogweb/public/- Web static assets
Documentation
docs/API.md- API documentationdocs/ARCHITECTURE.md- Architecture overviewmac/Documentation/BunServerSupport.md- Bun server documentationweb/src/server/pty/README.md- PTY implementation notes
Reference
File Organization Patterns
- Platform code separated by directory:
mac/,ios/,web/ - Swift code follows MVC-like pattern: Models, Views, Services
- TypeScript organized by client/server with feature-based subdirectories
- Build scripts consolidated in platform-specific
scripts/directories
Naming Conventions
- Swift files: PascalCase matching class/struct names
- TypeScript files: kebab-case for modules, PascalCase for classes
- Configuration files: lowercase with appropriate extensions
- Scripts: kebab-case shell scripts
Key Dependencies
- macOS: SwiftUI, Sparkle (updates), Bun runtime
- iOS: SwiftUI, SwiftTerm, WebSocket client
- Web: Express, xterm.js, WebSocket, Vite bundler