Forge
1.x
Docs/Forge/Configuration
Open

Reading2 min
Updated31 Jul 2026
Sourcev1/extensions/grpc/configuration.mdx

YAML Configuration Example01

extensions:
  grpc:
    address: ":50051"
    maxRecvMsgSize: 4194304          # 4 MB
    maxSendMsgSize: 4194304          # 4 MB
    maxConcurrentStreams: 0           # 0 = unlimited
    connectionTimeout: "120s"

    keepalive:
      time: "2h"
      timeout: "20s"
      enforcementPolicy: true
      minTime: "5m"
      permitWithoutStream: false

    # TLS
    enableTLS: false
    tlsCertFile: "/path/to/server.crt"
    tlsKeyFile: "/path/to/server.key"
    tlsCAFile: "/path/to/ca.crt"
    clientAuth: false                 # set true for mTLS

    # Features
    enableHealthCheck: true
    enableReflection: true

    # Observability
    enableMetrics: true
    enableTracing: true
    enableLogging: true

The extension loads config from extensions.grpc first, falling back to grpc.

Programmatic Configuration02

ext := grpc.NewExtension(
    grpc.WithAddress(":9090"),
    grpc.WithTLS("server.crt", "server.key", "ca.crt"),
    grpc.WithClientAuth(true),
    grpc.WithMaxMessageSize(10 * 1024 * 1024), // 10 MB
    grpc.WithMaxConcurrentStreams(100),
)

Config Struct Reference03

Config

FieldTypeDefaultDescription
Addressstring":50051"TCP listen address
MaxRecvMsgSizeint4194304 (4 MB)Maximum receive message size
MaxSendMsgSizeint4194304 (4 MB)Maximum send message size
MaxConcurrentStreamsuint320Max concurrent streams (0 = unlimited)
ConnectionTimeouttime.Duration120sConnection timeout
KeepaliveKeepaliveConfigSee belowKeepalive settings
EnableTLSboolfalseEnable TLS
TLSCertFilestring""TLS certificate file
TLSKeyFilestring""TLS private key file
TLSCAFilestring""CA file for client auth
ClientAuthboolfalseRequire client certificates
EnableHealthCheckbooltrueEnable gRPC health service
EnableReflectionbooltrueEnable server reflection
EnableMetricsbooltrueEnable metrics interceptor
EnableTracingbooltrueEnable tracing interceptor
EnableLoggingbooltrueEnable logging interceptor

KeepaliveConfig

FieldTypeDefaultDescription
Timetime.Duration2hPing interval for idle connections
Timeouttime.Duration20sTimeout waiting for ping ack
EnforcementPolicybooltrueEnforce minimum ping interval
MinTimetime.Duration5mMinimum allowed ping interval from clients
PermitWithoutStreamboolfalseAllow keepalive pings without active streams

Option Helpers04

FunctionDescription
WithAddress(addr)Set the listen address
WithMaxMessageSize(size)Set max recv and send message size
WithMaxConcurrentStreams(max)Set max concurrent streams
WithTLS(certFile, keyFile, caFile)Enable TLS
WithClientAuth(enable)Toggle mTLS client authentication
WithHealthCheck(enable)Toggle health check service
WithReflection(enable)Toggle server reflection
WithMetrics(enable)Toggle metrics
WithTracing(enable)Toggle tracing
WithRequireConfig(require)Require config from ConfigManager
WithConfig(config)Provide a complete config struct