Curlino is a modern, cross-platform desktop app to import, manage and execute curl commands with a beautiful graphical interface. Built with Electron, React, and TypeScript, it transforms your curl commands into an organized, visual REST API client experience.
🚀 Key Features: Native curl command import, cross-platform compatibility, modern UI design, advanced request management, environment variables, response visualization, and comprehensive testing capabilities.
Clean and intuitive workspace for managing your API requests with organized groups and collections.
Import cURL commands seamlessly and view formatted responses with syntax highlighting.
Configure environments, variables, and application preferences for different development workflows.
- 🎯 Native cURL Import: Paste any curl command and automatically parse it into a visual request
- ⚡ cURL Export: Convert any request back to curl command for command-line usage
- 🔄 cURL Command Execution: Execute imported curl commands with full parameter support
- HTTP Methods Support: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
- Request Builder: Intuitive graphical interface for crafting API requests
- Headers & Parameters: Full control over request headers and query parameters
- Request Body: Support for JSON, XML, form data, and raw text
- Group Organization: Organize requests into logical groups and collections
- Environment Variables: Manage different environments (dev, staging, prod) with variable substitution
- Tabbed Interface: Work with multiple requests simultaneously
- Request History: Track and revisit previously executed requests
- Auto-save: Automatic saving of groups and environments
- Response Viewer: Beautiful syntax highlighting for JSON, XML, HTML
- Headers Inspection: Detailed view of response headers and status codes
- Response Time Tracking: Monitor API performance
- Status Code Analysis: Visual indicators for HTTP status codes
- Response Export: Save responses for documentation or debugging
- Cross-platform: Native desktop app for macOS, Windows, and Linux
- Dark/Light Theme: Customizable themes with system preference support
- Responsive Design: Optimized interface that adapts to different screen sizes
- Keyboard Shortcuts: Efficient workflow with customizable shortcuts
- Settings Panel: Comprehensive configuration options
# Simply copy any curl command like this:
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer token123" \
-d '{"name": "John", "email": "john@example.com"}'
# Paste it directly into Curlino's import dialog
# → Curlino automatically parses and creates a visual request
# → Execute, modify, and manage it through the GUI
# → Export back to curl when needed- Download the latest release from GitHub Releases
- Install the appropriate package for your operating system:
- macOS: Download
.dmgfile - Windows: Download
.exeinstaller - Linux: Download
.AppImagefile
- macOS: Download
# Clone the repository
git clone https://github.com/manueligno78/curlino.git
cd curlino
# Install dependencies
npm install
# Start development server
npm run dev- Electron - Cross-platform desktop app framework
- React 18 - Modern UI library with hooks
- TypeScript - Type-safe JavaScript development
- Node.js - Runtime for API calls and system integration
- Webpack - Module bundling and optimization
- ESLint & Prettier - Code quality and formatting
- Jest - Testing framework with React Testing Library
- GitHub Actions - CI/CD pipeline
- Axios - HTTP client for API requests
- UUID - Unique identifier generation
- HTTP Status Messages - Status code utilities
The application supports various customization options through its settings panel:
- Theme: Choose between Light, Dark, or System theme
- Font Size: Adjust the font size throughout the application
- Follow Redirects: Automatically follow HTTP redirects
- Timeout: Set the default timeout for requests in milliseconds
- SSL Verification: Enable/disable SSL certificate verification
- Default Headers: Configure headers to include in all requests by default
- Auto Save: Enable/disable automatic saving of groups and environments
- Usage Data: Opt-in/out of sending anonymous usage data
- History Items: Configure the maximum number of items to keep in history
- Click on "Settings" in the main navigation bar to open the settings panel
- All settings are automatically saved to your application data directory
The application includes a comprehensive structured logging system for monitoring and debugging.
The application supports four log levels:
- ERROR: Critical errors that may cause the application to malfunction
- WARN: Warning messages for potential issues
- INFO: General information about application operations
- DEBUG: Detailed debugging information (only shown in development)
By default:
- Development mode: Shows all logs (DEBUG level and above)
- Production mode: Shows INFO level and above (hides DEBUG logs)
Logs are displayed in the browser's developer console with the following format:
2025-07-31T14:39:44.173Z [ERROR] [ComponentName]: Error message {"context":"data"}
Each log entry includes:
- Timestamp: ISO 8601 format timestamp
- Level: Log level in brackets (ERROR, WARN, INFO, DEBUG)
- Component: The application component that generated the log
- Message: Human-readable description of the event
- Context: Additional structured data (JSON format)
To change the log level at runtime, open the browser's developer console and use:
// Set to show only errors and warnings
window.logger?.setLogLevel('warn');
// Set to show all logs (including debug)
window.logger?.setLogLevel('debug');
// Set to show info and above (default for production)
window.logger?.setLogLevel('info');
// Set to show only errors
window.logger?.setLogLevel('error');Logs are categorized by component:
- ApiService: HTTP requests and responses
- StorageService: Data persistence operations
- ErrorHandler: Error management and reporting
- UI Components: User interface interactions
- App: Application lifecycle events
// API Request log
2025-07-31T14:39:44.173Z [INFO] [ApiService]: API Request {"method":"GET","url":"https://api.example.com/data","statusCode":200,"responseTime":145}
// Storage operation log
2025-07-31T14:39:44.186Z [DEBUG] [StorageService]: Saving groups {"action":"saveGroups","count":3}
// Error log
2025-07-31T14:39:44.204Z [ERROR] [ErrorHandler]: Network request failed {"errorType":"NETWORK_ERROR","url":"https://api.example.com/data"}
- Node.js (version 14 or higher)
- npm (Node package manager)
- Clone the repository:
git clone https://github.com/yourusername/curlino.git - Navigate to the project directory:
cd curlino - Install the dependencies:
npm install
To start the application, run the following command:
npm start
To create a production build of the application, use:
npm run build
You can generate a native .app file for macOS using electron-builder:
- macOS with Xcode command line tools installed
- Node.js and npm
-
Open a terminal and move to the project directory:
cd curlino -
Install dependencies (if not already done):
npm install -
Build the production bundle:
npm run build -
Generate the
.appand.dmgfiles:npm run distor directly:
npx electron-builder --mac -
The
.appfile will be available in thedist/mac/folder. You can double-click it to launch Curlino as a native macOS application. The.dmgfile can be used for easy distribution.
Once the application is running, you can:
- Use the sidebar to navigate between groups and environments.
- Create new requests in the Request Panel.
- View responses in the Response Panel.
- Switch between requests using the Tab System.
Contributions are welcome! Please read our Contributing Guide for details on our development process, coding standards, and how to submit pull requests.
- Fork the repository
- Install dependencies:
npm install - Run quality checks:
npm run quality - Create a feature branch:
git checkout -b feature/your-feature - Make your changes and ensure tests pass
- Submit a pull request
This project uses automated quality checks:
- ESLint for code quality and consistency
- Prettier for code formatting
- Jest for testing with coverage reports
- Husky for pre-commit hooks
- GitHub Actions for CI/CD
Run all quality checks with:
npm run qualityThis project is licensed under the MIT License. See the LICENSE file for details.