bearer token when AGENTLOCK_AUTH=password (env: AGENTLOCK_TOKEN)
+```
+
+- **Live ledger tail** — events stream in over SSE
+- **Sessions** — open sessions with their signer tier and policy hash
+- **Loaded gates** — the gates the daemon currently evaluates
+- **Mode flip** — one keypress to toggle the daemon between `monitor` and `enforce`
+
+Rule edits and the MCP pin queue still live on the web dashboard.
-The TUI on your terminal is for setup. Once installed, you should not see it during your agent loop. Approval prompts in the hot path are user-hostile; we keep them out of the agent's flow on purpose.
+## Why two surfaces
-The web dashboard is where you spend time *between* agent sessions: reviewing what the agent did, tightening rules, and resolving MCP pin requests.
+Approval prompts in the hot path are user-hostile, so neither surface sits in the agent's flow. Both are where you spend time *between* agent sessions: reviewing what the agent did, tightening rules, and resolving MCP pin requests. The web dashboard is the full admin UI; the terminal dashboard is for when you'd rather not leave your shell.
## Access
diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md
index 1c582c0..956306f 100644
--- a/docs/guide/getting-started.md
+++ b/docs/guide/getting-started.md
@@ -118,7 +118,7 @@ Then pick a signer tier and run `install`. Two recommended paths:
Pick the harnesses to harden, review the diff, confirm. The installer writes harness-specific configuration (e.g. `~/.claude/settings.json` hook entries, `~/.codex/hooks.json`, plus `codex_hooks = true` in `~/.codex/config.toml` — auto-set on first install, with a backup of the original) and registers a clean rollback path you can invoke later with `agentlock uninstall`.
-Open the dashboard at to watch live activity.
+Open the dashboard at to watch live activity. If you'd rather stay in the terminal, `agentlock dashboard` opens a TUI with the same ledger tail, sessions, gates, and monitor⇄enforce flip.
## What happens next
diff --git a/docs/index.md b/docs/index.md
index e708c8c..79e1c81 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -54,10 +54,10 @@ Rust crate. SHA-256 leaf hashing, Merkle root, inclusion proofs, verification. T
-#### Local web dashboard
-`127.0.0.1:7879`
+#### Dashboard
+`127.0.0.1:7879` · `agentlock dashboard`
-Read logs, author rules, watch live activity. Firewall-admin shape.
+Read logs, author rules, watch live activity. Web SPA at `:7879`, or a terminal TUI via `agentlock dashboard`.
diff --git a/docs/status.md b/docs/status.md
index 2ee6afa..7dfc43b 100644
--- a/docs/status.md
+++ b/docs/status.md
@@ -8,8 +8,9 @@ Live status of every component shipped to the public repo. Shipped |
| `agentlock install` (Claude Code, Codex CLI, Cursor, Gemini CLI) | Shipped |
+| `agentlock install` (Claude Desktop) | Shipped — wraps every MCP server entry through `agentlock mcp-proxy` so each `tools/call` goes through daemon policy. Both install paths covered: (a) manual `mcpServers` entries in `~/Library/Application Support/Claude/claude_desktop_config.json` (originals preserved under `_agentlock_original`); (b) Desktop Extensions installed via *Settings → Extensions* UI — each per-extension bundle manifest at `Claude Extensions//manifest.json` is rewritten in place using the schema-blessed `_meta.agentlock` slot (MCPB v0.3+), with `manifest_version` bumped from 0.1/0.2 → 0.3 when needed so the slot validates. Originals stashed under `_meta.agentlock.original_*` for byte-clean restore. **Caveat:** Anthropic auto-updates overwrite the wrap on extension version bumps — re-run `agentlock install` after extension updates (a watcher closes this gap; tracked separately). Other surfaces remain out of scope: Computer Use, integrated terminal, native connectors (Slack/GCal), Cowork's non-MCP paths, server-side cloud features. For full local enforcement of an agent harness, use Claude Code. Tracks [anthropics/claude-code#45514](https://github.com/anthropics/claude-code/issues/45514) for native PreToolUse parity. |
| `agentlock install` (OpenCode, Cline, Continue, VS Code Copilot) | Not yet implemented — detected but disabled in selector |
-| `agentlock install` (Claude Desktop, Codex Desktop, Openclaw, Nemoclaw, Hermesagent, Pi) | Not yet implemented — roadmap; awaiting per-app hook/config investigation |
+| `agentlock install` (Codex Desktop, Openclaw, Nemoclaw, Hermesagent, Pi) | Not yet implemented — roadmap; awaiting per-app hook/config investigation |
| `agentlock install --tier {unattested,software,totp}` | Shipped |
| `agentlock status` | Shipped |
| `agentlock signer enroll --tier totp` | Shipped |
@@ -17,6 +18,8 @@ Live status of every component shipped to the public repo. Not yet implemented |
| `agentlock session create / rotate / end` (software, totp) | Shipped |
| `agentlock hook claude-code / codex / cursor / gemini ` shims | Shipped |
+| `agentlock mcp-server` (Claude Desktop MCP stdio server, read-only) | Shipped — exposes status + ledger query tools |
+| `agentlock mcp-proxy` (Claude Desktop tools/call gate) | Shipped — sits between Desktop and each user MCP server, fail-open on daemon-down |
| `agentlock ledger root / verify` | Shipped |
| `agentlock fake-hook` (eval / scenario harness) | Shipped |
| `agentlock dashboard` (open local web dashboard) | Shipped |
@@ -38,6 +41,7 @@ Live status of every component shipped to the public repo. Shipped |
| `/v1/hooks/cursor/*` | Shipped |
| `/v1/hooks/gemini/*` | Shipped |
+| `/v1/hooks/claude-desktop/*` | Shipped — called by `agentlock mcp-proxy`, not by Claude Desktop directly |
| `/v1/auth` (password) | Shipped |
| `/v1/auth` (OIDC) | Not yet implemented — stub returns mode hint |
| `/v1/auth` (LDAP) | Not yet implemented — stub returns mode hint |
diff --git a/mkdocs.yml b/mkdocs.yml
index 23b1c51..daa503f 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -109,7 +109,7 @@ nav:
- Policies and rules: guide/policies.md
- Signers: guide/signers.md
- The ledger: guide/ledger.md
- - Local web dashboard: guide/dashboard.md
+ - Dashboard: guide/dashboard.md
- Isolation: guide/isolation.md
- MCP: guide/mcp.md
- Threat model: guide/threat-model.md