A native macOS GUI for cURL, built with SwiftUI. Every cURL command-line option exposed as an intuitive graphical interface.
- All HTTP methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACE, CONNECT
- Request body: Raw (JSON, XML, Text, HTML), Form Data, URL-encoded, Binary files
- Authentication: Basic, Bearer Token, Digest, NTLM, Negotiate, AWS Signature v4
- Headers: Custom headers with common presets (Content-Type, Accept, etc.)
- Cookies: Manual cookies, cookie files, and cookie jars
- SSL/TLS: Certificates, keys, CA bundles, SSL versions, insecure mode
- Proxy: HTTP, HTTPS, SOCKS4, SOCKS4a, SOCKS5 with authentication
- Advanced: Timeouts, retries, redirects, compression, DNS options, and more
- Multi-tab interface: Work on multiple requests simultaneously
- Request history: Search, filter, and pin important requests
- Response diff: Compare two responses side-by-side or unified
- Live command preview: See the generated cURL command in real-time
- Keyboard shortcuts: Full keyboard navigation support
- Syntax highlighting: JSON auto-formatting and display
- Headers view: Parsed response headers
- Status indicators: Color-coded HTTP status codes
- Timing information: Request duration tracking
- macOS 14.0 (Sonoma) or later
- Xcode 15.0+ (for building from source)
-
Clone the repository:
git clone https://github.com/247arjun/gURL.git cd gURL -
Open in Xcode:
open gURL.xcodeproj
-
Build and run (⌘R) or archive for distribution (Product → Archive)
Download the latest release from the Releases page.
- Select HTTP method from the dropdown
- Enter the URL
- Click "Send" or press ⌘↩
- Navigate to the "Headers" tab
- Add key-value pairs or use common header presets
- Toggle headers on/off without deleting them
- Navigate to the "Body" tab
- Select body type (Raw, Form Data, URL-encoded, Binary)
- For raw body, choose content type and enter data
- JSON is auto-formatted when you click "Format JSON"
- Navigate to the "Auth" tab
- Select authentication type
- Enter credentials as required
- New Tab: ⌘T
- Close Tab: ⌘W
- Duplicate Request: ⌘D (opens in new tab)
| Action | Shortcut |
|---|---|
| Send Request | ⌘↩ |
| New Tab | ⌘T |
| Close Tab | ⌘W |
| Duplicate Request | ⌘D |
| Copy cURL Command | ⇧⌘C |
| Show History | ⌘Y |
| Response Diff | ⇧⌘D |
gURL/
├── gURLApp.swift # App entry point, menus, settings
├── ContentView.swift # Legacy single-tab view
├── Models/
│ ├── CurlOptions.swift # All cURL options as SwiftUI @Published properties
│ └── RequestTab.swift # Tab management and history
├── ViewModels/
│ └── RequestViewModel.swift # Request state and execution logic
├── Views/
│ ├── MainContentView.swift # Multi-tab container
│ ├── BasicRequestView.swift # URL and method options
│ ├── HeadersView.swift # HTTP headers
│ ├── BodyView.swift # Request body (raw, form, etc.)
│ ├── AuthenticationView.swift # Auth options
│ ├── SSLView.swift # SSL/TLS settings
│ ├── ProxyView.swift # Proxy configuration
│ ├── CookiesView.swift # Cookie management
│ ├── AdvancedOptionsView.swift # Advanced cURL flags
│ ├── OutputOptionsView.swift # Output and verbosity
│ ├── ResponseView.swift # Response display
│ ├── CommandPreviewView.swift # Live cURL command
│ ├── HistoryView.swift # Request history
│ └── ResponseDiffView.swift # Response comparison
└── Services/
└── CurlService.swift # cURL command generation and execution
gURL generates cURL commands based on your GUI selections and executes them using the system's /bin/zsh shell. This means:
- ✅ Uses your system's actual cURL binary
- ✅ Supports all cURL features your system supports
- ✅ Commands can be copied and run in terminal
- ✅ No network library dependencies
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
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by tools like Postman, Insomnia, and HTTPie
- Built with SwiftUI for native macOS performance
- cURL by Daniel Stenberg and contributors
gURL - Because sometimes you just need a GUI for cURL. 🚀