@meta
  v: 1
  route: /
  generated: 2026-11-05T04:06:43Z
  ttl: 1d
@intent
  purpose: Titanwarden: an open-source secret broker for machines where AI agents work. Agents run commands with the value injected and never read it.
  audience: engineer, operator, ai-agent
  capability: learn, install, compare, contact
@state
  product: Titanwarden
  maker: Titanium Computing
  family: Frontier Infra
  page: Secret broker for AI agents
  tagline: "Use, never see"
  price: "Free, open source"
  platforms[2]: macOS, Linux
  requirements[3]: Python 3.12 or newer, uv, SSH from a device you trust
  install_minutes: 2
  install_commands[4]:
    - git clone https://github.com/frontier-infra/titanwarden && cd titanwarden
    - uv sync --frozen && scripts/install.sh
    - twadmin init
    - twadmin unseal && tw status
  agent_prompt: "Install Titanwarden from https://github.com/frontier-infra/titanwarden: run uv sync --frozen and scripts/install.sh, then stop. Never run twadmin init or unseal; I do those over SSH. Show me the init command when tw status says sealed."
  checks[4]{check,what}:
    Checks the calling process,"Every call carries a token for one named principal, and the broker reads the calling process's ancestry before it reads anything else."
    Writes the audit row,"The audit row commits before the value leaves broker memory. If that write fails, the command does not start."
    Seals on every restart,"A restart, a crash or a deploy drops the keys. A human unseals; a freeze latches agents off; a panic seal enters lockdown."
    Redacts what tries to leave,"Every child's output passes a redactor that knows every stored value in raw, base64, hex and percent form. A match becomes tw:redacted."
  steps[3]{step,what}:
    Put the value in,"A human types it at a hidden prompt, or the broker generates it. It never crosses a command line."
    Grant the agent its scope,"A grant names a principal, a path pattern and the operations it covers. Agents without one file a request you answer."
    Run with a manifest,"A manifest holds references, not values, so it is safe to commit. The broker fills them in at start."
  page_sections[7]:
    - The broker at work
    - What the broker checks before a value moves.
    - "What never leaves the broker Keys, and the values they protect."
    - Install in 2 minutes
    - Give an agent a credential in 3 steps
    - Questions
    - "Give your agents a broker, not a vault"
  faqs[5]{question,answer}:
    Can an agent ever read a value?,"No. The agent socket has no operation that returns plaintext. A human can, with twadmin reveal over SSH and a reason that is logged."
    Are there one-time shares for clients?,"Designed for the next version, not built yet: one secret per link, burned after one reveal, with a copy-and-confirm receipt."
    Does it sync between machines?,"Today one broker serves one machine. The design adds an opt-in cloud broker that exchanges only ciphertext, and later a tailnet transport."
    Will it sync with Bitwarden or 1Password?,"No two-way sync, by design. There is a one-way import from Bitwarden, run by a human from a names-only manifest."
    What does it not protect against yet?,A hostile process running as the same OS user. Today's version stops accidents and records honest use; the next runs the broker as its own user.
  guide: /guide.agent
  support_llms: /support/llms.txt
  support_agent: /support/agent.md
@actions
  - id: install_titanwarden
    method: GET
    href: /#setup
  - id: read_guide
    method: GET
    href: /guide/
  - id: email_support
    method: GET
    href: mailto:help@myagents.email
@context
  > Use, never see: agents run commands with the value injected and never read it. Open source, Python, installed in 2 minutes.
  > Titanwarden is an open-source secret broker for machines where AI agents work. Agents run commands with the value injected and never read it. Python, one encrypted store, installed in two minutes.
  > Titanwarden is made by Titanium Computing in Texas and is part of the Frontier Infra family of open agent-web building blocks.
@nav
  self: /.agent
  parents: []
  peers: [/guide.agent]
