CLI Mode

A command-line interface for scripting, automation, and quick exploration without opening the browser UI. Commands follow the shape bowire <verb> --url <server> [args].

Commands

List Services

bowire list --url https://server:443
bowire list --url https://server:443 -v   # verbose: show methods

Lists all discovered services. With -v, shows each method with its call type.

Describe a Service or Method

bowire describe --url https://server:443 weather.WeatherService
bowire describe --url https://server:443 weather.WeatherService/GetCurrentWeather

Shows method signatures and input/output schemas. For gRPC, this includes protobuf field numbers and types.

Invoke a Method

# Unary call
bowire call --url https://server:443 \
  weather.WeatherService/GetCurrentWeather -d '{"city":"Berlin"}'

# Server streaming (prints each message as it arrives)
bowire call --url https://server:443 \
  weather.WeatherService/SubscribeWeather -d '{"city":"Tokyo"}'

# Compact JSON output (one line per message, pipe-friendly)
bowire call --url https://server:443 \
  weather.WeatherService/SubscribeWeather -d '{"city":"Tokyo"}' --compact

# Read request body from file
bowire call --url https://server:443 \
  weather.WeatherService/GetCurrentWeather -d @request.json

# With metadata headers
bowire call --url https://server:443 \
  weather.WeatherService/GetCurrentWeather -d '{}' -H "authorization: Bearer token123"

# Plaintext (no TLS)
bowire call --url http://server:5000 -plaintext \
  weather.WeatherService/GetCurrentWeather -d '{}'

Options

Option Description
--url <url> Target server URL (required)
-d, --data <json> Request body (JSON string or @filename)
-H <key:value> Add metadata header (repeatable)
--compact One-line JSON output for piping
-plaintext Use plaintext (no TLS)
-v, --verbose Verbose output (for list)

Exit Codes

Code Meaning
0 OK -- call succeeded
1 Connection or runtime error
2 gRPC error or invalid usage

CI/CD Usage

CLI mode is designed for automated pipelines:

# Health check in CI
bowire call --url https://staging:443 \
  health.HealthService/Check -d '{}' --compact \
  || exit 1

The --compact flag produces one-line JSON output suitable for piping to jq or other tools.

See also: Setup -- Standalone