consulx 0.1.0

A pure-HTTP Consul KV CLI + REPL built from scratch
Documentation

consulx โ€” Consul KV CLI + Rust Client Library

Crates.io Documentation License Downloads Recent Downloads

SnmFDBCLI

consulx is a modern Rust toolkit for working with Consul KV, providing:

  • ๐Ÿ”ง Interactive REPL (like redis-cli, but for Consul)
  • ๐Ÿ—‚๏ธ Tree view, watch, prefix watch, edit, get-json, put-json
  • โš™๏ธ Lightweight HTTP-only Consul client (no SDKs)
  • ๐ŸŒ Integrations for Actix and Axum
  • ๐Ÿ” First-class support for dynamic config & feature flags
  • ๐Ÿงฉ Typed JSON prefix loading (kv_list_json)

Everything is implemented from scratch using reqwest.


โœจ Features

๐Ÿงต REPL Interface

  • Auto-completion (reedline)
  • Commands: get, put, del, list, tree, get-json, put-json, edit, watch, watch-prefix

๐Ÿ—„๏ธ JSON-aware KV APIs

  • kv_get_json โ€” load typed JSON config
  • kv_put_json โ€” write typed JSON
  • kv_list_json โ€” load multiple JSON configs under a prefix

๐Ÿ” Watches

  • Watch individual keys
  • Watch entire prefixes
  • Efficient blocking queries (index + wait)

๐ŸŒ Actix & Axum Integrations

Drop ConsulXClient into your application state.

โšก Pure HTTP client

No consulrs. No SDK. No hidden magic.


๐Ÿš€ Installation

[dependencies]
consulx = "0.1.0"
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.12", features = ["rustls-tls", "json"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"

๐Ÿ”ง CLI Usage

cargo install consulx
consulx

Specify endpoint:

CONSUL_HTTP_ADDR=http://127.0.0.1:8500 consulx

๐Ÿ–ฅ๏ธ REPL Commands

Command Description
get Fetch raw value
put Store value
del Delete key
list List keys
tree ASCII tree
get-json Pretty JSON
put-json Validate + store
edit Edit in $EDITOR
watch Watch key
watch-prefix Watch prefix
help Help
exit Quit

๐Ÿงฉ JSON Prefix Loading (kv_list_json)

#[derive(Deserialize)]
struct FeatureFlag {
    enabled: bool,
}

let flags = consul.kv_list_json::<FeatureFlag>("app/features/").await?;

for (key, flag) in flags {
    println!("{key} => {:?}", flag);
}

๐Ÿ“ฆ Library API Summary

ConsulXClient::new(url)
ConsulXClient::from_env()

kv_get_raw
kv_put
kv_delete
kv_list

kv_get_json<T>
kv_put_json<T>
kv_list_json<T>

kv_watch
kv_watch_prefix

Made with โค๏ธ by the [Srotas Space] (https://srotas.space/open-source)


๐Ÿ‘ฅ Contributors

GitHub stars


๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.