Skip to main content
httpmon automatically detects gRPC, gRPC-Web, and Protobuf content types and decodes binary bodies into readable JSON.
httpmon gRPC-Web decoded body

Supported content types

httpmon decodes bodies with these content types:

Named decoding with proto files

Use --proto-path to point httpmon at your .proto files. Field names appear in the decoded JSON instead of field numbers.
The flag accepts files or directories (recursively scans for *.proto). You can repeat it multiple times. Cross-file imports are resolved automatically. With proto files, a SayHello response decodes as:

Raw wire decoding

Without --proto-path, httpmon still decodes Protobuf bodies using raw wire format. Field numbers appear as JSON keys instead of names:
This works with any Protobuf payload — no proto files needed.

gRPC-Web framing

gRPC-Web responses use 5-byte length-prefixed frames. httpmon strips these automatically before decoding the Protobuf payload. Compressed frames are noted but not decoded. Trailer frames are silently skipped.

Import search paths

Use --proto-include to add import search directories, similar to protoc’s -I flag. This is needed when your .proto files import definitions from other directories.

Persisting proto paths

Save proto paths in ~/.httpmon/config.json so you don’t need --proto-path on every run:
CLI --proto-path and --proto-include flags are appended to any paths already in the config file.

Per-host proto registries

If different services use different .proto definitions, configure per-host registries in ~/.httpmon/config.json:
Host patterns support * wildcards. Per-host registries take precedence over the global proto_paths for matching hosts. Requests to hosts that don’t match any pattern fall back to the global registry.

Keyboard shortcuts