ww-1.0.0 is not a library.
ww — Scylla‑backed secrets daemon + CLI
ww is a Doppler‑like secret manager built on ScyllaDB. It runs a background daemon that talks to Scylla and exposes project secrets over a local Unix socket. The companion CLI can inject environment variables into commands, download them in multiple formats, or update individual keys.
✨ Features
- 🔑 Store project secrets in ScyllaDB (
map<text,text>column) - 📡 Local daemon with Unix socket protocol
- 🛠 CLI with familiar commands:
run,secrets,set-env,client - 🌐 Path‑to‑project bindings (
~/.config/ww/config.toml) - 📄 Export secrets as
.env, JSON, or YAML - 🔒 Socket permissions default to
0600
🚀 Quick Start
1. Start the daemon
2. Bind your repo to a project
3. Set a secret
4. Run your app with secrets injected
🔧 CLI Overview
USAGE:
ww <COMMAND>
COMMANDS:
serve Start the daemon server
run Run a command with env vars injected
secrets Download or read secrets
set-env Upsert a single secret
client Manage global client config
Examples
-
Show current project resolution:
-
Download secrets to
.envfile: -
Fetch a single secret:
-
Run any command, injecting resolved project secrets:
⚙️ Client Config
Location: ~/.config/ww/config.toml
= "demo_project"
[[]]
= "/abs/path/to/repo"
= "my_project"
Resolution order:
--projectflag (explicit)WW_PROJECTenvironment variable- Path binding from config
default_project
📡 Socket Protocol
The daemon speaks a simple line protocol over a Unix socket:
QUERY_PROJECTS:<project>\n→KEY=VALUE\n...ENSURE_PROJECT:<project>\n→OK\norERROR:...SET_ENV:<project>:<key>=<value>\n→OK\norERROR:...
Socket path defaults to /tmp/ww.sock.
🔐 Security Notes
- Socket is
0600(owner read/write only) - Assumes local single‑user trust; no encryption/auth on socket
- Use
--plainonly when piping into secure sinks
🛠 Development
Build
Test
Install locally
📜 License
Licensed under MIT.