Repository navigation
An encrypted credential vault for AI agents. One Rust binary, no daemon, no server; ciphertext
syncs between your machines over a git remote you already own.
The whole point:
akey run --with OPENAI_API_KEY=akey://openai/credential -- curl -sS https://api.openai.com/v1/modelsThe child process gets the real value. The agent's stdout gets <concealed by akey>.
What is in this release
- Entries and references —
akey://[vault/]item/[section/]field, with field types including
concealed, OTP, SSH key, and file attachments. - Delivery to agents —
run(inject into a child process and mask its output),read,
inject, and an MCP server that exposes metadata only, never values. - Capability tokens — per-entry allow lists, TTLs,
--deny-reveal, enforced before decryption. - Cross-device sync —
sync,conflicts,resolve, with deterministic three-way merges. - A local trust set —
recipients.jsonis a directory of who exists, distributed by an
untrusted remote; encryption targets recipients ∩ locally-approved. A key pushed into the
repository by someone with write access receives nothing until a human runsakey devices trust. - Recovery — attach a new machine from a passphrase without moving any key material.
- Localization — the CLI speaks English and Chinese;
--jsonis byte-identical in both, apart
from the--helpstrings thatakey schemaembeds.
Platform coverage
| macOS arm64, macOS x86_64 | prebuilt below |
| Linux x86_64 / aarch64, Windows x86_64 / arm64 | built by the release workflow, but GitHub Actions cannot currently provision runners for this repository, so this release does not include them |
On Linux or Windows the installers detect the missing binary and build from source with
cargo install --git, which needs a Rust toolchain and a couple of minutes. That path is tested
(tests/installer.sh) and was broken until this release — the version lookup clobbered its own
variable and passed cargo an empty --tag. If you tried the install command before and it failed
with '+refs/tags/:refs/remotes/origin/tags/' is not a valid refspec, that was this, and it is
fixed.
Verification
- 195 unit + 45 contract + 11 end-to-end tests,
cargo clippy --locked --all-targets -- -D warnings
clean,cargo fmt --checkclean. - The end-to-end suite runs two machines against a real bare git remote, offline, and includes the
regression for a recipient that a remote adds without local approval: it is reported pending and
receives no ciphertext. - Both archives below carry a SHA-256, which the installers verify before extracting and refuse on
mismatch. Verified here against the published artifacts: install, byte-compare against the built
binary, then tamper and confirm the refusal leaves nothing behind. - Threat model, nine attack simulations, and every finding with its status:
docs/SECURITY.md.
Install
curl -fsSL https://raw.githubusercontent.com/coder-knock/akey/main/install.sh | shOr from source: cargo install --git https://github.com/coder-knock/akey --locked.