bw-proxy
# ๐ BW-Proxy โ Sovereign Bitwarden Appliance
> **Zero Trust ยท AI-Blind ยท ACID Durable**
> The authoritative appliance for Bitwarden organization vault control. Keep AI agents and LLMs blind to your real secrets while giving them full auditing and refactoring powers.
---
## ๐๏ธ Project Architecture (Sovereign Tree)
```ascii
BW-PROXY PROJECT
โโโ ๐ src/bw_proxy/ โโโ Core Engine (ACID Transaction, WAL, Redaction)
โโโ ๐ scripts/ โโโ Host-side Shims (Dynamic porting, Browser HITL)
โโโ ๐ docs/ โโโ Deep-dive Hardening & Operator Guides
โโโ ๐ install.sh โโโ System-wide Appliance Installer (Root-owned)
โโโ ๐ Makefile โโโ Developer & Release Automator
โโโ ๐ Dockerfile โโโ Multi-stage Hardened Runtime
```
---
## ๐ Installation Modes
### A. Appliance Mode (Standard Pro)
Ideal for production use. Installs a root-owned binary and uses the official image.
**Via curl (Zero-Clone):**
```bash
curl -fsSL https://raw.githubusercontent.com/KpihX/bw-proxy/main/install.sh | sudo bash
```
**What it does internally:**
1. **Image**: Pulls `ghcr.io/kpihx/bw-proxy:latest`.
2. **Binary**: Creates `/usr/local/bin/bw-proxy` (owned by root).
3. **Config**: Creates `/etc/bw-proxy/`.
4. **Data**: Creates a persistent Docker volume `bw_mcp_bw-data`.
---
### B. Developer Mode (Source Clone)
Ideal for contribution or source-level auditing.
```bash
git clone https://github.com/KpihX/bw-proxy.git
cd bw-proxy
make docker-install # Requires SUDO for builds
```
---
## โ๏ธ Core Mechanisms (The Magic)
### 1. The HITL Browser Flux
When an AI agent requests a vault change, the proxy intercepts the execution:
1. **Port Allocation**: The host shim finds a free random port.
2. **Container Launch**: The appliance starts, mapping the internal HITL server to that port.
3. **URL Interception**: The shim detects the Approval URL in stdout and **automatically opens your browser**.
4. **Human Approval**: You review the rationale and the diff, then approve with your Master Password.
### 2. The 3-Phase ACID Commit (WAL)
Every mutation is transactional.
- **Simulation**: Actions are validated in RAM first.
- **WAL**: Actions are encrypted and logged to disk *before* execution.
- **Commit**: Actions are sent to the Bitwarden CLI.
- **Rollback**: If a crash occurs, the proxy performs a LIFO rollback on the next start.
### 3. Scoped Union Fetch
To handle organizational vaults without metadata loss:
- The proxy discovers all accessible **Organizations** and **Collections** first.
- It then performs scoped queries (`--organizationid`) to fetch "rich" items with full metadata.
- It merges results with the global vault list, ensuring organizational assignments are preserved.
---
## ๐น๏ธ Interface Modes
### 1. CLI Mode (Recommended for Humans & AI Agents) ๐
The CLI is the most efficient and agnostic way to interact with the appliance. It uses RPC 2.0 (JSON), supports exact examples, and provides rich help documentation.
**For AI Agents:** Using the CLI via `run_command` is more token-efficient than MCP and offers greater flexibility.
```bash
bw-proxy admin status # Health check
bw-proxy admin unlock # Create a 5-minute session lease
bw-proxy do list-items # Quick redacted scan
```
> [!TIP]
> **AI Integration**: To enable full AI recognition of these commands, copy the `.agents/skills/bw-proxy` directory to your global `~/.agents/skills/` or into a project-specific `.agents/skills/` directory.
### 2. MCP Mode (Standard Stdio)
Start the stdio server for standard MCP clients like Gemini, Claude, or Cursor.
```bash
bw-proxy mcp serve
```
---
## ๐ ๏ธ Maintenance & Release
- **Update**: `curl ... | sudo bash` (re-runs the installer).
- **Uninstall**: `sudo ./uninstall.sh`.
- **Release (Dev)**: `make release` (automatic tagging and GHCR propulsion).
---
## โ๏ธ License
MIT License. See `LICENSE` for details.
Designed with โค๏ธ by **KpihX**.
TDQS
Scored across 10 tools
Multiple tools focus on finding duplicates (find_all_vault_duplicates, find_duplicates_batch, find_item_duplicates) with unclear scope distinctions. Without descriptions, an agent would likely struggle to choose between them.
Naming patterns are inconsistent: some start with 'find', some with 'get', others with different verbs (compare, inspect, propose, refactor). The placement of 'batch' varies, and there is no consistent verb_noun structure.
10 tools is a reasonable count for a specialized secret management proxy. It covers a variety of operations without being excessive, though some categories are overrepresented.
The tool set lacks basic CRUD operations (create, read, update, delete) for items or vaults. Advanced operations like proposing transactions and refactoring are present, but foundational actions are missing, leaving significant gaps.