Open-source network debugging proxy for macOS
SyrahProxy is a full-featured HTTP/HTTPS debugging proxy application built with Flutter for macOS. It provides Proxyman-like functionality with a native platform look.
Website: proxy.syrah.dev
- SSL/HTTPS Inspection - Man-in-the-middle proxy with dynamic certificate generation (powered by mitmproxy)
- Request/Response Viewing - JSON syntax highlighting, headers, body inspection
- Resizable UI - Adjustable sidebar, request columns, and detail panel
- Domain Grouping - Requests organized by host in sidebar
- Pinning - Pin specific domains to filter traffic
- System Proxy - One-click system proxy configuration
- Certificate Management - Generate and trust custom CA certificates
- Native macOS menu bar integration
- System tray icon with quick controls
- Keyboard shortcuts (⌘R to toggle proxy, ⌘K to clear)
- System proxy configuration
- Keychain certificate management
- Breakpoints - Pause and modify requests/responses on-the-fly
- Map Local - Mock responses using local files
- Map Remote - Redirect traffic to alternative endpoints
- Scripting - JavaScript-based request/response manipulation
- Android Support - Android app coming soon
Coming soon
- macOS 12.0 or later
- Flutter SDK 3.x or later
- Xcode 15+
- Melos for monorepo management
- Clone the repository:
git clone https://github.com/benyaminsalimi/syrah-proxy.git
cd syrah-proxy- Install melos globally:
dart pub global activate melos- Add pub-cache bin to PATH (if not already):
export PATH="$PATH:$HOME/.pub-cache/bin"- Bootstrap the monorepo (installs dependencies for all packages):
melos bootstrap- Run code generation (generates freezed models, JSON serialization, etc.):
melos run generatecd packages/syrah_app
flutter build macos --debug # Debug build
flutter build macos --release # Release buildThe built app will be at:
- Debug:
build/macos/Build/Products/Debug/SyrahProxy.app - Release:
build/macos/Build/Products/Release/SyrahProxy.app
To run directly:
flutter run -d macosOr open the built app:
open build/macos/Build/Products/Release/SyrahProxy.app# Clean all packages
melos clean
# Run code generation for all packages
melos run generate
# Run tests for all packages
melos run test
# Analyze all packages
melos run analyzesyrah-proxy/
├── packages/
│ ├── syrah_app/ # Main Flutter application
│ │ ├── lib/
│ │ │ ├── app/ # App configuration, themes, router
│ │ │ ├── features/ # Feature modules
│ │ │ │ ├── home/ # Main request list view
│ │ │ │ ├── detail/ # Request detail view
│ │ │ │ ├── settings/ # App settings
│ │ │ │ └── composer/ # Request composer
│ │ │ └── services/ # mitmproxy bridge, certificates
│ │ └── macos/
│ │
│ ├── syrah_core/ # Shared Dart models and logic
│ │ └── lib/
│ │ ├── models/ # Data models (freezed)
│ │ ├── services/ # Business logic
│ │ └── utils/ # Utilities (HAR, cURL, code gen)
│ │
│ └── syrah_proxy_macos/ # macOS native plugin
│ └── macos/Classes/
│ ├── CertificateAuthority.swift
│ ├── ProxyEngine.swift
│ └── SyrahProxyMacosPlugin.swift
│
├── tools/ # Build tools
├── docs/ # Documentation
└── melos.yaml # Monorepo configuration
SyrahProxy requires a trusted CA certificate to intercept HTTPS traffic.
- Open SyrahProxy and click "Trust Certificate" in the toolbar
- Click "Generate Certificate" if you don't have one
- Click "Install Certificate" - Keychain Access will open
- Find "SyrahProxy CA" certificate
- Double-click and select "Always Trust" under Trust settings
- Enter your password when prompted
- Restart your browser
SyrahProxy uses mitmproxy as its proxy backend:
- mitmproxy runs as a subprocess
- Communication via WebSocket
- Custom Python addon handles flow events
- Supports HTTP/1.1, HTTP/2, WebSocket, gRPC
MitmproxyBridge: WebSocket client for real-time flow updatesCertificateService: CA certificate generation and trust managementTrayService: macOS menu bar tray icon
The app uses Riverpod for state management:
HomeController: Main state (flows, filters, pins, proxy status)- Feature-based architecture with clean separation
Contributions are welcome! Please read our Contributing Guidelines before submitting a PR.
- Fork and clone the repository
- Install dependencies:
melos bootstrap - Run code generation:
melos run generate - Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- mitmproxy - Proxy engine
- Proxyman - Feature inspiration
- Riverpod - State management
- Flutter - UI framework
- GitHub Issues: Report a bug
- Website: proxy.syrah.dev
- Documentation: docs/
Made with ❤️ by the Syrah Project