Reference
CLI and network reference
Verified against the current nexir 0.1.0-beta.3 (beta) CLI and default configuration.
CLI
nexir [--accept-terms] [OPTIONS]
nexir healthcheck
nexir --accept-terms recover inspect [--storage-path PATH]
nexir --accept-terms recover force-new-cluster [--commit --confirm-node-id ID]
[--rpc-addr ADDR] [--redis-addr ADDR] [--storage-path PATH]| Option | Behavior |
|---|---|
-h, --help | Print help and exit |
-V, --version | Print version and exit |
--list | Exit without starting the server |
--accept-terms | Accept the Nexir Binary License and Use Terms v1.0, record acceptance, and continue the requested operation |
healthcheck | Send a RESP PING to the configured local endpoint and fail unless it returns PONG |
| No arguments | Start RESP, Raft gRPC, Prometheus, and storage subsystems after terms acceptance |
Offline recovery
| Command | Behavior |
|---|---|
recover inspect | Read-only report of node identity, vote, cluster UUID, indexes, and membership |
recover force-new-cluster | Dry-run survivor conversion; changes nothing |
recover force-new-cluster --commit --confirm-node-id ID | Commit conversion to a new one-voter cluster identity |
Exit behavior
Help, version, and --list exit successfully. Unknown arguments, invalid recovery syntax, and recovery refusal exit with status 2. Startup I/O/configuration failures return a nonzero process status. Exact status codes beyond these verified CLI cases are not a stable public-beta contract.
Network ports
| Surface | Default | Protocol | TLS |
|---|---|---|---|
| Client | 127.0.0.1:6379 | RESP2 over TCP | Optional required mTLS |
| Cluster | 127.0.0.1:50051 | gRPC over HTTP/2 | Optional required peer mTLS |
| Metrics | 127.0.0.1:9090 | Prometheus HTTP | None |
Environment naming
Configuration fields map to uppercase NEXIR__SECTION__FIELD names. Nested TLS fields add another double-underscore segment. Examples:
NEXIR_ACCEPT_TERMS=1
NEXIR__SERVER__REDIS_BIND=10.0.0.11:6379
NEXIR__RAFT__NODE_ID=1
NEXIR__STORAGE__PATH=/var/lib/nexir
NEXIR__SERVER__TLS__CLIENT__MODE=require
NEXIR__PROMETHEUS__BIND=10.0.1.11:9090
RUST_LOG=infoNEXIR__PROMETHEUS__PORT is a deprecated compatibility override for only the port. Prefer NEXIR__PROMETHEUS__BIND.
Cluster lifecycle commands
| Command | Purpose |
|---|---|
INIT id grpc redis | Initialize exactly one fresh node as a one-voter cluster |
CLUSTER ADD id grpc redis [TIMEOUT ms] | Validate, add, and catch up a learner |
CLUSTER PROMOTE id | Turn a learner into a voter |
CLUSTER DEMOTE id | Retain a non-leader voter as learner |
CLUSTER REMOVE id | Completely remove a voter or learner |
CLUSTER UPDATE-ADDR id grpc redis | Guarded change of advertised addresses |
CLUSTER TRANSFER-LEADER id | Request leadership by a caught-up voter |
CLUSTER STEPDOWN | Transfer to the best caught-up voter |
Mutating operations must reach the leader. When admin commands are disabled, they return an explicit error.
Cluster inspection commands
| Command | Returns |
|---|---|
CLUSTER INFO | Text state, role, leader, UUID, term, indexes, membership state |
CLUSTER MEMBERS | Structured member rows with role, addresses, leader, match, lag |
CLUSTER IDENTITY | Local node ID, UUID, initialized flag |
CLUSTER STATUS | Serialized Raft metrics diagnostic payload |
CLUSTER SLOTS | Single 0..16383 compatibility range |
CLUSTER NODES | Redis-style compatibility topology text |
Protocol hard limits
| Limit | Value |
|---|---|
| Command name | 512 bytes |
| Key | 1 MiB |
| Value | 60 MiB |
| Aggregate request | 60 MiB |
| Request multibulk arguments | 128 while the surface is scalar-only |
| RESP array outer ceiling | 25,000 elements |
For the full command surface and behavior, see Redis compatibility. For all operational settings, see Configuration.