nani

CLI and MCP server for config.saiden.dev — secrets, config, and file management.

Install

cargo install --path .

Auth

nani auth <api-key>         # store key to ~/.config/nani/config.json
nani auth show              # show current config (masked key)

Or set NANI_API_KEY environment variable.

Usage

# Projects
nani ls                                     # list all projects
nani projects set <project> --gitea <url>   # set project metadata
nani projects rm <project>                  # delete project

# Secrets
nani ls <project> <env>                     # list keys
nani get <project> <env> <key>              # get secret
nani set <project> <env> <key> <value>      # set secret
nani set <project> <env> <key> -f <file>    # set from file
nani rm <project> <env> <key>               # delete secret

# Files
nani files ls <project> <env>               # list files
nani files get <project> <env> <path>       # download file
nani files put <project> <env> <path> -f <file>  # upload file
nani files rm <project> <env> <path>        # delete file

Global flags

Flag Description
--json Structured JSON output (M2M mode)
--plain Raw value only, no decoration (for piping)
--silent No stdout, exit code only (0=ok, 1=error, 2=not-found)
--dry-run Show HTTP request without executing
--url <base> Override base URL
--api-key <key> Override API key (one-shot)

MCP Server

nani mcp-server

Exposes tools over stdio JSON-RPC: nani_get, nani_set, nani_list, nani_delete, nani_file_get, nani_file_put.

Config

  • File: ~/.config/nani/config.json
  • NANI_API_KEY env var overrides config file
  • NANI_URL env var overrides base URL
S
Description
Secrets, config, and file store — Rust CLI, M2M, and MCP server for config.saiden.dev
Readme 37 KiB
Languages
Rust 100%