arca is no longer maintained. The repository is archived and there will be no further releases or security fixes.
✦ ✦ ✦

arca

/ˈar.ka/ · Latin: a strongbox for keeping valuables under lock

age-encrypted secrets, kept safely in front of AI agents.

why arca

Small, file-based, agent-safe

🔒

Encrypted at rest

Per-value age ciphertext with cleartext metadata in one JSON store. Reuses your existing sops key. No daemon, no account.

🪄

Use without revealing

A command execs with a secret while the value stays out of stdout and the model's context — and if the command prints it anyway, arca redacts it from the output.

📓

Tamper-evident audit

Every access is hash-chained and signed per session, so edits and deletions are detectable. arca log --verify proves the log is intact.

🎣

Canary secrets

Plant realistic decoys with canary --template stripe. Any use trips a loud, signed alert of a leak detection.

🎟️

Just-in-time grants

Bind a secret to what an agent does: a grant scoped to a command, a use count, and a time window — not just whether it can see the value.

🤖

Built for AI agents

An arca mcp server exposes audited tools, plus --no-print, approval gates, and TTLs a detected agent can't bypass.

install

Pick your platform

# macOS / Linux brew install \ arenzana/tap/arca
Homebrew
# Windows scoop bucket add \ arenzana … scoop install arca
Scoop
# anywhere with Go go install \ github.com/arenzana/arca@latest
go install
quickstart

Thirty seconds in

# reuse your sops key, or generate one arca init printf '%s' "$TOKEN" | arca set GITHUB_TOKEN --tag ci # use it without it ever hitting stdout arca exec -- terraform apply # generate, expire, and audit arca generate DB_PASSWORD --length 32 --no-print arca set TMP_TOKEN --ttl 1h arca log GITHUB_TOKEN arca log --verify # the log is hash-chained + signed
in practice

What makes it different

🪄 Use a secret — and redact it if the command leaks it

The value lands in the command's environment, never stdout. If the command prints it, arca swaps it for a marker before an agent can read it.

$ arca exec --only DB_PASSWORD -- sh -c 'echo connecting with $DB_PASSWORD'
connecting with «arca:DB_PASSWORD»   # the value never reaches the agent

🎣 Catch an agent that grabs everything

Plant a realistic decoy. The moment anything uses it, a signed alert fires and the trip is recorded in the tamper-evident log.

$ arca canary AWS_PROD_KEY --template aws
# ... later, if anything reads it ...
⚠  CANARY TRIPPED: "AWS_PROD_KEY" was accessed by malicious-agent

🎟️ Grant a secret just for one job

A require-grant secret is unusable until you scope it to a command, a use count, and a window — then it auto-expires.

$ arca grant DEPLOY_KEY --command 'terraform *' --uses 3 --ttl 15m
$ arca exec --only DEPLOY_KEY -- terraform apply   # allowed (1 of 3)

📓 Prove the audit log wasn't tampered with

Every event is hash-chained and signed per session. One command walks the chain and every signature.

$ arca log --verify
audit log OK: 128 event(s) chained, 128 signed
documentation

Read the docs

📖

Command reference

Every command, flag, and the policy model — the day-to-day reference.

🎟️

Per-secret policies

no-print, approval gates, canaries, grants, and rate limits for agents.

🤖

MCP for AI agents

Expose audited, capability-scoped tools to a model over stdio.

🏗️

Architecture & threat model

Actors, components, trust boundaries, and the security assessment.

Browse all docs