New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

autho

Package Overview
Dependencies
Maintainers
1
Versions
28
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

autho

Local-first secret manager for humans and coding agents, rebuilt on Bun

latest
Source
npmnpm
Version
3.4.0
Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

autho

Local-first secret manager for humans and coding agents, rebuilt on Bun.

Autho stores secrets in an encrypted SQLite vault on your machine. No cloud, no sync, no account. Secrets are envelope-encrypted with AES-256-GCM and protected by a master password via scrypt KDF.

Install

bun install -g autho

Requires Bun 1.3.10+. Standalone binaries for macOS, Linux and Windows are on GitHub Releases, and the web UI runs in Docker:

docker run --rm -it -v autho-data:/data niradler/autho init
docker run -d -p 127.0.0.1:8061:8061 -v autho-data:/data niradler/autho

Quick Start

# Create a vault
autho init --password "correct horse battery staple"

# Add a secret
autho secrets add --password "..." --name github --type password --value ghp_xxx --username octocat --url https://github.com

# Read it back
autho secrets get --password "..." --ref github --json

# Generate an OTP code
autho otp code --password "..." --ref my-totp --json

Run autho init to save your master password to the native OS secret store (macOS Keychain, Linux Secret Service, Windows Credential Manager). After that, all commands unlock silently without prompting.

You can also set AUTHO_MASTER_PASSWORD to avoid passing --password on every call, or set AUTHO_DISABLE_OS_SECRETS=1 to opt out of OS secret storage.

Features

  • Secret CRUD — password, note, and OTP types with metadata
  • Groups — put secrets in named folders such as homelab; filter the CLI, TUI and web UI by group
  • OTP generation — RFC 6238 TOTP with configurable algorithm and digits
  • File encryption — encrypt/decrypt individual files or entire folders
  • Env injection — render secrets as env vars, write .env files, or inject into subprocesses
  • Project mappings — define ENV_NAME=secretRef maps in a project config file
  • Leases — time-limited, revocable access tokens scoped to specific secrets
  • Audit trail — reads, edits, env/exec injections and unlocks are logged with their source (cli, tui, web, daemon) and lease; old events are pruned after 90 days by default (auditRetentionDays)
  • Legacy import — migrate from JSON backup files
  • Interactive mode — run autho with no arguments for a guided prompt
  • Local daemon — unlock once, run many commands without re-entering your password
  • Local web UI — everything the CLI and TUI do, in the browser on localhost (autho web serve); it also runs while the TUI is open

Commands

autho init --password <value> [--vault <path>]
autho status [--password <value>] [--vault <path>] [--json]
autho secrets add --password <value> --name <name> --type <password|note|otp> --value <value> [options]
autho secrets list --password <value> [--group <name>] [--vault <path>] [--json]
autho secrets edit --password <value> --ref <name-or-id> [--group <name> | --no-group] [options]
autho secrets get --password <value> --ref <name-or-id> [--vault <path>] [--json]
autho secrets rm --password <value> --ref <name-or-id> [--vault <path>] [--json]
autho groups list|create <name>|rename <name> <new-name>|rm <name> [--yes] [--json]
autho otp code --password <value> --ref <name-or-id> [--vault <path>] [--json]
autho lease create --password <value> --secret <ref> --ttl <seconds> [--name <value>] [--json]
autho lease revoke --password <value> --lease <id> [--json]
autho env render --password <value> --map <ENV=ref> [--project-file <path>] [--lease <id>] [--json]
autho env sync --password <value> --map <ENV=ref> [--output <path>] [--force] [--ttl <seconds>] [--json]
autho exec --password <value> --map <ENV=ref> [--lease <id>] -- <command>
autho file encrypt --password <value> --input <path> [--output <path>] [--force] [--json]
autho file decrypt --password <value> --input <path> [--output <path>] [--force] [--json]
autho files encrypt --password <value> --input <path> [--output <path>] [--force] [--json]
autho files decrypt --password <value> --input <path> [--output <path>] [--force] [--json]
autho import legacy --password <value> --file <path> [--no-skip-existing] [--json]
autho audit list --password <value> [--limit <number>] [--source cli|tui|web|daemon] [--type <prefix>] [--secret <ref>] [--lease <ref>] [--json]
autho project init --map <ENV=ref> [--output <path>] [--force] [--json]
autho web serve [--vault <path>] [--port <value>]
autho daemon serve [--vault <path>] [--port <value>]
autho daemon status [--state-file <path>] [--json]
autho daemon unlock --password <value> [--ttl <seconds>] [--state-file <path>] [--json]
autho daemon lock --session <id> [--state-file <path>] [--json]
autho daemon stop [--state-file <path>] [--json]
autho daemon env render --session <id> --map <ENV=ref> [--project-file <path>] [--json]
autho daemon exec --session <id> --map <ENV=ref> [--project-file <path>] -- <command>
autho password change [--new-password <value>] [--json]
autho passkey add|list|remove [--label <name>]
autho config show|path|set <key> <value>|unset <key>

Run autho with no arguments for the terminal UI; press 2 there for Groups and 6 for Settings (paths, unlock methods, timeouts, agent defaults).

Run autho help for the full reference.

Security Model

  • Master password derives a key-encryption key via scrypt (N=2^17, r=8, p=1)
  • Each vault gets a random 256-bit root key
  • Secret payloads use AES-256-GCM envelope encryption with per-secret DEKs
  • File and folder artifacts use the same envelope encryption scheme
  • SQLite vault files are hardened to 0600 permissions
  • Daemon auth tokens use OS secret storage when available (falls back to file)
  • Audit events record access patterns without storing secret values

Storage

By default, Autho stores everything under ~/.autho/:

  • vault.db — encrypted SQLite vault
  • project.json — project env mappings
  • daemon.json — daemon state

Override with AUTHO_HOME or --vault <path>.

Agent Usage

Humans can approve exact secrets for an agent without sharing their master password:

# Human: unlock and start the local daemon using normal vault authentication
autho daemon start

# Human: approve an existing secret for five minutes
# GITHUB_SECRET_REF contains its vault entry name, not the secret value
autho lease create --key --secret "$GITHUB_SECRET_REF" --ttl 300 --json

# Agent: launcher supplies the returned leaseKey through AUTHO_LEASE_KEY
autho exec --map GITHUB_TOKEN=github -- node build.js

# Human: revoke before expiry
autho lease revoke --lease <id>

Keys allow only approved reads, OTP, env injection, exec and lease inspection. They expire or revoke at the daemon and are invalidated on daemon restart. New links cannot widen an issued key. Already delivered values cannot be recalled or invalidated at their external provider; this is an API boundary, not an OS sandbox.

Optional OS keyring storage is off by default. Enable it with autho config set saveLeaseKeys true, issue a new key, then use autho exec --lease-keyring <id> --map GITHUB_TOKEN=github -- node build.js. Only the lease credential is saved; expiry/revocation triggers cleanup, with no plaintext fallback if saving fails. You can also supply a key using --lease-key-file <private-file>.

Owner-authenticated lease create without --key remains available. See the full lease-key guide for scope, replacement, cleanup and trust boundaries.

License

MIT

Keywords

secrets

FAQs

Package last updated on 03 Nov 2026

Related posts