chunk-cli is the first practical command-line client for chunkdb, a specialized chunk/grid storage engine.
It provides direct terminal access to the chunk protocol for operational checks, debugging, and scripting.
- connection URIs:
chunk://(plain TCP)chunks://(TLS)
- core commands:
pinginfoauthgetexistssetunsetchunkexistschunksetchunkstatechunksetstatechunkchunkbinchunkbinstateshell
- token auth via URI (
chunk://token@host:port/) or--token - clear text output and explicit error messages
Requirements:
- Go
1.25+
Build from source:
go build -o chunk-cli ./cmd/chunk-cli
./chunk-cli versionInstall into GOBIN:
go install ./cmd/chunk-cliDefault URI is chunk://127.0.0.1:4242/.
chunk-cli ping
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ info
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ get 0 0
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ exists 0 0
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ set 0 0 10110011
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ unset 0 0
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ chunkexists 0 0
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ chunkset 0 0 <full_chunk_bits>
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ chunkstate 0 0
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ chunksetstate 0 0 <payload_bits>|<presence_bits>
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ chunk 0 0
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ chunkbin 0 0
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ chunkbinstate 0 0Block-state note:
get <x> <y>prints zero bits for an unset blockexists <x> <y>prints1when the block is explicitly present,0when it is unsetset <x> <y> 000...0is distinct fromunset <x> <y>
Chunk-state note:
chunk <cx> <cy>still prints zero bits for an absent chunkchunkexists <cx> <cy>prints1when any explicit chunk presence exists,0when the chunk is unset/absentchunkset <cx> <cy> 000...0is distinct from an absent chunk, but<bits>must be a full chunk-sized payloadchunkstate <cx> <cy>prints<payload_bits>|<presence_bits>for exact per-block presencechunksetstate <cx> <cy> <payload_bits>|<presence_bits>writes mixed present/absent block statechunkbinstate <cx> <cy>prints exact chunk-state bytes as[payload_bytes][presence_bytes]
Start the interactive shell:
chunk-cli --uri chunk://mytoken@127.0.0.1:4242/ shellThe shell prompt is chunk>. Supported shell commands:
pinginfoauth [token]get <x> <y>exists <x> <y>set <x> <y> <bits>unset <x> <y>chunkexists <cx> <cy>chunkset <cx> <cy> <bits>chunkstate <cx> <cy>chunksetstate <cx> <cy> <payload_bits>|<presence_bits>chunk <cx> <cy>chunkbin [--out <file>] <cx> <cy>chunkbinstate [--out <file>] <cx> <cy>quitexit
Example session:
chunk> ping
PONG
chunk> exists 0 0
0
chunk> set 0 0 1111000011110000
OK
chunk> exists 0 0
1
chunk> get 0 0
1111000011110000
chunk> unset 0 0
OK
chunk> chunkexists 0 0
0
chunk> chunkset 0 0 <full_chunk_bits>
OK
chunk> chunkstate 0 0
<full_chunk_bits>|<presence_bits>
chunk> chunksetstate 0 0 <payload_bits>|<presence_bits>
OK
chunk> chunkexists 0 0
1
chunk> chunk 0 0
<full_chunk_bits>
chunk> chunkbinstate 0 0
bytes=<n>
<hex dump>
chunk> get 0 0
0000000000000000
chunk> info
chunkdb_version=1
...
chunk> quit
BYE
Shell auth behavior:
- if token is present in URI or
--token, shell performs automaticAUTHon connect - you can re-authenticate at any time with
auth <token> exitexits locally;quitsendsQUITand exits
chunk-cli [global options] <command> [command args]Global options:
--uri <chunk://token@host:port/ | chunks://token@host:port/>--token <token>--timeout <duration>(default:5s)--tls-insecure(for self-signed TLS inchunks://mode)--tls-server-name <name>
Auth behavior:
- for non-
auth/non-shellcommands, CLI auto-runsAUTHwhen token is present in URI or--token - for
auth, token is taken fromauth <token>first, otherwise from URI/--token - for
shell, token is auto-authenticated once on connect (if provided)
ping- sends
PING, expects simple response (+PONG)
- sends
info- sends
INFO, prints returned bulk text
- sends
auth <token>- sends
AUTH <token>, prints simple response
- sends
get <x> <y>- sends
GET, prints block bit payload
- sends
exists <x> <y>- sends
EXISTS, prints1when present and0when unset
- sends
set <x> <y> <bits>- sends
SET; validatesbitsas binary (0/1) before request
- sends
unset <x> <y>- sends
UNSET, clears explicit block presence, prints simple response
- sends
chunkexists <cx> <cy>- sends
CHUNKEXISTS, prints1when the chunk has explicit presence and0when absent
- sends
chunkset <cx> <cy> <bits>- sends
CHUNKSET; validatesbitsas binary (0/1) before request
- sends
chunkstate <cx> <cy>- sends
CHUNK ... STATE; prints<payload_bits>|<presence_bits>
- sends
chunksetstate <cx> <cy> <payload_bits>|<presence_bits>- sends
CHUNKSET ... STATE; validates both halves as binary before request
- sends
chunk <cx> <cy>- sends
CHUNK, prints text chunk payload
- sends
chunkbin [--out <file>] <cx> <cy>- sends
CHUNKBIN - default output: payload size + hex dump
- with
--out: writes raw bytes to file and prints summary
- sends
chunkbinstate [--out <file>] <cx> <cy>- sends
CHUNKBIN ... STATE - default output: exact chunk-state size + hex dump
- with
--out: writes raw state bytes to file and prints summary
- sends
shell- starts interactive mode with prompt
chunk>
- starts interactive mode with prompt
chunk-cli --uri chunks://mytoken@127.0.0.1:4242/ --tls-insecure info- normal responses are printed in readable form (text commands preserve server text;
chunkbinincludes byte count) - errors are printed as
error: ...and process exits non-zero - server
-ERR ...responses are surfaced directly
Run local checks:
gofmt -w .
go vet ./...
go test ./...
go build ./...Show help:
go run ./cmd/chunk-cli --help