{"_id":"@airctrl/cli","name":"@airctrl/cli","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@airctrl/cli","version":"0.1.0","type":"module","description":"AIRCTRL CLI — inject records as env vars into any process (client-side decrypt, zero-knowledge).","license":"UNLICENSED","homepage":"https://airctrl.dev","bin":{"airctrl":"dist/index.js"},"main":"dist/index.js","publishConfig":{"access":"public"},"scripts":{"build":"tsc","dev":"tsx src/index.ts"},"dependencies":{"@airctrl/sdk":"0.1.0"},"gitHead":"cc62d4b10ea2268f94fa964fc7b4a683d6b1a35d","_id":"@airctrl/cli@0.1.0","_nodeVersion":"22.19.0","_npmVersion":"11.12.0","dist":{"integrity":"sha512-WMN+69mk9dBcw5OCtvxgJq/XuhayG2O8IKE+2m18r0haBbD2Her+TinPbgf5ZUWUJSsYieLKZFoyA2xwqlkqqQ==","shasum":"352cc6c1c7cc65e896086a7b9206db19b075f29c","tarball":"https://registry.npmjs.org/@airctrl/cli/-/cli-0.1.0.tgz","fileCount":5,"unpackedSize":9696,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCPXYnYtGUw9n2dtjGs0YJBHkG7IVDGFLQEMVC27MGsGwIgD5g+M3XtgE04bP+hgEsMAGlazKQnZq1XFso+KU9jYHk="}]},"_npmUser":{"name":"david.theovex","email":"david@theovex.com"},"directories":{},"maintainers":[{"name":"david.theovex","email":"david@theovex.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.1.0_1783614355171_0.2531443803839064"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-09T16:25:54.917Z","0.1.0":"2026-07-09T16:25:55.320Z","modified":"2026-07-09T16:25:55.540Z"},"maintainers":[{"name":"david.theovex","email":"david@theovex.com"}],"description":"AIRCTRL CLI — inject records as env vars into any process (client-side decrypt, zero-knowledge).","homepage":"https://airctrl.dev","license":"UNLICENSED","readme":"# @airctrl/cli\n\nInject [AIRCTRL](https://airctrl.dev) secrets into any process as environment variables,\ndecrypting **client-side** (zero-knowledge — the server never sees plaintext). Same idea as\n`op run` / `doppler run`, built on [`@airctrl/sdk`](https://www.npmjs.com/package/@airctrl/sdk).\n\n## Install\n\n```sh\nnpm install -g @airctrl/cli\n# or run without installing:\nnpx @airctrl/cli --help\n```\n\n## Quick start (test it live)\n\n1. **Get a Personal Access Token (PAT).** In the AIRCTRL app: **Settings → Developer → Create token**. Copy the `sk-actrl-pat-…` — it's shown once.\n2. **You need two different things** (this is the zero-knowledge part):\n   - **API base URL** — your AIRCTRL API (`http://localhost:54330` for local dev, or your dev/prod URL).\n   - **Vault passphrase** — the passphrase you set to unlock your vault. It decrypts your secrets **on your machine**. It is **not** the PAT: the PAT authenticates you to the API; the passphrase decrypts the ciphertext locally.\n3. **Point it at a project that has records** and run any command with the secrets injected as env vars:\n\n```sh\nAC_API_BASE_URL=\"http://localhost:54330\" \\\nAC_TOKEN=\"sk-actrl-pat-…\" \\\nAC_VAULT_PASSWORD=\"your-vault-passphrase\" \\\nnpx @airctrl/cli run --project <projectId> -- printenv\n```\n\nYou'll see `airctrl: injected N secret(s): …`, and each record appears as an `UPPER_SNAKE` env var in the child process. Swap `printenv` for `node server.js`, `python app.py`, etc. — the secrets never touch disk and the server never sees plaintext.\n\n## Commands\n\n```\nairctrl login                                 store API URL + PAT (~/.airctrl/config.json)\nairctrl get <recordId>                        decrypt one record, print to stdout\nairctrl run [--project <id>] -- <cmd> [args]  inject the project's records as env vars, then run <cmd>\n```\n\n## Example\n\n```sh\nairctrl login\nairctrl run --project <projectId> -- node server.js\n```\n\n## Non-interactive overrides\n\nFor CI / scripts, skip the prompts with env vars:\n\n- `AC_TOKEN` — personal access token\n- `AC_API_BASE_URL` — API base URL\n- `AC_VAULT_PASSWORD` — vault passphrase\n\n© AIRCTRL — all rights reserved (license TBD) · [airctrl.dev](https://airctrl.dev)\n","readmeFilename":"README.md","_rev":"1-e0599647eee017594abb5a0ce3770fa2"}