OneOpen Postkid
Local-first Postman-style API client — a pure-Python desktop app with a red & white UI.
Collections, environments, cookies, flows, and history stay on your machine. No cloud account, no sync tax.
Install
Requires Python 3.10+.
pip install oneopen-postkid
Then launch:
postkid
Aliases that do the same thing:
oneopen-postkid
python -m oneopen_postkid
First launch may download a Flet desktop runtime. On Linux you may need system packages for the window toolkit — see Flet docs.
From source
git clone https://github.com/1-OpenSource/OneOpen-Postkid.git
cd OneOpen-Postkid
pip install -e .
postkid
Features
Requests & protocols
- HTTP request builder (method, URL, params, headers, body, auth)
- Protocols: HTTP, GraphQL, WebSocket, MQTT, SOAP/XML
- Body types: none, form-data, urlencoded, raw, JSON, GraphQL, SOAP, binary
- Path variables (
:id/{id}) separate from query params - Auto-name requests from the URL (Postman-style)
- Auto-format / beautify / minify JSON & XML
Auth
- Bearer, Basic, API Key
- OAuth 2.0 (client credentials + access token)
- Digest, Hawk, AWS Signature V4
Collections & environments
- Local collections with folders, duplicate / rename / move
- Environments, globals, and collection variables with
{{var}}interpolation - Environment quick-look and active-env switcher
- Import: Postman Collection v2.1, OpenAPI/Swagger, native JSON, cURL paste
- Export: native JSON or Postman Collection v2.1
- Collection Runner (iterations + delay)
- Flows — sequential multi-request runners
Scripts & tooling
- Pre-request & test scripts in Python (
pm.*API) - Console + embedded terminal (toggle from the footer)
- Code snippets (cURL and more)
- Find & replace across collections
- Cookies jar (view / edit / clear; auto-absorb
Set-Cookie) - History with search / filter / clear
- Request Docs and saved response examples
UX
- Postman-inspired dense chrome, red brand (
#E11D48) - Dark theme toggle
- Keyboard shortcuts:
Ctrl+Entersend,Ctrl+Ssave,Ctrl+Nnew tab,Ctrl+Ffind - Settings: timeout, redirects, SSL verify, proxy, HTTP/2, client certificates
- Custom window chrome with taskbar icon
Quick start
- Install and run
postkid. - Open the Getting Started collection (created on first launch).
- Pick the Local environment (
base_urlpoints at JSONPlaceholder). - Hit Send.
Try a GraphQL or SOAP request by switching the protocol / body type on the request bar.
Data location
Everything is plain JSON under ~/.oneopen_postkid (or %USERPROFILE%\.oneopen_postkid on Windows):
| File | Purpose |
|---|---|
collections.json |
Collections, folders, requests |
environments.json |
Environments & variables |
globals.json |
Global variables |
cookies.json |
Cookie jar |
flows.json |
Saved flows |
history.json |
Recent sends (capped) |
settings.json |
Timeouts, proxy, theme, etc. |
Override the data directory:
# Windows (PowerShell)
$env:ONEOPEN_POSTKID_HOME = "D:\postkid-data"
postkid
# macOS / Linux
export ONEOPEN_POSTKID_HOME=/path/to/data
postkid
Keyboard shortcuts
| Shortcut | Action |
|---|---|
Ctrl+Enter |
Send request |
Ctrl+S |
Save request |
Ctrl+N |
New tab |
Ctrl+F |
Find & replace |
Stack
| Piece | Role |
|---|---|
| Flet | Desktop UI (Python → native window) |
| httpx | HTTP / HTTP/2 client |
| websockets | WebSocket round-trips |
| paho-mqtt | MQTT publish / subscribe |
Development
# Editable install + packaging tools
pip install -e ".[dev]"
# Smoke import
python -c "from oneopen_postkid import __version__; print(__version__)"
# Build sdist + wheel
python -m build
# Check metadata before upload (needs recent twine for Metadata 2.5)
python -m twine check dist/*
# Publish (maintainers) — create a PyPI API token first
python -m twine upload --repository testpypi dist/*
python -m twine upload dist/*
License
MIT © OneOpen / 1-OpenSource
Metadata
Release files for oneopen-postkid 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| oneopen_postkid-0.1.0.tar.gz | 1.1 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oneopen_postkid-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.2 MB
Release files / oneopen_postkid-0.1.0.tar.gz
| Download URL | oneopen_postkid-0.1.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
01eead883519510df17166b702d6ce60b9316188cbe226d701e8cb4578483e71
|
|
BLAKE2b-256 checksum How to use checksums |
278c7df74d6b53a1cbfd1a67de64a766c8349eaf6f1e246b264fd6e998f6e31b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / oneopen_postkid-0.1.0-py3-none-any.whl
| Download URL | oneopen_postkid-0.1.0-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f12a7ec166e6ef447be3dff554f46a2f52e0d16695d8f6388a6b46d2a2478c03
|
|
BLAKE2b-256 checksum How to use checksums |
3ebd5a3b1e52970eba7aede1353e32067a00ba5116aae71069e8f3752f47d656
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Security for oneopen-postkid 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.