Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

server-watcher

server-watcher (binary sw) is ssh-config-driven server infrastructure management for a single operator. It reads the user's ~/.ssh/config, keeps a host catalog in SQLite, probes and collects metrics through the system ssh binary, and exposes the fleet three ways: a local web dashboard with an in-browser terminal (sw serve / sw ui), a REST API, and a stdio MCP server for LLM agents (sw mcp).

What is documented here

  • Architecture — the design document: workspace layout (eight crates), run modes, the system-ssh reuse decision, the localhost trust model, storage, the write-path overview, and the frontend/desktop shell.
  • Design Intent Review — a conformance review of the implementation against every intent claim in the architecture document, with evidence, performed after Phase 6 completion.
  • Write Path and Audit Contracts — the round-2 mutation surface: bidirectional ssh-config editing (stanza splicing, diff preview, optimistic concurrency, atomic writes), SSH key management (scan/generate/delete/deploy), the audit log rules, the stale-host purge policy, and the 16-tool MCP surface.

Key properties

PropertyChoice
Source of truth~/.ssh/config — imported by sync; user-owned fields (tags, notes, groups) survive re-sync; the app edits it back through the stanza-splicing write path
SSH transportthe system ssh binary (no embedded SSH library, no second credential store)
Trust modelloopback-only bind + bearer token on every non-asset request
Storageone SQLite file, WAL mode, compile-time-embedded migrations, runtime-checked queries
Auditabilityappend-only audit log for every config/key/purge mutation, tagged api/mcp
StackRust 2024 edition, tokio, axum 0.8, sqlx 0.8, clap 4.5, Leptos CSR UI, Tauri v2 shell
Toolchainpinned Rust (1.93.1) and trunk (0.21.14); committed UI dist so CI never runs trunk