Forge
1.x
Docs/Forge/Configuration
Open

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

YAML Configuration Example01

extensions:
  consensus:
    nodeID: "node-1"                 # required, must be unique
    clusterID: "default"
    bindAddr: "0.0.0.0"
    bindPort: 7000

    raft:
      heartbeatInterval: "1s"
      electionTimeoutMin: "5s"
      electionTimeoutMax: "10s"
      snapshotInterval: "30m"
      snapshotThreshold: 10000

    transport:
      type: "grpc"

    discovery:
      type: "static"                 # "static" or "dynamic"
      peers:
        - "node-2:7000"
        - "node-3:7000"

    storage:
      type: "badger"
      path: "./data/consensus"

    election:
      enabled: true

    health:
      enabled: true

    adminAPI:
      enabled: true
      pathPrefix: "/consensus"

    events:
      enabled: true

Programmatic Configuration02

ext := consensus.NewExtension(
    consensus.WithNodeID("node-1"),
    consensus.WithClusterID("my-cluster"),
    consensus.WithBindAddr("0.0.0.0", 7000),
    consensus.WithPeers("node-2:7000", "node-3:7000"),
    consensus.WithSnapshotInterval(15*time.Minute),
)

Config Struct Reference03

Core

FieldTypeDefaultDescription
NodeIDstring"" (required)Unique node identifier
ClusterIDstring"default"Cluster identifier
BindAddrstring"0.0.0.0"Raft bind address
BindPortint7000Raft bind port

Raft

FieldTypeDefaultDescription
HeartbeatIntervaltime.Duration1sLeader heartbeat interval
ElectionTimeoutMintime.Duration5sMinimum election timeout
ElectionTimeoutMaxtime.Duration10sMaximum election timeout
SnapshotIntervaltime.Duration30mSnapshot creation interval
SnapshotThresholdint10000Log entries before snapshot

Transport

FieldTypeDefaultDescription
Typestring"grpc"Transport protocol

Discovery

FieldTypeDefaultDescription
Typestring"static""static" or "dynamic"
Peers[]string[]Peer addresses (static mode)

Storage

FieldTypeDefaultDescription
Typestring"badger"Storage backend
Pathstring"./data/consensus"Data directory

Feature Flags

FieldTypeDefaultDescription
Election.EnabledbooltrueEnable leader election
Health.EnabledbooltrueEnable health checks
AdminAPI.EnabledbooltrueEnable admin API
AdminAPI.PathPrefixstring"/consensus"Admin API path prefix
Events.EnabledbooltrueEmit events via events extension