
SysKnife
io.github.lacs-project由 GitHub 帳號 lacs-project 發布v0.30.0更新於 Nov 3, 2026
Administers Linux via typed, approval-gated actions with an Ed25519-signed audit trail.
概覽
Linux 系統管理 MCP 伺服器:把自然語言請求轉成帶風險等級的強型別計畫,由特權守護程式在你於終端核准後執行。
- 可以做什麼
- 用自然語言規劃系統變更,產生帶風險等級與交易 ID 的強型別步驟
- 憑一次性回執執行已核准的步驟
- 從簽章稽核日誌讀取歷史執行紀錄並驗證 Ed25519 稽核鏈
- 檢查守護程式、模型供應商與稽核鏈的健康狀態
- 執行依發行版篩選的唯讀查詢,例如磁碟使用量
- 適用情境
- 當你希望 AI 助理協助管理 Linux 主機(檢視狀態、安裝套件、重新啟動服務),又不想把 shell 交給它時適用。適合需要明確核准與可驗證稽核紀錄的情境。
- 執行需求
- 需要本機 Linux 主機(已驗證 Ubuntu LTS;Fedora Atomic 與一般 Fedora 仍屬實驗性),並安裝並執行 SysKnife 守護程式。安裝精靈需要 Node 22 或更新版本;手動編譯需要 Rust stable 與 C 編譯器。規劃器需設定 LLM 供應商與金鑰(Ollama 不需金鑰)。僅在非預設 socket 或遠端 VM 時才需設定 SYSKNIFE_SOCKET。變更類操作需要系統層級守護程式服務及對應角色群組成員身分。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 SysKnife,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
SysKnife
The Linux sysadmin MCP server. Plan. Approve. Audit.
[CI] [License] [Stars] [Issues] [Discussions] [npm version] [Glama MCP server quality score] [Rust test count, read from the recorded baseline] [Frontend test count, read from the recorded baseline]
Distros [Ubuntu 20.04 and later supported] [Ubuntu 22.04, 24.04 and 26.04 VM validated] [Fedora Atomic 41 and later eligible but not VM validated]
MCP server · Install · How it works · Why not X? · Distro matrix · Roadmap · Contribute · Discuss
A deterministic reproduction of the Claude Code MCP flow on Ubuntu 24.04, rendered offline by
ubuntu-flow-mock.sh so it replays identically from a
fresh checkout. Every action name, risk level and command shown is the one the catalogue
carries. The same flow works in Cursor and Codex CLI.
On an atomic host the plan uses rpm-ostree instead:
the Fedora Atomic recording.
Looking for the standalone CLI? See the CLI guide.
Describe what you want in plain language. Review a typed plan with risk levels. Approve explicitly. Watch it execute with live output. Atomic-host changes (rpm-ostree) roll back automatically on failure. Every action is Ed25519-signed and audited.
The AI never supplies a command. Every action is a typed operation with a
formal risk level, and the daemon builds the command line itself from the
action's own definition — some actions do run through sh -c, but the shell
fragment is constructed by SysKnife, never by the model. The AI cannot touch
your system directly. A privileged daemon executes only what you approve, writes
a tamper-evident Ed25519-signed audit chain, and rolls back atomic-host
(rpm-ostree) changes automatically on failure.
Why typed actions and not a guarded shell? Red-team research (GuardFall) found that 10 of 11 AI agents bypass raw-string shell guards — an allowlist or regex is filtering a language rich enough to hide intent. SysKnife removes the shell string entirely: the model emits typed actions, and a public-key-verifiable audit chain records every one.
MCP server
SysKnife is an MCP server first. Point Claude Code, Cursor or Codex CLI at it and your assistant gets typed, risk-classified sysadmin tools in place of a shell:
One command wires the server into your client and installs the daemon. Install has the detail, and MCP protocol has the wire behaviour.
Your assistant cannot approve its own work. sysknife_plan hands back a
transaction ID and stops there. The receipt sysknife_execute demands comes
from sysknife approve <transaction-id>, typed in your terminal, on a channel
the model does not sit on. Missing, expired, mismatched and replayed receipts
are all refused.
Prefer to stay in the shell? The CLI is the same engine with no client in front of it.
Install
The fastest path is the setup wizard. It installs the daemon and wires SysKnife into your AI IDE — Claude Code, Cursor, or Codex CLI — so you can plan and execute from chat.
Needs Node 22 or newer; older Node releases no longer receive security fixes.
On Ubuntu 22.04 apt install nodejs gives Node 12, which is too old; the installer
says so and how to get a current Node. No Rust
toolchain and no compile: it downloads verified prebuilt binaries.
What this does:
-
Downloads the prebuilt
sysknife+sysknife-daemonbinaries for your architecture (x86_64 / aarch64) from GitHub Releases, SHA-256-verifies each against the release checksum file — a mismatch aborts the install — and places them in~/.local/bin(no sudo). Pass--no-binaryto skip the download and build from source instead. -
Asks for your LLM provider, key, and model — OpenAI / Anthropic / Gemini / Ollama / Groq / DeepSeek / Mistral / xAI (Ollama needs no key). The key prompt is skipped when the matching env var is already set.
-
Asks which AI integration to wire up (or pick
--claude/--cursor/--codex/--all) and your daemon target(s) — socket, plus an optional vsock token for a remote VM. -
Writes the integration-specific MCP config (merging into any existing file, never clobbering) so the next chat session sees the
sysknife_*tools —sysknife_plan,sysknife_execute,sysknife_history,sysknife_doctor,sysknife_audit_verify, and distro-compatible direct read-only queries such assysknife_get_disk_usage— as first-class tools. -
Installs and starts the daemon as a service (last step) — a systemd user service by default (no sudo; kept alive across logout via linger). That service runs as you, so read-only actions work but mutating ones do not: installing packages or restarting services needs the system-level service, whose sudoers grants belong to the
sysknifesystem user. Pick the system service on any host where you intend to change something, and pass--daemon-mode=system|user|skipto choose without a prompt.--daemon-mode=systemdoes not install the system service from the wizard — it needs root-owned sudoers, polkit and helper policy thatsudo make installowns — so it prints the exact sequence and reports the daemon as not yet installed.To verify the download against a checksum list you trust independently of the release, set
SYSKNIFE_PINNED_SHA256SUMS=/path/to/sums; see SECURITY.md.
To check where a release binary was built, download it from the release page and
run gh attestation verify sysknife-vX.Y.Z-linux-x86_64 --repo lacs-project/sysknife.
It succeeds only if the file matches a provenance statement GitHub signed for a
build of this repository by release.yml. Each release also ships that
provenance as sysknife-vX.Y.Z-linux-<arch>.intoto.jsonl, so the same check works
with --bundle; see Verify the published release.
Then in your chat: ask for what you want and review the plan with risk pills.
Approve each transaction with sysknife approve <transaction-id> in a
terminal, return the one-time receipts, and watch it execute. The daemon, not
the prompt, enforces the receipt boundary.
Prefer the standalone CLI? Same engine, no IDE — see the CLI guide for
sysknife "...",--dry-run,--json, approval prompts, and audit-log inspection.
Manual install — Ubuntu 20.04+
Needs Rust stable and a C compiler (build-essential): the TLS and SQLite
dependencies build native code, so a rustup-only machine stops at
error: linker cc not found. cmake is not required. Budget 7 to 12
minutes for the ~400-crate build (6m56s on Ubuntu 24.04, 11m43s on 22.04).
Uninstall
Whichever way you installed, there is one command for it.
Your audit history is kept by default. Removing the software should not
destroy the record of what it did, so the audit database, the safety-audit log
and ~/.config/sysknife are left in place and their paths printed. Delete those
too, only if you mean to, with:
If you installed the system service with sudo make install, remove it with
the Makefile that owns its sudoers grants, polkit rules and privileged helpers.
--uninstall deliberately will not touch those, because half a removed
privilege boundary is worse than none:
All three Ubuntu LTS releases record a live-VM run of 79 stories from the Ubuntu
suite (which has since grown to 90+), and each run has a replay twin that reproduces it: 22.04, 24.04 and 26.04
all at 79/79, every twin serving every call with zero misses. The runs are in
tests/evidence/story-runs/. The suite grew from 50 when every Debian-only
action got a story, GetHostState first.
Fedora Atomic is the rpm-ostree target; make install does not complete on
rpm-ostree yet (#301), and
a release needs a current Silverblue 44 VM run before it counts as validated. Plain Fedora Workstation and
Server remain experimental until the dnf action family ships. See the
distro support matrix for evidence and scope.
Dry run — plan only, nothing executes
Prefer the terminal? The CLI is a first-class path
Same engine, no IDE and no MCP client — plain language to a typed plan to live
execution, straight from your shell, with --dry-run, --json, --yes up to a
risk ceiling, and sysknife audit verify. This is a fully supported way to run
SysKnife, not an afterthought. See the CLI guide.
[sysknife CLI — plan, approve, and execute in the terminal]
A deterministic reproduction of a real planning and execution session, rendered offline by demo-mock.sh. Live LLM calls are nondeterministic and the tape has to render with no daemon or provider configured, so the recording is scripted rather than captured; the output styling is generated from the same code paths as the real CLI.
Also: a desktop GUI — development paused. An experimental Tauri desktop app (
sysknife-shell) wraps the same plan → approve → execute loop in a window. Its development is paused for now, and effort is going to Ubuntu across its supported versions instead. The code stays in the tree and still builds, but it is not being reviewed, tested, or extended, so reach for it only if you specifically want a graphical approval flow and can live with that. The MCP integration and the CLI are the maintained surfaces.
How it works
The approval gate is a surface, not a component, and it depends on how you reach SysKnife:
- MCP: a plan from an AI client needs a receipt from
sysknife approve <transaction-id>, typed in your terminal, so the client cannot approve its own plan. - The standalone CLI:
sysknife "<intent>"asks about each step at its own prompt, or approves up to--max-riskunder--yes. It never callssysknife approve. - An agent with a shell on your account can drive the CLI by itself. In that case the daemon's role limits (SECURITY.md, layer 3) are the boundary that holds.
The paused Tauri GUI (sysknife-shell) is a third implementation of the gate,
not a step the other two route through.
- You type a natural-language request.
- The brain proposes a plan — each step is a typed action with
a risk level (
Low·Medium·High). - The shell shows the plan with previews, side-effects, and rollback metadata.
- You approve each step explicitly (or set
--yesup to a risk ceiling). - The daemon executes, streams live output, and rolls back atomic-host (rpm-ostree) changes automatically on failure.
- Every execution is logged to a hash-chained SQLite or Postgres audit
trail you can verify with
sysknife audit verify.
The brain proposes; only the daemon is privileged. The daemon enforces policy, executes typed actions, writes the signed chain, and triggers atomic-host rollback (rpm-ostree) on failure. The trust boundary is mechanical: no shell strings cross the wire.
Why not just X?
SysKnife is different by construction: typed actions, an Ed25519-signed audit chain, explicit approval gate, automatic rollback for atomic-host (rpm-ostree) changes, a privilege boundary scoped per action across sudo and polkit. The AI never holds a shell. See the full SysKnife vs. alternatives breakdown (AIShell-Gate, gate-oc-audit, MCP gateways, generic mcp-shell).
Status
The trust chain is built, tested, and shipping. Multi-distro is the active milestone.
2,000+ Rust tests and 70+ frontend tests form the current deterministic release baseline.
Configure your LLM
SysKnife works with Ollama (no key, recommended for privacy / offline / homelab) or OpenAI, Anthropic, Gemini, Groq, DeepSeek, Mistral, xAI.
Env vars always win over the config file. Full reference in
docs/configuration.md.
MCP protocol
SysKnife implements the Model Context Protocol
and exposes approval-gated planning and execution tools. sysknife_plan
returns a daemon-issued transaction ID for each step. After reviewing the
plan, the user runs sysknife approve <transaction-id> in a real terminal and
gives the one-time receipt to the agent. sysknife_execute rejects missing,
expired, mismatched, or replayed receipts. The MCP server cannot mint approval
receipts itself.
Use the setup wizard (above) to wire it into Claude Code, Cursor, or Codex CLI.
All config files that may contain API keys are created with chmod 0600.
Roadmap
See ROADMAP.md for the full milestone breakdown.
- ✅ Ubuntu 22.04 — 79/79 stories on a live VM (recorded in
tests/evidence/story-runs/) - ✅ Ubuntu 24.04 and 26.04 — 79/79 and 79/79 on live VMs; every LTS run has a replay twin that reproduces it
- ✅
sysknife audit export— stored signed chain rows as JSON with--since/--limit - 📋 Telegram inline-button approvals
- 📋 CEF / NDJSON output modes for SIEM ingest
- 📋 Fleet plan/execute (one plan, N targets, parallel approval)
Protocol
SysKnife is the reference implementation of the LACS (Linux Agent Control Standard) protocol — typed actions, risk classification, approval gates, audit requirements. The spec is CC0 (public domain):
Other implementations for other distros and languages are explicitly encouraged.
Contributing
We want help. Multi-distro is the highest-impact area to plug into right
now — see docs/distro-support.md for the
roadmap matrix and CONTRIBUTING.md for the workflow.
Issues labelled
good first issue
are scoped with clear acceptance criteria.
Thanks
Patches so far from @ITSMERNB, @QinXi-ai, @Osheun, @danial-razi, @vsolano9 and @Georgefifth. Every release names who fixed what in CHANGELOG.md.
If you send a patch, watching
Releases is the quickest way
to see it ship and to catch new good first issue entries as they land. A star
helps other people find the project.
Documentation
- Typed actions — why never a shell string
- Action reference — every action, generated from the code
- The audit chain — Ed25519, public-key verifiable
- Automatic rollback
- SysKnife vs. alternatives
- Architecture overview
- Distro support matrix
- Configuration
- Audit storage and recovery
- Developer guide
- Testing guide
- VM daemon setup
- Security policy
- Release readiness checklist
- Roadmap
- ADR 0001 — System boundaries
- ADR 0002 — Brain provider layer
- ADR 0003 — IPC wire protocol
Where to find SysKnife
License
MIT. Free to use, modify, distribute, and embed in proprietary products without restriction.
The LACS specification is CC0 1.0 — public domain.
Built by Vladimir Rotariu. · Issues, ideas, war stories — come say hi.
來源:README.md,提交 093436f
工具
0版本歷史
13- v0.30.0最新Nov 3, 2026
- v0.29.0Oct 29, 2026
- v0.26.1Oct 25, 2026
- v0.26.0Oct 22, 2026
- v0.25.0Oct 1, 2026
- v0.24.0Sep 29, 2026
- v0.23.0Sep 29, 2026
- v0.22.0Sep 23, 2026
- v0.21.0Sep 23, 2026
- v0.20.1Sep 23, 2026
- v0.20.0Sep 22, 2026
- v0.18.0Sep 22, 2026
- v0.16.0Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分