██████╗ █████╗ ███████╗████████╗██╗ ██████╗ ███╗ ██╗ ██╔══██╗██╔══██╗██╔════╝╚══██╔══╝██║██╔═══██╗████╗ ██║ ██████╔╝███████║███████╗ ██║ ██║██║ ██║██╔██╗ ██║ ██╔══██╗██╔══██║╚════██║ ██║ ██║██║ ██║██║╚██╗██║ ██████╔╝██║ ██║███████║ ██║ ██║╚██████╔╝██║ ╚████║ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
# One agent for your whole life — health, work, money, projects — that stays useful for years without becoming unreviewable, irreversible, or owned by a vendor. # Most agents ask for the keys. Bastion never needs them.
Every fact has provenance, validity, and a lifecycle. Inspect where it came from, correct it, or revoke it — chat history is not unquestionable truth, and a "profile" never silently becomes policy.
Incoming content is classified by trust. Public messages and email are untrusted; WhatsApp is signature-checked; unknown senders rejected. No "the model saw it, therefore do it" path.
Sessions, memory, personas and skills live in your deployment. Your providers, your subscriptions — credentials never enter agent memory. Full state exports and imports with the CLI.
Work priorities shouldn't erase health goals. Personas, goals and memories stay distinct per life area while informing one person-level assistant. Context without collapse.
Cabinet mode convenes named personas to deliberate, preserves dissent, and returns a synthesized recommendation. Priorities made explicit and revisable — never flattened into one agreeable voice.
Declarative, WASM and subprocess extensions plug into a capability-bounded host — installing one grants nothing by default. Self-improvement is approval-gated: skill candidates queue for your sign-off.
Not an illustration — the runtime's real architecture. External content enters through quarantine and gains authority only with your signature. One gate.
The Keeper lives in the TUI — pixel art on Kitty, WezTerm, Ghostty, iTerm2. /pet game on turns healthy breaks and finished work into cosmetic progression.
██████╗ █████╗ ███████╗████████╗██╗ ██████╗ ███╗ ██╗ ██╔══██╗██╔══██╗██╔════╝╚══██╔══╝██║██╔═══██╗████╗ ██║ ██████╔╝███████║███████╗ ██║ ██║██║ ██║██╔██╗ ██║ ██╔══██╗██╔══██║╚════██║ ██║ ██║██║ ██║██║╚██╗██║ ██████╔╝██║ ██║███████║ ██║ ██║╚██████╔╝██║ ╚████║ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
$ curl -fsSL bastion.run | sh
Bootstraps the full stack. Inspect the script first if that's your style — it preserves an existing .env and never prints generated credentials.
$ git clone \ https://github.com/thewaifucorp/bastion-agent.git $ cd bastion-agent && ./installer.sh $ bastion # opens the TUI
bastion finds or starts the local Compose runtime and opens the TUI — Keeper included.