mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-09-06 18:07:18 +02:00
77fe1367a0e37af84746bbfdb514ed2066306b77
One table versions HTTP, gRPC and WebSocket requests alike. A version stores the model's editable content — the serialized model minus model/id/timestamps/ workspace/folder/sortPriority — and is addressed by the sha256 of that document, with (model_id, content_hash) unique. Content addressing is what makes the trigger side simple: snapshot_request can be called by a send, a window blur and an idle timer on the same unedited request and leave one row behind, so no caller has to reason about whether anything changed. Dropping bookkeeping keys is what makes it stable — moving a request between folders or re-sorting it rewrites those fields and nothing else, and neither should mint a version or show up in a diff. The same rule covers all three request types because they differ only in content fields. Responses and gRPC/WebSocket connections gain a nullable version_id. Versions are local history, so ModelVersion is deliberately absent from AnyModel: no model-change rows, no frontend store bucket, no sync, no export. Retention keeps anything a response points at, plus the newest 50 per request within 30 days; request and workspace deletes cascade.
💫 Yaak ➟ Desktop API Client 💫
A fast, privacy-first API client for REST, GraphQL, SSE, WebSocket, and gRPC – built with Tauri, Rust, and React.
Development is funded by community-purchased licenses. You can also become a sponsor to have your logo appear below. 💖
Features
Yaak is an offline-first API client designed to stay out of your way while giving you everything you need when you need it. Built with Tauri, Rust, and React, it’s fast, lightweight, and private. No telemetry, no VC funding, and no cloud lock-in.
🌐 Work with any API
- Import collections from Postman, Insomnia, OpenAPI, Swagger, or Curl.
- Send requests via REST, GraphQL, gRPC, WebSocket, or Server-Sent Events.
- Filter and inspect responses with JSONPath or XPath.
🔐 Stay secure
- Use OAuth 2.0, JWT, Basic Auth, or custom plugins for authentication.
- Secure sensitive values with encrypted secrets.
- Store secrets in your OS keychain.
☁️ Organize & collaborate
- Group requests into workspaces and nested folders.
- Use environment variables to switch between dev, staging, and prod.
- Mirror workspaces to your filesystem for versioning in Git or syncing with Dropbox.
🧩 Extend & customize
- Insert dynamic values like UUIDs or timestamps with template tags.
- Pick from built-in themes or build your own.
- Create plugins to extend authentication, template tags, or the UI.
Contribution Policy
Important
Community PRs are currently limited to bug fixes. If your PR is not a bug fix, link the feedback item where @gschier explicitly gave you permission to work on it. See
CONTRIBUTING.mdfor policy details andDEVELOPMENT.mdfor local setup.






















