فهرست
اپلیکیشن دسکتاپ

Pigeon

ابزار محلی برای کار با API و جریان پیام‌ها: HTTP، GraphQL، gRPC، WebSocket، MQTT، RabbitMQ و Kafka در یک اپلیکیشن.

متن کامل مقاله فعلاً به انگلیسی موجود است.

Pigeon is our desktop app for developers. The idea sits between Postman and Wireshark: it takes convenient request work from the first and attention to what really passes through the network and message streams from the second.

A modern service rarely stops at HTTP. gRPC, queues and brokers run next to it, each with its own tool. We wanted them all in one window, without sending working requests to someone else's cloud.

Supported protocols

GroupProtocols
Request and responseHTTP, GraphQL, gRPC, JSON-RPC
Live connectionsWebSocket
Message brokersMQTT, RabbitMQ, Kafka

For streaming protocols the app shows messages live and bounds the list, so a long connection does not eat memory.

How it works

Pigeon is built with Electron, React and TypeScript. Networking runs in the main process, the interface talks to it over IPC, and each protocol lives in its own adapter. The shared request model looks like this:

export type ProtocolType =
  'http' | 'graphql' | 'websocket' | 'grpc' | 'jsonrpc' | 'mqtt' | 'rabbitmq' | 'kafka'

export interface BaseRequest {
  network?: NetworkOptions
  id: string
  name: string
  protocol: ProtocolType
  createdAt: number
  updatedAt: number
}

Network settings are shared across protocols: timeout, TLS verification, redirects, proxy and custom certificates.

export interface NetworkOptions {
  timeout?: number
  verifySsl?: boolean
  followRedirects?: boolean
  proxyUrl?: string
  caPaths?: string[]
}

Your data stays with you

Requests and collections stay on your computer. Data is encrypted through the system keyring, and the file is created with 0600 permissions:

writeFileSync(`${file}.tmp`, safeStorage.encryptString(value), { mode: 0o600 })

If secure encryption is unavailable, the app works in memory only and tells you so.

History deliberately keeps no content, because request and response bodies can hold secrets. Authorization headers, cookies, passwords and tokens are hidden:

const sensitiveKey = /authorization|cookie|password|secret|token|api[-_]?key/i
const HIDDEN = '[redacted]'

Usernames, passwords and sensitive parameters are removed from URLs. To keep a full request, use collections.

Limits

Responses are limited to 10 MB. HTTP, GraphQL, TLS and proxy behaviour have regression tests, while real MQTT, RabbitMQ and Kafka deployments still need testing.

What's next

Pigeon is in active development and has not been publicly released yet. Download and source code links will appear here when the first version is ready.