AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
Self-hosted remote administration and fleet monitoring for Windows PCs in a family setting, operated through Claude (MCP) and a web dashboard.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Self-hosted remote administration and fleet monitoring for Windows and Linux, driven by Claude (MCP) and a web dashboard.檢視完整 README ↗Self-hosted remote administration and fleet monitoring for Windows and Linux, driven by Claude (MCP) and a web dashboard.
kenny administers a small fleet of Windows and Linux machines from one place: pushed telemetry with server-side health rules and alerting, capability tools that act on a host, account governance, a web filter and screen time, and a ticket queue the people who use those machines can open themselves. Operate it through Claude over MCP, through the built-in chat, or by hand in the console. It is for the machines you administer, with the consent of the people who use them — family PCs, a home lab, a small office.
flowchart LR
Operator(("Operator"))
Claude["Claude<br/>(local client, optional)"]
subgraph Server["kenny-server (cloud)"]
UI["Dashboard + Chat"]
MCP["MCP endpoint /mcp"]
Tunnel["Agent tunnel /agent/ws"]
Store[("Telemetry store<br/>SQLite")]
end
Agent["kenny-agent (Windows / Linux host)<br/>PowerShell / shell · winget · systemd<br/>filesystem · screenshot · collectors"]
Operator -->|https dashboard + chat| UI
Operator --> Claude -->|MCP, OAuth| MCP
UI --> Tunnel
MCP --> Tunnel
Tunnel <-->|WSS, agent dials out| Agent
Agent -->|telemetry push| Store
Store --> UI
Five destinations: Today (a landing page with one verdict sentence and at most three
items ranked by consequence), Fleet (card grid with per-host drill-down to full
telemetry detail, health trend, changes & forecast, and the last screenshot), Inbox
(approvals, flagged sections, and tickets in one queue), Log (filtered stream of tool
calls, alerts, and events), and Admin (settings, users, updates). Ask kenny is a
global overlay (⌘K) with server-hosted Claude chat, saved history, and a confirm-gate on
state-changing tools. Parental controls include web-activity monitoring, per-host web
filter, and screen time. Action buttons: refresh, remote help (Quick Assist), reinstall,
re-share, update agent; onboard a new PC from Add a PC (installer / share link).
Single-page, dependency-light; dark & light themes; cookie login at /login.
The Today dashboard — see the dashboard reference for the full tour.
powershell_exec (Windows) · shell_exec (Linux/macOS)winget_list · winget_install · winget_uninstall · winget_updatefs_list · fs_search · fs_read · fs_disk_usagediag_processes · diag_services · diag_eventlog · diag_autostartnet_config · net_dns_flush · net_adapter_resetscreen_capture · Remote help: remotehelp_status · remotehelp_start ·
remotehelp_stop (Quick Assist concierge) · Telemetry: telemetry_collect ·
Agent mgmt: agent_updatewebfilter_status · webfilter_apply · webfilter_clear (+ server-only
webfilter_get · webfilter_set · webfilter_push · web_activity_query)list_agents · select_agent · fleet_overview ·
agent_health · agent_snapshotwinget_*, Defender, BitLocker) answer unsupported there, and the
server refuses a wrong-OS call before it reaches the wire.@mentions it and kenny opens a private thread that behaves as a ticket,
diagnosing on that person's own PC and keeping a paraphrased record you read in the new
Tickets tab.standard_change steps (flush DNS,
open remote help) run autonomously with a trail row, everything else holds for your
operator approval — while the dashboard chat still confirms both change tiers exactly
as before. Privacy-sensitive tools (screen, files, browsing history) additionally need the
affected person's own consent, a separate axis from authorization./link + your confirmation, or you pick them from the guild
member list directly) and an optional per-account capability profile that narrows
which tools it may use. An alert can open a ticket too. See
Tickets & the Discord bot./mcp (FastMCP Streamable HTTP), connected via the built-in OAuth 2.1
flow (add-custom-connector → sign in → consent); a per-user access token works for clients that
can't do OAuth.claude-sonnet-4-6).powershell_exec/
shell_exec, winget writes, net_dns_flush/adapter_reset, remotehelp_start/_stop,
agent_update) require explicit operator confirmation.install.bat
carrying the server URL, agent id, and a freshly minted token./d/…) for the target user — no operator login needed.install / uninstall / run-service) via the
windows-service crate, auto-start with restart-on-failure recovery.agent_update): download → SHA‑256 verify → staged swap with
rollback → service restart; the agent reconnects on the new version.PROTOCOL_VERSION 0.10) with golden fixtures
round-tripped by both sides; request/response correlation, ping/pong heartbeat, and
exponential-backoff reconnect.Secure
flag under TLS, optional TOTP 2FA.register, and (from v0.8) with mutual Ed25519 identities — the agent pins the server's
public key and signs its handshake, enrolled one-time at install (rotation grace windows for both).wss), confirm-gate for destructive actions, and a tool-call audit log.docs/protocol.md + docs/fixtures/), ADRs (MADR) for every significant
decision, and Claude Code skills/commands + subagents for repeatable changes.The full docs site: https://nullthrone.github.io/kenny/ (built from docs/ with MkDocs Material).
# Server (Docker Compose): dashboard, MCP endpoint, agent tunnel on one port
cp .env.example .env # set KENNY_OPERATOR_TOKEN etc. (see docs/setup.md)
docker compose up -d
Then open the dashboard, use Add a PC to download an installer for each Windows machine. Full details — TLS, environment variables, building the agent — are in docs/setup.md.
# server
cd kenny-server && pip install -e ".[dev]" && pytest
# agent (builds on Linux too, via cfg fallbacks)
cd kenny-agent && cargo test && cargo build
Helper commands inside Claude Code: /new-adr, /add-tool, /add-collector,
/contract-check, /e2e, /security-review. See CONTRIBUTING.md.
kenny is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only). Because the server is network-facing, the AGPL's §13 means anyone who runs a modified kenny as a service must offer its source to users.
Both components are implemented against the contract: capability tools, telemetry collectors +
health rules, the fleet dashboard, a server-hosted Claude chat (with a confirm-gate for
state-changing tools), operator + agent auth (token store with rotation), the Windows service +
server-triggered self-update, agent installer download, Docker/Compose, and a GHCR release
workflow. Runtime-only Windows behaviors (service control, live self-update swap, Quick Assist)
are compile-verified via cross-build and the Windows CI job; real-hardware verification, TLS
hardening, and code-signing are operational follow-ups (see docs/adr/).