COMMAND
The COMMAND family provides RESP2 introspection: redis-cli, cluster-aware
clients, and monitoring tools use it during the handshake to discover which
commands the server supports, their arity, key positions, and ACL categories.
The table is static because Tellstone’s command set is fixed at build time.
COMMAND is RESP-only — the binary protocol carries its own wire
encoding and does not expose this surface.
COMMAND (bare)
Section titled “COMMAND (bare)”COMMANDReturns the details of every command, identical to COMMAND INFO with no
names. Clients cache this reply for key-position routing.
Reply: an array of 10-element arrays, one per command:
- Command name (lowercase; subcommands use
parent|subnotation) - Arity (negative = minimum argument count, including the command name)
- Flags (
readonly,write,admin,noscript,loading,stale,fast,denyoom) - First key position (
0= keyless) - Last key position (
-1= until end of arguments) - Key step (increment between successive key arguments)
- ACL categories (
@read,@write,@admin, etc.) - Tips (empty array)
- Key specifications (begin_search + find_keys for keyed commands)
- Subcommands (recursive 10-element arrays)
> COMMAND1) 1) "acl" 2) (integer) -2 3) 1) "admin" 2) "noscript" 3) "loading" 4) "stale" 4) (integer) 0 5) (integer) 0 6) (integer) 0 7) 1) "@admin" 2) "@slow" 3) "@dangerous" 8) (empty array) 9) (empty array) 10) 1) 1) "acl|setuser" ...COMMAND COUNT
Section titled “COMMAND COUNT”COMMAND COUNTReturns the number of top-level commands. This deliberately matches the
number of entries COMMAND (bare) returns; subcommands are counted by
client-side tools.
Reply: integer.
> COMMAND COUNT(integer) 10COMMAND INFO
Section titled “COMMAND INFO”COMMAND INFO [command-name ...]Returns a detail array for each named command. Unknown names return a null
bulk reply. No names means every command (same as bare COMMAND).
Subcommands are referenced with parent|sub notation (e.g. role|create,
command|count).
Reply: an array of 10-element arrays (same structure as bare COMMAND).
> COMMAND INFO get set del1) 1) "get" 2) (integer) 2 3) 1) "readonly" 2) "fast" 4) (integer) 1 5) (integer) 1 6) (integer) 1 7) 1) "@read" 2) "@fast" 3) "@string" 8) (empty array) 9) 1) 1) "flags" 2) 1) "RO" 2) "access" ... 10) (empty array)2) 1) "set" ...3) 1) "del" ...COMMAND DOCS
Section titled “COMMAND DOCS”COMMAND DOCS [command-name ...]Returns documentary information: summary, introduction version, functional group, and time complexity. The reply is a RESP2 flattened map — alternating name and metadata array.
Subcommands appear under parent|sub names. Unknown names are omitted
(matching Valkey).
Reply: an array of [name, [field, value, ...]] pairs.
> COMMAND DOCS get1) "get"2) 1) "summary" 2) "Get the value of a key" 3) "since" 4) "1.0.0" 5) "group" 6) "string" 7) "complexity" 8) "O(1)"> COMMAND DOCS command1) "command"2) 1) "summary" 2) "Get details about server commands" 3) "since" 4) "2.8.13" 5) "group" 6) "server" 7) "complexity" 8) "O(N)"3) "command|count"4) 1) "summary" 2) "Return the total number of commands in the server" ...COMMAND LIST
Section titled “COMMAND LIST”COMMAND LIST [FILTERBY MODULE <module-name> | ACLCAT <category> | PATTERN <pattern>]Returns the sorted list of top-level command names, optionally filtered.
Without arguments, returns every command name alphabetically.
Filter types
Section titled “Filter types”| Filter | Meaning |
|---|---|
MODULE <name> | Commands belonging to a module. Tellstone loads no modules, so this always returns an empty list. |
ACLCAT <category> | Commands in the given ACL category. Accepts @-prefixed (e.g. @read) or bare names. |
PATTERN <pattern> | Commands matching a glob pattern (* = any run, ? = any single byte). |
Reply: an array of bulk strings (command names).
> COMMAND LIST1) "acl"2) "auth"3) "command"4) "del"5) "get"6) "ping"7) "quit"8) "role"9) "set"10) "starttls"> COMMAND LIST FILTERBY ACLCAT @read1) "get"> COMMAND LIST FILTERBY PATTERN s*1) "set"2) "starttls"COMMAND HELP
Section titled “COMMAND HELP”COMMAND HELPPrints the subcommand reference.
Reply: an array of simple strings.
> COMMAND HELP1) "COMMAND <subcommand> [<arg> [value] [opt] ...]. Subcommands are:"2) "COUNT"3) " Return the total number of commands in the server."4) "DOCS [<command-name> ...]"5) " Return documentary information about commands."6) "INFO [<command-name> ...]"7) " Return details about multiple commands."8) "LIST [FILTERBY MODULE <module-name> | ACLCAT <category> | PATTERN <pattern>]"9) " Return a list of the server's command names."10) "HELP"11) " Print this help."ACL categories
Section titled “ACL categories”COMMAND INFO reports each command’s ACL categories in element 7. These
are derived from the RBAC catalog, so COMMAND LIST FILTERBY ACLCAT reports
the real authorization model:
| Category | Commands |
|---|---|
@read | get |
@write | set, del |
@admin | acl, role |
@connection | auth, ping, quit, starttls |
@server | command |
@slow | acl, role, del |
@fast | auth, get, ping, quit |
@string | get, set, del |
@dangerous | acl, role |
@noscript | acl, auth, quit, starttls |
@loading | acl, auth, quit, starttls |
@stale | acl, auth, quit, starttls |
Error handling
Section titled “Error handling”- Unknown subcommand:
-ERR unknown subcommand '<name>'. Try COMMAND HELP. - Wrong arity on subcommands:
-ERR wrong number of arguments for 'command|<sub>' command - Missing RBAC permission:
-NOPERM no permission for 'command' command - Unknown
FILTERBYtype:-ERR unknown command list filter type '<type>'