CLI Reference
Complete reference for all Surgewave CLI commands.
Topics
List Topics
surgewave topics list
surgewave topics list -f json
Create Topic
surgewave topics create my-topic
surgewave topics create my-topic --partitions 3 --replication-factor 2
surgewave topics create my-topic -p 6 -r 3
Describe Topic
surgewave topics describe my-topic
surgewave topics describe my-topic -f json
Delete Topic
surgewave topics delete my-topic
Alter Config
surgewave topics alter-config my-topic --set retention.ms=86400000
surgewave topics alter-config my-topic --delete cleanup.policy
Describe Config
surgewave topics describe-config my-topic
Produce Messages
Single Message
surgewave produce my-topic --value "Hello, World!"
surgewave produce my-topic -k "key1" -m "value1"
surgewave produce my-topic --key user-123 --value '{"action": "login"}'
echo "message1" | surgewave produce my-topic
cat messages.txt | surgewave produce my-topic
echo "key1:value1" | surgewave produce my-topic --parse-key
Interactive Mode
surgewave produce my-topic --interactive
# Type messages, Ctrl+D to exit
Options
| Option |
Short |
Description |
--key |
-k |
Message key |
--value |
-m |
Message value |
--partition |
-p |
Target partition |
--interactive |
-i |
Interactive mode |
--separator |
-s |
Key-value separator |
--parse-key |
|
Parse key from input |
Consume Messages
Basic
surgewave consume my-topic
surgewave consume my-topic --offset earliest
surgewave consume my-topic -o latest -n 100
Options
| Option |
Short |
Description |
--offset |
-o |
Start offset: earliest, latest, number |
--partition |
-p |
Partition to consume |
--max-messages |
-n |
Max messages (-1 unlimited) |
--keys |
-k |
Show message keys |
--timestamps |
-t |
Show timestamps |
--print-offset |
|
Print offset |
Examples
# From beginning, limit 10
surgewave consume events --offset earliest --max-messages 10
# With timestamps, JSON output
surgewave consume logs -t -f json
# Pipe to jq
surgewave consume events -f plain | jq -r '.data'
Consumer Groups
List Groups
surgewave groups list
surgewave groups list -f json
Describe Group
surgewave groups describe my-consumer-group
Delete Group
surgewave groups delete my-consumer-group
Broker Operations
Broker Info
surgewave broker info
surgewave broker info -f json
Health Check
surgewave health
surgewave health -f json
Diagnose
surgewave diagnose
Broker Config
surgewave broker config describe
surgewave broker config describe --all
surgewave broker config alter --set log.retention.hours=72
ACL Management
List ACLs
surgewave acls list
surgewave acls list --principal User:alice
surgewave acls list --resource-type topic --resource my-topic
Add ACL
surgewave acls add \
--principal User:alice \
--resource-type topic \
--resource my-topic \
--operation read \
--permission allow
surgewave acls add \
--principal User:producer \
--resource-type topic \
--resource "*" \
--operation write
Remove ACL
surgewave acls remove --principal User:alice --resource-type topic --resource my-topic
Options
| Option |
Description |
--principal |
Principal (e.g., User:alice) |
--resource-type |
topic, group, cluster, transactional-id |
--resource |
Resource name (* for all) |
--operation |
read, write, create, delete, alter, describe, all |
--permission |
allow, deny |
--host |
Client host (* for all) |
--pattern-type |
literal, prefixed |
Schema Registry
List Subjects
surgewave schema list
surgewave schema list --include-deleted
Register Schema
surgewave schema register user-value --schema '{"type":"record","name":"User","fields":[{"name":"id","type":"int"}]}'
surgewave schema register user-value --file user.avsc --type AVRO
surgewave schema register events-value --file events.proto --type PROTOBUF
Describe Subject
surgewave schema describe user-value
Get Schema
surgewave schema get --id 1
surgewave schema get --subject user-value --version latest
Compatibility
surgewave schema compatibility check user-value --file new-user.avsc
surgewave schema compatibility get --subject user-value
surgewave schema compatibility set BACKWARD --subject user-value
Delete
surgewave schema delete-subject user-value
surgewave schema delete-version user-value 1
Kafka Connect
List Connectors
surgewave connect list
Create Connector
surgewave connect create file-source --config '{"connector.class":"FileStreamSourceConnector","file":"/var/log/app.log","topic":"logs"}'
surgewave connect create db-source --file connector-config.json
Connector Operations
surgewave connect describe my-connector
surgewave connect status my-connector
surgewave connect pause my-connector
surgewave connect resume my-connector
surgewave connect restart my-connector
surgewave connect delete my-connector
Tasks
surgewave connect tasks list my-connector
surgewave connect tasks restart my-connector 0
Plugins
surgewave connect plugins
Cluster Operations
Status
surgewave cluster status
surgewave cluster nodes
Partition Operations
surgewave partitions elect-leader --topic my-topic
surgewave partitions elect-leader --all
surgewave partitions elect-leader --topic my-topic --partitions 0,1,2
Cross-Cluster Replication (Mirror)
MirrorMaker 2.0 compatible cross-cluster replication.
Create Replication Flow
surgewave mirror create \
--name dc1-to-dc2 \
--source-alias dc1 \
--source-servers kafka-dc1:9092 \
--target-alias dc2 \
--target-servers kafka-dc2:9092
# With topic filtering
surgewave mirror create \
--name dc1-to-dc2 \
--source-alias dc1 \
--source-servers kafka-dc1:9092 \
--target-alias dc2 \
--target-servers kafka-dc2:9092 \
--topics "orders.*" \
--tasks 8
Options
| Option |
Description |
--name |
Name for the replication flow |
--source-alias |
Alias for source cluster |
--source-servers |
Bootstrap servers for source |
--target-alias |
Alias for target cluster |
--target-servers |
Bootstrap servers for target |
--topics |
Regex pattern for topics (default: .*) |
--topics-whitelist |
Comma-separated whitelist |
--topics-blacklist |
Comma-separated blacklist |
--tasks |
Number of parallel tasks (default: 4) |
--sync-offsets |
Sync consumer group offsets |
--emit-heartbeats |
Emit health heartbeats |
List & Describe
surgewave mirror list
surgewave mirror describe dc1-to-dc2
Status & Monitoring
surgewave mirror status dc1-to-dc2
surgewave mirror status dc1-to-dc2 --watch
Pause & Resume
surgewave mirror pause dc1-to-dc2
surgewave mirror resume dc1-to-dc2
Consumer Group Failover
# Preview failover (dry run)
surgewave mirror failover \
--group my-consumer-group \
--source dc1 \
--target dc2 \
--dry-run
# Execute failover
surgewave mirror failover \
--group my-consumer-group \
--source dc1 \
--target dc2 \
--force
Delete
surgewave mirror delete dc1-to-dc2
Message Operations
message get
Fetch a single message by topic, partition, and offset.
surgewave message get <topic> <offset> [options]
| Option |
Description |
--partition, -p |
Partition (default: 0) |
--output-format |
Output: raw, json, hex, base64 (default: raw) |
--output, -o |
Write payload to file |
--headers |
Include headers |
--decode |
Auto-detect and decode format |
Examples:
# Pipe to jq
surgewave message get orders 5 | jq .
# Save to file
surgewave message get orders 5 --output message.bin
# JSON envelope with metadata
surgewave message get orders 5 --output-format json
# Hex dump
surgewave message get orders 5 --output-format hex
Copy Messages
Copy messages between topics efficiently.
# Basic copy
surgewave copy source-topic destination-topic
# With options
surgewave copy source-topic destination-topic \
--offset earliest \
--max-messages 10000
# Dry run to preview
surgewave copy source-topic destination-topic --dry-run
Options
| Option |
Short |
Description |
--offset |
-o |
Start offset: earliest, latest, number |
--source-partition |
-sp |
Source partition (default: 0) |
--dest-partition |
-dp |
Destination partition (default: 0) |
--max-messages |
-n |
Max messages to copy (-1 for all) |
--preserve-keys |
-k |
Preserve message keys (default: true) |
--key |
|
Override all message keys |
--dry-run |
|
Preview without copying |
--batch-size |
|
Messages per batch (default: 100) |
Log Operations
Compaction Status
surgewave logs compaction-status
surgewave logs compaction-status -f json
Trigger Compaction
surgewave logs compact
surgewave logs compact --force
Transactions
surgewave transactions list
surgewave transactions describe <transaction-id>
Quotas
surgewave quotas describe
surgewave quotas set --user alice --producer-rate 10485760
Transport
surgewave transport status
surgewave transport shm-info
surgewave transport shm-diagnostics --port 9092
surgewave transport shm-cleanup --dry-run
Benchmarking
surgewave benchmark --messages 100000 --size 1024
surgewave benchmark -n 1000000 -s 100 --batch 1000
Configuration
surgewave config profile create prod
surgewave config profile use prod
surgewave config set bootstrap_servers kafka.prod:9092
surgewave config get bootstrap_servers
Shell Completion
Generate shell completion scripts for command auto-completion.
# Bash
surgewave completion bash > ~/.surgewave-completion.bash
source ~/.surgewave-completion.bash
# Zsh
surgewave completion zsh > ~/.surgewave-completion.zsh
source ~/.surgewave-completion.zsh
# PowerShell
surgewave completion powershell | Out-String | Invoke-Expression
# Fish
surgewave completion fish > ~/.config/fish/completions/surgewave.fish
Exit Codes
| Code |
Meaning |
| 0 |
Success |
| 1 |
General error |
| 2 |
Connection error |
| 3 |
Authentication error |
| 4 |
Authorization error |
Troubleshooting
Connection Issues
surgewave diagnose
surgewave topics list -v
Common Errors
| Error |
Solution |
| "Connection refused" |
Check broker is running |
| "Topic not found" |
Create topic or enable auto-create |
| "Authentication failed" |
Check credentials |
| "Not authorized" |
Verify ACLs |