A fast, lightweight Postman alternative built with Tauri, Rust, and React.
- HTTP Requests: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS
- Collections: Save and organize API requests in YAML format
- Import: Import existing Postman collections (JSON)
- Environment Variables: Support for dev/staging/prod environments with
{{variable}}syntax - Request History: Auto-tracked history with one-click reload (persisted to
~/.pulse/) - Dark Theme: Modern, eye-friendly dark interface
- User Settings: Configurable name, email, and request preferences
- Create teams and manage members
- Send team invitations via email (Resend/SendGrid)
- Role-based access (Owner, Admin, Member)
- Accept/Decline invitation workflow
- Invitations stored in
~/.pulse/invitations.json
Coming soon
| Layer | Technology |
|---|---|
| Frontend | React 18 + TypeScript |
| Desktop Shell | Tauri 2 |
| Backend | Rust |
| Build Tool | Vite |
| Data Format | YAML, JSON |
- Node.js 18+
- Rust 1.70+
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/pulse.git
cd pulse
# Install frontend dependencies
npm install
# Run in development mode
npm run tauri devnpm run tauri buildThe executable will be generated in src-tauri/target/release/.
pulse/
├── src/ # React frontend
│ ├── App.tsx # Main application
│ ├── components/ # React components
│ ├── hooks/ # Custom hooks
│ └── types/ # TypeScript types
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── lib.rs # Tauri commands
│ │ ├── http/ # HTTP client
│ │ └── collections/ # Collections, teams, email
│ ├── Cargo.toml # Rust dependencies
│ └── tauri.conf.json # Tauri configuration
├── package.json
├── README.md
└── .env.example # Environment template
All data is stored in ~/.pulse/:
~/.pulse/
├── settings.json # User settings
├── environments.yaml # Environment variables
├── history.json # Request history
├── teams.yaml # Team data
└── invitations.json # Invitations
- Select HTTP method (GET, POST, etc.)
- Enter URL
- Add headers if needed
- Add body for POST/PUT/PATCH
- Click Send
- Click "+ New Collection"
- Enter collection name
- Click Save on any request to add it
- Import Postman collections with "Import Postman Collection"
- Go to Env tab
- Select or create environment
- Add variables:
base_url,api_key, etc. - Use
{{variable_name}}in URLs, headers, or body - Variables auto-replace before sending
- Settings persist automatically
- Go to Teams tab
- Create a team
- Click "+ Invite" to invite members
- Invitations include email with accept/decline links
- Click ⚙️ tab in sidebar
- Configure your name and email
- Set default timeout and SSL preferences
- Settings save automatically
Emails are printed to console for testing. No setup required.
- Get API key from Resend
- Copy
.env.exampleto.env - Set values:
EMAIL_PROVIDER=resend EMAIL_API_KEY=re_xxxxxx EMAIL_FROM=your@email.com
- Get API key from SendGrid
- Copy
.env.exampleto.env - Set values:
EMAIL_PROVIDER=sendgrid EMAIL_API_KEY=SG.xxxxxx EMAIL_FROM=your@email.com
| Command | Description |
|---|---|
send_http_request |
Send HTTP request |
load_collection |
Load YAML collection |
save_collection |
Save collection to YAML |
import_postman_collection |
Import Postman JSON |
load_environments |
Load environments |
save_environments |
Save environments |
load_history |
Load request history |
save_history |
Save request history |
get_user_settings |
Get user settings |
save_user_settings |
Save user settings |
create_team |
Create a new team |
get_teams |
Get all teams |
invite_to_team |
Send team invitation |
get_pending_invitations |
Get pending invites |
accept_invitation |
Accept invitation |
decline_invitation |
Decline invitation |
# API tests
node test-apis.js# TypeScript linting
npm run lint
# Format code
npm run format- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Tauri - Build smaller, faster desktop apps
- reqwest - Rust HTTP client
- React - JavaScript library for UI
- JSONPlaceholder - Free fake API for testing
- Resend - Email API for developers
- GraphQL support
- WebSocket testing
- Request chaining/dependencies
- Cloud sync for collections
- Custom app icons
- Plugin system