Skip to content

v0.1.0

Latest

Choose a tag to compare

@coder-knock coder-knock released this 19 Sep 09:03
· 4 commits to main since this release

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/models

The 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.json is 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 runs akey devices trust.
  • Recovery — attach a new machine from a passphrase without moving any key material.
  • Localization — the CLI speaks English and Chinese; --json is byte-identical in both, apart
    from the --help strings that akey schema embeds.

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 --check clean.
  • 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 | sh

Or from source: cargo install --git https://github.com/coder-knock/akey --locked.