Feature status
Postguy tracks every feature in parity/postman-features.toml. That file is the source of truth for this page. Each entry has an area, a tier, a status and notes.
cargo xtask parityvalidates the file. Ashippedentry must cite evidence. Aplannedentry must not.- Run
cargo xtask parity --partialto list the partial ones.
The statuses mean:
| Status | Meaning |
|---|---|
shipped | Usable today and backed by evidence (a test or code path) in the file. |
partial | Part of it works. The notes in the file say what is missing. |
planned | Not started. |
na | Out of scope by design (cloud features; Postguy is offline and local). |
Totals
cargo xtask parity reports: 116 features, 56 shipped, 46 partial, 13 planned, 1 na.
| Area | Name | Shipped | Partial | Planned | NA | Total |
|---|---|---|---|---|---|---|
| A | Collections | 8 | 3 | 2 | 0 | 13 |
| B | Environments and variables | 6 | 2 | 1 | 0 | 9 |
| C | HTTP | 9 | 13 | 2 | 0 | 24 |
| D | gRPC | 4 | 5 | 2 | 0 | 11 |
| E | WebSocket | 1 | 5 | 1 | 0 | 7 |
| F | Automation | 9 | 4 | 1 | 0 | 14 |
| G | Imports and exports | 11 | 2 | 0 | 0 | 13 |
| H | UI shell | 6 | 10 | 0 | 0 | 16 |
| I | Platform and packaging | 2 | 2 | 4 | 1 | 9 |
| Total | 56 | 46 | 13 | 1 | 116 |
The one na entry (na.cloud) is in area I. It covers cloud workspaces, sync, sharing, AI assistants, monitors, mock servers, flows and the API network.
cargo xtask parity in your checkout for the current count.Planned
These are not started:
| Area | Feature |
|---|---|
| A | Favourites and A-Z sort (a.favourites-sort) |
| A | Default ("pinned") environment per collection (a.pinned-environment) |
| B | Right-click "Set as variable" on selected text (b.set-as-variable) |
| C | Examples (saved responses) under a request (c.examples) |
| C | JSONPath / XPath response filter (c.response-filter) |
| D | grpcurl code snippet (d.grpcurl-snippet) |
| D | Generate a collection from a gRPC service (d.generate-collection) |
| E | Saved WebSocket messages (e.saved-messages) |
| F | MCP server, postguy-cli mcp (f.mcp) |
| I | OS services: platform directories, dialogs, reveal in file manager, clipboard, system proxy discovery (i.platform-services) |
| I | Size, speed and idle budgets enforced in CI (i.budgets) |
| I | Accessibility pass (i.a11y) |
| I | Packaging (i.packaging) |
postguy-cli mcp is not a subcommand today: the CLI prints its usage and exits with code 2. The planned server would use stdio, be opt-in, and expose the same tool table as postguy-cli tools. Until it ships, drive Postguy with postguy-cli tools --json, call and run --script.Partial, by area
These are the gaps listed in the notes of the file. Everything not named here is described as working.
Collections
- Drag and drop works inside the tree. Dropping files from the OS onto the app to open the import dialog is missing.
- Context menus lack Add to favourites, Sort A-Z, Collapse all and Reveal in file manager. A few actions are also missing (Run, Export/Import, Copy as cURL).
- Folder variables, auth and scripts work. Folder variables resolve in the request scope chain. Folder scripts run between the collection and request scripts.
Environments and variables
- The variables quick-look popover cannot edit a value in place or add a variable.
{{var}}chips and autocomplete work. The hover popover has no edit or add-to-scope actions, the list has no scope badges, and it does not list dynamic variables.
HTTP
| Topic | Missing |
|---|---|
| Request line | An inline undo hint after pasting a cURL command, and a visible resolved-URL preview. |
| Params tab | The cursor-preserving two-way edit between the URL field and the table. |
| Headers tab | Custom named header presets with a management dialog. |
| Auth | The OAuth 2.0 implicit grant and a Manage-tokens screen. NTLM, EdgeGrid and ASAP are stored but not applied. |
| Cookies manager | Adding and editing cookies, and the template list. |
| Proxy | OS system-proxy discovery (environment variables only) and a per-request "off" switch. |
| TLS | PFX client certificates, encrypted private keys, per-host certificate entries, passphrase storage. |
| Response viewer | Image previews, search navigation, regex and whole-word search, clickable URLs, a file-picker save dialog. |
| Large bodies | The line index is computed on the UI thread; Pretty is disabled above 5 MB. |
| Response tabs | A Timeline tab and hover details on header rows. |
| Timings | Separate DNS, TCP and TLS rows (they appear combined as Connect) and per-redirect timings. |
| Save Response | The example picker and a 5 MB example size check. |
| History and trash | Day grouping in the History list. |
gRPC
| Topic | Missing |
|---|---|
| Definitions | Working today: .proto sets, a picked .proto file, reflection that lists every service, and a method picker grouped by service. |
| Message editor | Unknown keys are flagged; proto-aware completion and saved messages are open. |
| Streaming | Streaming works with a finite list of messages and collects up to 10,000 replies, and a running call can be cancelled. Interactive Send/End streaming and a timeline are open. |
| Status | Status code and message are shown; trailers and grpc-status-details-bin decoding are open. |
| TLS | A server-name override. |
WebSocket
- Handshake redirects, proxies and the managed-header warning are missing.
- The UI composer sends text only; binary and format-specific composers exist in the automation tools (
ws_sendwithbinary_base64). - The timeline has no search, filters, clear/restore or time-diff.
- There is no hexdump view for binary messages.
- The reconnect policy setting is stored but not acted on. Verify, handshake timeout and max message size are applied.
Automation
- Scripts: gRPC requests run request-level scripts only (no collection or folder scripts); WebSocket requests do not run scripts.
pm.cookies.jar()andpm.visualizerare missing.bru.sleep,bru.cwdandbru.runRequestare refused with an error (see the scripting API). - Test Results: Refresh does not re-run post-response scripts.
- Script editors have no autocomplete or line numbers.
- The UI control channel works for
inspect,command,setandscreenshot.click,keyandtypeare refused. See UI control channel.
Imports and exports
- The all-data zip exports workspace documents. Importing it back restores
.jsondocuments only (not files, protos or settings). There is no Settings entry point for it yet. - Save Response and Send and Download write
<workspace>/files/response-<tab>.bin, with no file picker or suggested file name. When the response was compressed, they write the decoded bytes, not the raw wire bytes.
UI shell
- Window: remembered window geometry is missing.
- The sidebar section open state, the splitter position and the two-pane toggle are not restored after a restart.
- Crash recovery restores tabs after an unclean exit. Draft text is in the tab model, but no editor writes it yet.
- Console: rows are not virtualised, and the 1 MB per-body truncation check in the viewer is missing.
- Menus: on Windows and Linux the app uses an in-app menu row (the native menu bar is macOS only). Placing windows on other monitors works on macOS only.
- The shortcut registry has no conflict check.
Platform
- Session restore does not restore window geometry, expanded tree nodes, the recent workspaces list or the certificate list.
- Documentation and releases: the Docus site, the release workflow and the licence list exist. A security review and a final gaps list for v1.0 are missing.
Known limitations
These are the open items from Known gaps, in user terms.
| What you may notice | Detail |
|---|---|
| Keyboard and mouse automation of the UI | postguy-cli ui click, key and type are refused: the UI toolkit has no supported way to inject raw events into the running app. Use ui command and ui set instead. |
| Importing from a URL | The import box refuses URLs and tells you to download the file; Postguy never fetches anything without a deliberate action. An explicit Fetch button is planned. |
| Restoring a zip backup | Restore brings back JSON documents (collections, environments, globals) only. |
| Saving a response body | The file goes to <workspace>/files/ under an automatic name; there is no save dialog. |
| Idle memory | The release build measured about 100.7 MiB of resident memory on an empty workspace, above the 90 MiB budget. |
| Pretty view of large bodies | Pretty is disabled above 5 MB; a 10 MB Pretty view is a goal. |
| Console with many rows | The Console panel lays out every filtered row; virtualised scrolling is not implemented. |
| Header names on the wire | The HTTP stack writes header names in lowercase; the case you type is not preserved. |
| gRPC and WebSocket | See the lists above. gRPC runs request-level scripts and tests; the runner applies to HTTP requests only. |
| Build and quality gates | Startup with 10 restored tabs is not measured, some budget metrics are not benchmarked yet, security advisories are checked by cargo-deny in CI, and fuzz targets for the Postman importer and the cookie parser are missing. |
Other leftovers listed in the gaps page: cookie add/edit, the Save Response example picker, splitter persistence, the shortcut-conflict check and History day grouping.