A modern, lightning-fast alternative to Postman
Built with Rust core + Flutter UI using FFI for seamless communication
Ababil is an open-source API development and testing platform designed to be faster, lighter, and more efficient than traditional tools like Postman. Leveraging Rust's performance capabilities, Ababil provides near-instantaneous request execution while maintaining a beautiful, intuitive user interface built with Flutter.
- ⚡ Incredibly Fast: Rust-powered core ensures the fastest HTTP request processing
- 🪶 Extremely Lightweight: Minimal resource usage compared to Electron-heavy alternatives
- 🎨 Modern UI: Beautiful, responsive interface built with Flutter and Material Design 3
- 🔓 Open Source: Fully transparent, community-driven development
- 🔐 Privacy First: Your data stays on your machine
- 🛠️ Developer-Friendly: Designed by developers, for developers
- 📱 Cross-Platform: Runs natively on macOS, Linux, Windows, iOS, and Android
- HTTP Method Support: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Request Builder: Intuitive interface for creating API requests
- Collection Management: Organize and save your API endpoints
- Environment Variables: Seamlessly manage multiple environments
- Postman Compatibility: Import and export Postman collections and environments
- Response Viewer: Beautiful syntax highlighting for JSON, XML, HTML, and more
- Request History: Track all your API calls (coming soon)
- Authentication: Bearer, Basic, OAuth, and API Key authentication support
- Request Body Types: Raw, URL-encoded, Form-data, and GraphQL support
- Custom Headers: Full control over request headers
- Query Parameters: Easy management of URL parameters
- Rust-Powered Engine: Native performance for request execution
- Async Processing: Efficient async request handling with Tokio
- Minimal Latency: Optimized request pipeline
- Low Memory Usage: Efficient resource management
- MVVM Architecture: Clean, maintainable code structure
- Import/Export: Share collections with your team
- Dark Mode: Easy on the eyes during long coding sessions
- Code Editor: Syntax-highlighted code editor for request/response bodies
- Variable Substitution: Use
{{variable_name}}syntax for dynamic values
- Rust (latest stable version)
- Flutter SDK (3.10.4 or higher)
- Cargo (comes with Rust)
-
Clone the repository
git clone https://github.com/AbabilX/ababil.git cd ababil -
Build the Rust Core
cd ababil_core cargo build --release cd ..
This will generate the native library:
- macOS:
target/release/libababil_core.dylib - Linux:
target/release/libababil_core.so - Windows:
target/release/ababil_core.dll
- macOS:
-
Copy the Native Library
For macOS:
mkdir -p ababil_flutter/macos/Runner/Frameworks cp ababil_core/target/release/libababil_core.dylib ababil_flutter/macos/Runner/Frameworks/
Or use the build script:
./build.sh
-
Set Up Flutter Dependencies
cd ababil_flutter flutter pub get -
Run the Application
flutter run -d macos # or -d ios, -d android, -d linux, -d windows
# Build everything and copy libraries
./build.sh
# Then run Flutter
cd ababil_flutter
flutter runAbabil uses a hybrid architecture where a Rust native library handles HTTP request execution via FFI:
┌─────────────────────────────────────────────────────────┐
│ Flutter UI Layer │
│ ┌─────────────────────────────────────────────────┐ │
│ │ HomeScreen (UI) │ │
│ │ └── HomeViewModel (Business Logic) │ │
│ │ └── HttpRepository │ │
│ │ └── HttpClientService │ │
│ │ └── FFI Binding │ │
│ └─────────────────────────────────────────────────┘ │
└───────────────────────────┬─────────────────────────────┘
│ FFI (dart:ffi)
┌───────────────────────────▼─────────────────────────────┐
│ libababil_core.dylib/.so/.dll (Rust) │
│ - make_http_request(json) → executes HTTP via reqwest│
│ - free_string(ptr) → memory cleanup │
└─────────────────────────────────────────────────────────┘
- UI → ViewModel: User action triggers ViewModel method
- ViewModel → Repository: ViewModel calls Repository method
- Repository → Service: Repository uses Service for data operations
- Service → FFI: Service communicates with Rust core via FFI
- Rust Execution: Rust
reqwestexecutes HTTP request using Tokio async runtime - Response: JSON response flows back through the layers
- UI Update: ViewModel notifies listeners, UI rebuilds
Contains business logic and domain models. Pure Dart classes with no dependencies on Flutter or external services.
- Models: Data structures representing domain entities (HttpRequest, HttpResponse, Collection, Environment)
Handles all data operations and external integrations.
- Services: Direct integration with external systems
HttpClientService: Handles FFI communication with Rust corePostmanService: Handles Postman collection/environment parsing
- Repositories: Abstract data sources and provide clean APIs
HttpRepository: UsesHttpClientServiceand exposes methods for making HTTP requests
Contains all user interface components.
- Screens: Full-screen widgets (pages)
- ViewModels: Manage UI state and business logic
- Extend
ChangeNotifierfor reactive updates - Use repositories to fetch data
- Notify listeners when state changes
- Extend
- Widgets: Reusable UI components
- Rust: High-performance HTTP client and request processing
- Flutter: Cross-platform UI framework
- Dart: Type-safe development language
- FFI (Foreign Function Interface): Seamless communication between Dart and Rust
- reqwest: HTTP client library
- tokio: Async runtime
- serde: JSON serialization/deserialization
- base64: Encoding/decoding for authentication
- ffi: FFI bindings for native library communication
- path_provider: File system access
- file_picker: File selection dialogs
- syntax_highlight: Code syntax highlighting
- flutter_code_editor: Code editing capabilities
- Launch Ababil
- Select HTTP Method (GET, POST, etc.)
- Enter your API endpoint URL
- Add headers, parameters, or body as needed
- Click Send and view the response instantly
- Click "New Collection" in the sidebar
- Add name and description
- Save your requests for future use
- Share with your team via export
- Go to Settings → Environments in the sidebar
- Create a new environment (Dev, Staging, Production)
- Add key-value pairs for your variables
- Reference them using
{{variable_name}}syntax
- Click the Import button in the Collections view
- Select a Postman collection JSON file
- Your collection will be imported with all requests, folders, and settings
- Go to the Authorization tab in the request builder
- Select authentication type (Bearer, Basic, OAuth, etc.)
- Enter credentials
- Authentication headers will be automatically added to your request
We welcome contributions from the community! Whether it's bug fixes, new features, documentation improvements, or translations, your help makes Ababil better for everyone.
-
Fork the repository
gh repo fork AbabilX/ababil
-
Create a feature branch
git checkout -b feature/amazing-feature
-
Make your changes and commit
git commit -m 'Add some amazing feature' -
Push to your branch
git push origin feature/amazing-feature
-
Open a Pull Request
- Follow existing code style and conventions
- Write clear, descriptive commit messages
- Add tests for new features when applicable
- Update documentation as needed
- Ensure all tests pass before submitting PR
- Make changes to Rust code in
ababil_core/src/ - Rebuild:
cd ababil_core && cargo build --release - Copy the library again (if on macOS):
./build.sh - Hot reload in Flutter (or restart if needed)
Found a bug or have an idea for a new feature? We'd love to hear from you!
- Bug Report: Open an issue
- Feature Request: Open an issue
- Security Issue: Please email maintainers directly
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Postman's excellent API testing experience
- Built with amazing open-source technologies
- Special thanks to all contributors and supporters
- GitHub: AbabilX/ababil
- Releases: Download latest version
- Issues: Report bugs or request features
- Discussions: Join the conversation
- Request history with search and filtering
- GraphQL query builder
- WebSocket testing
- gRPC support
- API mocking capabilities
- Automated testing workflows
- Team collaboration features
- Cloud sync (optional)
- Plugin system
- CLI version
- Code snippet generation
- Request/response validation
- Performance testing tools
Made with ❤️ by the Ababil Team
⭐ Star us on GitHub • 📦 Download • 🐛 Report a bug • 💬 Join discussions