TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/nubskr/walrus/llms.txt
Use this file to discover all available pages before exploring further.
GET command reads a single entry from a topic and advances a shared cursor. Multiple clients reading from the same topic share the cursor position.
Syntax
The name of the topic to read from. Must be a single word (no spaces).
Wire Format
Request:Behavior
Shared Cursor
The GET command uses a shared cursor model:- Single cursor position per topic (not per client)
- Each GET advances the cursor by one entry
- Multiple clients reading from the same topic share the cursor
- No consumer groups or independent cursors (current limitation)
- Cursor state is maintained in memory (not persisted)
Read Path
- Client sends GET to any node
- Node looks up the current segment for the cursor position
- Request is routed to a node that has the segment data
- Entry is read from the Walrus WAL
- Cursor is advanced by one position
- Data is returned to the client
Sealed Segment Reads
- Old segments can be read from any replica that has the data
- No requirement to read from the original leader
- Reads scale with replicas for historical data
- Active segment reads go through the current leader
Empty Topics
When no data is available:- Returns
EMPTY(not an error) - Cursor position unchanged
- Subsequent PUTs make data available for next GET
Examples
Interactive Shell
One-off Command
Programmatic Usage (Rust)
Error Cases
Missing Topic Name
Request:Topic Does Not Exist
Request:Cluster Errors
- Raft not ready:
ERR raft cluster not initialized - Connection timeout: Connection refused or timeout
- Node unavailable: Try connecting to a different node
Shared Cursor Behavior
Multiple Clients
Cursor Reset
Currently, there is no way to reset the cursor or seek to a specific position:- Cursor starts at position 0 when the topic is created
- Each GET advances by one entry
- Restarting the cluster resets cursors (in-memory only)
Limitations
- No per-client cursors
- No consumer groups
- No offset commits or checkpointing
- No seek to specific offset
- Cursor state not persisted (lost on cluster restart)
Performance Considerations
Read Throughput
- One entry per GET request
- No batch read support
- Latency: ~1 RTT for local reads + storage latency
- Sealed segments can be read from any replica
Cursor Management
- Cursor state maintained in memory
- No disk I/O for cursor updates
- Cursor position lost on cluster restart
- Single shared cursor per topic (no contention)
Data Guarantees
Ordering
- Entries are read in the order they were written
- Guaranteed per-topic ordering
- Monotonically increasing offsets
Consistency
- Read-your-writes not guaranteed (shared cursor)
- Eventually consistent reads from sealed segments
- Strong consistency for active segment reads
Durability
- Reads return committed data from Walrus WAL
- Data persisted to disk before acknowledgment
- Cursor position not durable (in-memory)