BT-7274 e8c3e44bad feat: scaffold nani CLI + MCP server
Single Rust binary with three modes:
- Human CLI with colored output
- M2M mode (--json, --plain, --silent flags)
- MCP server over stdio (nani mcp-server)

HTTP client for config.saiden.dev REST API:
- Projects: list, set metadata, delete
- Secrets: get, set, list, delete
- Files: get, put, list, delete

Global flags: --json, --plain, --silent, --dry-run, --url, --api-key
Config: ~/.config/nani/config.json + NANI_API_KEY/NANI_URL env vars

MCP tools: nani_get, nani_set, nani_list, nani_delete, nani_file_get, nani_file_put

Dependencies: clap (derive), reqwest (rustls-tls), serde, tokio, rmcp, colored

Closes infra/nani#1
2026-06-12 22:02:08 +02:00
2026-06-12 22:02:08 +02:00
2026-06-12 22:02:08 +02:00

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 36 KiB
Languages
Rust 100%