SysKnife について
SysKnifeは、AIによるLinux管理に人間の明示的な承認を組み込みたい人向けのMCPサーバーです。要求を型付き・リスク分類済みの操作に変換し、別途ターミナルで承認してから実行し、Ed25519署名付き監査チェーンに記録します。
主な機能
- 01型付き・リスク分類済みの管理計画
- 02ターミナルでの個別承認レシート
- 03特権デーモンによる実行
- 04Ed25519署名付き監査履歴
- 05監査チェーンの検証
- 06ディストリビューション対応の読み取り専用クエリ
活用シーン
- 01パッケージやサービス変更案の作成と確認
- 02ターミナルで個別のシステム変更を承認
- 03監査ログで過去の実行を確認
- 04記録された操作の完全性を検証
MCP 対応
MCPクライアントに計画、実行、履歴、状態確認、監査検証、読み取り専用のシステム照会ツールを提供します。実行にはターミナルで別途取得する一回限りのレシートが必要で、クライアント自身は計画を承認できません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SysKnife
Linux システム管理者向け MCP サーバー。計画し、承認し、監査します。
ディストリビューション
MCP サーバー · インストール · 仕組み · X ではだめなのか? · ディストリビューション一覧 · ロードマップ · 貢献する · ディスカッション
Ubuntu 24.04 上の Claude Code MCP フローを決定論的に再現し、
ubuntu-flow-mock.shによってオフラインで実行します。
新しくチェックアウトした状態からでも、毎回まったく同じように再生されます。表示されるすべてのアクション名、リスクレベル、コマンドは、カタログに登録されたものです。同じフローは Cursor と Codex CLI でも動作します。
アトミックホストでは、代わりに rpm-ostree を使って計画を実行します。
Fedora Atomic の録画をご覧ください。
スタンドアロンの CLI をお探しですか?CLI ガイドをご覧ください。
平易な言葉で、やりたいことを説明してください。 リスクレベル付きの型付きプランを確認し、明示的に承認します。実行中はリアルタイムの出力を確認できます。アトミックホストでの変更(rpm-ostree)は、失敗時に自動的にロールバックされます。すべてのアクションに Ed25519 署名が付与され、監査されます。
AI がコマンドを指定することはありません。すべてのアクションは、正式なリスクレベルを持つ型付き操作です。デーモンがアクション自体の定義に基づいてコマンドラインを構築します。一部のアクションは sh -c を介して実行されますが、シェルの処理内容を構築するのは SysKnife であり、モデルではありません。AI がシステムに直接触れることはできません。特権デーモンは、承認された操作だけを実行し、改ざんを検知できる Ed25519 署名付き監査チェーンに記録し、失敗時にはアトミックホストでの変更(rpm-ostree)を自動的にロールバックします。
なぜガード付きシェルではなく、型付きアクションなのですか? レッドチームの調査(GuardFall)では、11 個の AI エージェントのうち 10 個が、文字列をそのまま使うシェルガードを回避することが判明しました。許可リストや正規表現では、意図を隠せるほど表現力の高い言語をフィルタリングすることになります。SysKnife はシェル文字列を完全に取り除きます。モデルが出力するのは 型付きアクションであり、 公開鍵で検証可能な監査チェーンが、すべてのアクションを記録します。
MCP サーバー
SysKnife は、まず MCP サーバーとして設計されています。Claude Code、Cursor、Codex CLI から接続すると、アシスタントはシェルの代わりに、型付きでリスク分類されたシステム管理ツールを利用できます。
| ツール | 機能 |
|---|---|
sysknife_plan | 平易な言葉による指示を、リスクレベル、解決済みコマンド、デーモンのトランザクション ID を含む型付きステップに変換します |
sysknife_execute | 1 回限りのレシートが付与されたステップだけを実行し、それ以外は実行しません |
sysknife_history | 署名付き監査ログから過去の実行履歴を読み取ります |
sysknife_doctor | デーモン、プロバイダー、監査チェーンの状態を報告します |
sysknife_audit_verify | Ed25519 チェーンをたどって、完全性を確認します |
sysknife_get_disk_usageなど、読み取り専用カタログの残りのツール | 使用中のディストリビューションに合わせて選ばれた、直接照会するためのツールです |
npx sysknife-setup
1 つのコマンドで、サーバーをクライアントに接続し、デーモンをインストールできます。 詳細はインストールをご覧ください。ワイヤ上の動作についてはMCP プロトコルをご覧ください。
アシスタントが自分の作業を承認することはできません。 sysknife_plan はトランザクション ID を返して終了します。sysknife_execute が要求するレシートは、モデルが接続されていない経路で、ターミナルに sysknife approve <transaction-id> と入力して取得します。レシートがない場合、有効期限切れの場合、一致しない場合、再利用された場合は、いずれも拒否されます。
シェルでの操作を続けたいですか?CLIなら、クライアントを介さずに同じエンジンを使用できます。
インストール
最も簡単なのはセットアップウィザードです。デーモンをインストールし、SysKnife を Claude Code、Cursor、Codex CLI などの AI IDE に接続するので、チャットから計画と実行を行えます。
npx sysknife-setup
Node 22 以降が必要です。古い Node リリースには、セキュリティ修正が提供されなくなっています。Ubuntu 22.04 で apt install nodejs を実行すると Node 12 がインストールされますが、これは古すぎます。インストーラーがそのことと、最新の Node を入手する方法を案内します。Rust のツールチェーンもコンパイルも不要です。検証済みのビルド済みバイナリをダウンロードします。
実行される内容:
-
GitHub Releases からお使いのアーキテクチャ(x86_64 / aarch64)向けのビルド済み
sysknifeとsysknife-daemonのバイナリをダウンロードし、それぞれをリリースのチェックサムファイルと照合して SHA-256 検証します。不一致があればインストールは中止され、バイナリは~/.local/binに配置されます(sudo 不要)。ダウンロードを省略してソースからビルドするには、--no-binaryを指定してください。 -
LLM プロバイダー、キー、モデルを尋ねます。選択肢は OpenAI / Anthropic / Gemini / Ollama / Groq / DeepSeek / Mistral / xAI です(Ollama ではキーは不要です)。対応する環境変数がすでに設定されている場合、キーの入力は求められません。
-
接続するAI インテグレーション(または
--claude/--cursor/--codex/--allを選択)と、デーモンの接続先(ソケット、およびリモート VM 用のオプションの vsock トークン)を尋ねます。 -
インテグレーション固有の MCP 設定を書き込みます(既存ファイルにマージし、上書きはしません)。これにより、次のチャットセッションで
sysknife_plan、sysknife_execute、sysknife_history、sysknife_doctor、sysknife_audit_verify、およびsysknife_get_disk_usageなどのディストリビューション互換の読み取り専用クエリといったsysknife_*ツールが、標準のツールとして利用できるようになります。 -
最後の手順として、デーモンをサービスとしてインストールし、起動します。デフォルトでは systemd のユーザーサービスです(sudo 不要。linger によりログアウト後も稼働します)。 このサービスはユーザー権限で実行されるため、読み取り専用の操作は機能しますが、変更を伴う操作は機能しません。パッケージのインストールやサービスの再起動にはシステムレベルのサービスが必要で、その sudoers 許可はシステムユーザー
sysknifeに属します。変更を行う予定のホストではシステムサービスを選択してください。また、プロンプトを表示せずに選択するには--daemon-mode=system|user|skipを指定します。--daemon-mode=systemはウィザードからシステムサービスをインストールしません。root 所有の sudoers、polkit、ヘルパーポリシーが必要で、これらはsudo make installが管理するため、正確な手順を表示し、デーモンはまだインストールされていないと報告します。リリースとは独立して信頼しているチェックサムリストを使ってダウンロードを検証するには、
SYSKNIFE_PINNED_SHA256SUMS=/path/to/sumsを設定してください。SECURITY.md を参照してください。
リリースバイナリのビルド元を確認するには、リリースページからダウンロードし、gh attestation verify sysknife-vX.Y.Z-linux-x86_64 --repo lacs-project/sysknife を実行してください。このコマンドが成功するのは、GitHub が release.yml によるこのリポジトリのビルドについて署名した来歴ステートメントとファイルが一致する場合のみです。各リリースには来歴が sysknife-vX.Y.Z-linux-<arch>.intoto.jsonl としても同梱されるため、--bundle を使って同じ検証を行えます。公開済みリリースの検証を参照してください。
| クライアント | 書き込まれるファイル |
|---|---|
| Claude Code | .mcp.json + .claude/hookify.*.local.md |
| Cursor | .cursor/mcp.json + .cursor/rules/sysknife.mdc |
| Codex CLI | ~/.codex/config.toml(追記)+ AGENTS.md |
チャットでは、実行したい内容を依頼し、リスク表示付きのプランを確認してください。ターミナルで sysknife approve <transaction-id> を実行して各トランザクションを承認し、ワンタイムレシートを返すと、実行の様子を確認できます。レシートの境界を強制するのはプロンプトではなくデーモンです。
スタンドアロン CLI を使いたい場合同じエンジンを IDE なしで利用できます。
sysknife "..."、--dry-run、--json、承認プロンプト、監査ログの確認方法については、CLI ガイドを参照してください。
手動インストール — Ubuntu 20.04 以降
Rust stable と C コンパイラー(build-essential)が必要です。TLS と SQLite の依存関係はネイティブコードをビルドするため、rustup だけの環境では error: linker cc not found で停止します。cmake は不要です。約 400 個のクレートのビルドには 7〜12 分を見込んでください(Ubuntu 24.04 では 6 分 56 秒、22.04 では 11 分 43 秒)。
sudo apt-get install -y build-essential
git clone https://github.com/lacs-project/sysknife
cd sysknife
make build # builds sysknife (CLI) + sysknife-daemon
sudo make install # installs both; daemon runs as a system service
sudo systemctl enable --now sysknife-daemon
# Join the socket group and one role group, or every request is refused with
# "Permission denied" before any role check runs: /run/sysknife is 0750
# sysknife:sysknife, and a sudo admin is not in that group automatically.
# Role groups: sysknife-observer (read-only), sysknife-dev (medium risk),
# sysknife-admin (high risk). Members of wheel are treated as admin.
sudo usermod -aG sysknife,sysknife-admin "$USER"
newgrp sysknife # or log out and back in
# Then wire your IDE — --no-binary skips the download since you just built them
# (--daemon-mode=skip: make install already set the service up)
npx sysknife-setup --no-binary --daemon-mode=skip
どの方法でインストールした場合でも、コマンドは1つです。
# Removes the user service, the binaries in ~/.local/bin, and the SysKnife
# entries in the MCP and agent config it wrote: Claude Code's in the current
# directory, .cursor/mcp.json and .cursor/rules/sysknife.mdc, the sysknife block
# in ~/.codex/config.toml, and the SysKnife block in AGENTS.md.
npx sysknife-setup --uninstall
# See exactly what that would touch, without touching it.
npx sysknife-setup --uninstall --dry-run
監査履歴はデフォルトで保持されます。 ソフトウェアを削除しても、その動作の記録は消去されません。そのため、監査データベース、安全監査ログ、~/.config/sysknife はそのまま残され、パスが表示されます。これらも削除する場合は、削除する意思があるときに限り、次を実行してください。
npx sysknife-setup --uninstall --purge # names each file before deleting it
sudo make install でシステムサービスをインストールした場合は、sudoers の許可設定、polkit ルール、特権ヘルパーを管理する Makefile を使って削除してください。--uninstall は意図的にこれらに触れません。中途半端に権限境界を取り除くのは、何も取り除かないより危険だからです。
sudo make uninstall
Ubuntu の3つの LTS リリースすべてで、Ubuntu スイートの79ストーリー(その後90以上に増加)をライブ VM で実行した記録があり、それぞれの実行を再現するリプレイ版もあります。22.04、24.04、26.04はすべて79/79で、各リプレイ版はすべての呼び出しをミスゼロで処理します。実行記録は
tests/evidence/story-runs/ にあります。Debian 専用の各アクションにストーリーを追加したため、スイートは50から増えました。最初に追加されたのは GetHostState です。
Fedora Atomic は rpm-ostree が対象です。rpm-ostree ではまだ make install が完了しません(#301)。リリースを検証済みとするには、最新の Silverblue 44 VM での実行が必要です。通常の Fedora Workstation と Server は、dnf アクションファミリーがリリースされるまで実験的な位置付けです。根拠と対象範囲については、ディストリビューションのサポートマトリックス を参照してください。
ドライラン — 計画のみで、何も実行しません
# Requires the sysknife binary (see manual install above, or `npx sysknife-setup`).
# Plans only: no daemon, no approval, no execution.
export ANTHROPIC_API_KEY=sk-ant-...
sysknife --dry-run "show disk usage and list services that ate cpu in the last hour"
ターミナルを使いたいですか?CLI は主要な利用方法の1つです
同じエンジンを使い、IDE も MCP クライアントも使わず、シェルから自然言語を型付きプランに変換し、そのまま実行できます。--dry-run、--json、リスクの上限を指定した --yes、sysknife audit verify も利用できます。SysKnife を実行するための、完全にサポートされた方法であり、付け足しではありません。CLI ガイドを参照してください。
実際の計画・実行セッションを決定的に再現したもので、 demo-mock.sh によってオフラインで生成されています。ライブの LLM 呼び出しは非決定的であり、 デーモンやプロバイダーが設定されていなくても録画を表示できる必要があるため、録画は実際に撮影したものではなくスクリプトで作成されています。出力のスタイルは、実際の CLI と同じコードパスから生成されています。
デスクトップ GUI もあります — 開発は一時停止中です。 実験的な Tauri デスクトップ アプリ(
sysknife-shell)では、同じ計画 → 承認 → 実行の流れをウィンドウ上で利用できます。 現在、開発は一時停止中で、その代わりにサポート対象バージョン全体にわたる Ubuntu への取り組みを進めています。コードはリポジトリに残っており、引き続きビルドできますが、レビュー、テスト、拡張は行われていません。そのため、グラフィカルな承認フローを特に必要とし、その制約を許容できる場合にのみ利用してください。保守されているのは MCP 統合と CLI です。
仕組み
sysknife-brain → approval gate → sysknife-daemon
(planner) (you, in a (executor)
talks to LLM terminal) only privileged
never to OS shows the plan, process; signs
takes y/n every action
承認ゲートはコンポーネントではなく、SysKnife へのアクセス方法によって異なります。
- MCP: AI クライアントが作成したプランには、ターミナルに入力する
sysknife approve <transaction-id>のレシートが必要です。そのため、クライアントが 自分のプランを承認することはできません。 - スタンドアロン CLI:
sysknife "<intent>"を実行すると、各ステップについて専用の プロンプトで確認するか、--yesを指定して--max-riskまでの操作を承認します。sysknife approveは実行しません。 - アカウント上のシェルを持つエージェントは、CLI を単独で操作できます。その 場合、境界を保つのはデーモンのロールベースの制限です (SECURITY.md, layer 3)。
一時停止中の Tauri GUI(sysknife-shell)は、ゲートの第 3 の実装であり、
ほかの 2 つが経由するステップではありません。
- 自然言語でリクエストを入力します。
- ブレインがプランを提案します。各ステップはリスクレベル(
Low・Medium・High) を持つ型付きアクションです。 - シェルが、プレビュー、副作用、ロールバックのメタデータとともにプランを表示します。
- 各ステップを明示的に承認します(または、リスク上限を設定して
--yesを指定します)。 - デーモンが実行し、ライブ出力をストリーミングします。また、失敗時には atomic-host(rpm-ostree)の変更を自動でロールバックします。
- すべての実行がハッシュチェーンで連結された SQLite または Postgres の監査証跡に
記録され、
sysknife audit verifyで検証できます。
ブレインは提案するだけで、特権を持つのはデーモンだけです。デーモンはポリシーを 適用し、型付きアクションを実行し、署名付きチェーンを書き込み、失敗時には atomic-host(rpm-ostree)の変更をロールバックします。信頼境界は機械的に 確保されており、シェル文字列が通信経路を通ることはありません。
なぜ X ではないのか?
| ツール | 不足している点 |
|---|---|
| Open Interpreter | 任意の Python/Shell を実行します。正式なリスクモデルも監査チェーンもありません。 |
| Goose / Continue | 汎用ツールです。確認は場当たり的で、型付きリスクレベルはありません。 |
| Claude Computer Use | 制御されていないデスクトップ自動化であり、システム管理向けではありません。 |
| Ansible | YAML を事前に記述します。会話形式ではなく、リスク分類もありません。 |
| shell-gpt / Copilot | 生のシェルコマンドを提案します。実行するのは依然として生のシェルです。 |
| AIShell-Gate | 最も近い同種のツールですが、プロプライエタリでクローズドです。監査には対称 HMAC を使用します(検証者が署名用シークレットを保持するため、証明しても第三者は納得できません)。ロールバックもありません。 |
| 手動 | 監査証跡もロールバックもありません。タイプミス 1 つで作業が失われます。 |
SysKnife は設計そのものが異なります。型付きアクション、Ed25519 署名付き監査 チェーン、明示的な承認ゲート、atomic-host(rpm-ostree)の変更に対する自動 ロールバック、sudo と polkit をまたいでアクションごとに範囲を限定した特権境界を 備えています。AI がシェルを保持することはありません。 詳しくはSysKnife と代替ツールの比較をご覧ください (AIShell-Gate、gate-oc-audit、MCP ゲートウェイ、汎用 mcp-shell)。
ステータス
信頼チェーンは構築・テスト済みで、提供中です。現在のマイルストーンはマルチディストリビューション対応です。
| コンポーネント | 状態 |
|---|---|
sysknife-brain — LLM プランナー、ツールループ、安全性フェンス | ✅ |
sysknife-daemon — 190 以上の型付きアクション、認証、プレビュー、トランザクション | ✅ |
| ライブ IPC + ストリーミング + atomic-host ロールバック(rpm-ostree) | ✅ |
| ターミナル承認ゲート — 1 回限り、TTL で有効期限を制限したレシート | ✅ |
| MCP サーバー(Claude Code / Cursor / あらゆる MCP クライアント) | ✅ |
| 改ざんを検知できる Ed25519 署名付き監査チェーン | ✅ |
| RFC 5424 syslog 転送(Splunk / Sentinel / QRadar) | ✅ |
| Postgres バックエンド(RDS / Cloud SQL / Neon / Supabase) | ✅ |
Ubuntu 対応 — 稼働中の 22.04 VM で 79/79 のストーリーを達成し、tests/evidence/story-runs/ に記録 | ✅ |
| すべての Ubuntu LTS を検証済み — 22.04、24.04、26.04 のすべてで 79/79 を達成し、それぞれを再現するリプレイ用ツインも用意 | ✅ |
| Telegram 承認インターフェース | 📋 ロードマップ |
Rust テスト 2,000 件以上、フロントエンドテスト 70 件以上が、現在の決定論的な リリース基準を構成しています。
LLM の設定
SysKnife は Ollama(キー不要。プライバシー重視/オフライン/ ホームラボにおすすめ)、または OpenAI、Anthropic、Gemini、Groq、DeepSeek、 Mistral、xAI と連携します。
# ~/.config/sysknife/config.toml
[llm]
provider = "ollama" # or anthropic / openai / gemini / groq / ...
model = "qwen3:8b" # provider-specific
ollama_url = "http://localhost:11434"
max_turns = 10
[daemon]
socket = "/run/sysknife/daemon.sock"
database = "/var/lib/sysknife/daemon.sqlite"
[storage] # production-recommended
backend = "postgres"
url = "postgres://sysknife:${PG_PASSWORD}@db.example.com/audit?sslmode=verify-full"
環境変数は常に設定ファイルより優先されます。詳細なリファレンスは
docs/configuration.md をご覧ください。
MCP プロトコル
SysKnife は Model Context Protocol
を実装し、承認を必須とする計画・実行ツールを公開します。sysknife_plan
は各ステップに対してデーモンが発行するトランザクション ID を返します。計画を確認した後、
ユーザーは実際のターミナルで sysknife approve <transaction-id> を実行し、
一度限りのレシートをエージェントに渡します。sysknife_execute は、レシートが存在しない場合、
期限切れの場合、一致しない場合、または再利用された場合に拒否します。MCP サーバー自体が承認
レシートを発行することはできません。
セットアップウィザード(上記)を使って、Claude Code、Cursor、または Codex CLI に接続してください。
API キーを含む可能性のある設定ファイルはすべて、chmod 0600 で作成されます。
ロードマップ
マイルストーンの詳細は ROADMAP.md をご覧ください。
- ✅ Ubuntu 22.04 — 実稼働 VM で 79/79 のストーリーを検証済み(
tests/evidence/story-runs/に記録) - ✅ Ubuntu 24.04 および 26.04 — 実稼働 VM でそれぞれ 79/79 を達成。すべての LTS 実行には、同じ結果を再現するリプレイ用の実行もあります
- ✅
sysknife audit export— 保存済みの署名付きチェーン行を、--since/--limitを指定して JSON として出力 - 📋 Telegram のインラインボタンによる承認
- 📋 SIEM 取り込み向けの CEF / NDJSON 出力モード
- 📋 フリートの計画/実行(1 つの計画、N 個のターゲット、並列承認)
プロトコル
SysKnife は LACS(Linux Agent Control Standard) プロトコルのリファレンス実装です。型付きアクション、リスク分類、承認ゲート、 監査要件を定めています。仕様は CC0(パブリックドメイン)です。
他のディストリビューションや言語向けの実装も、明示的に歓迎します。
貢献
ご協力をお待ちしています。今、最も大きな効果が期待できる分野は マルチディストリビューション対応 です。
ロードマップの一覧は docs/distro-support.md、
ワークフローは CONTRIBUTING.md をご覧ください。
good first issue
のラベルが付いた Issue は、明確な受け入れ基準を設けたうえで範囲を限定しています。
謝辞
これまでにパッチを提供してくださった方々: @ITSMERNB、 @QinXi-ai、@Osheun、 @danial-razi、 @vsolano9、@Georgefifth。 各リリースでは、CHANGELOG.md に修正内容と担当者を記載しています。
パッチを送ったら、リリースをウォッチするのが、
公開されたことを確認し、新たに追加された good first issue を見つける最も早い方法です。スターを付けると、
他の人がこのプロジェクトを見つけやすくなります。
ドキュメント
- 型付きアクション — シェル文字列を使わない理由
- アクションリファレンス — コードから生成される全アクションの一覧
- 監査チェーン — Ed25519 による公開鍵検証
- 自動ロールバック
- SysKnife と代替ツールの比較
- アーキテクチャ概要
- ディストリビューション対応一覧
- 設定
- 監査データの保存と復旧
- 開発者ガイド
- テストガイド
- VM デーモンのセットアップ
- セキュリティポリシー
- リリース準備チェックリスト
- ロードマップ
- ADR 0001 — システム境界
- ADR 0002 — ブレインプロバイダーレイヤー
- ADR 0003 — IPC ワイヤープロトコル
SysKnife の入手先
| チャネル | インストール | 備考 |
|---|---|---|
| npm | npx sysknife-setup | npmjs.com/package/sysknife-setup — セットアップウィザードです。Node 22 以降が必要で、コンパイルは不要です |
| crates.io | cargo install sysknife-cli / cargo install sysknife-daemon | build-essential が必要です。ビルドには約 7〜12 分かかります。レビュー済みのバージョンタグから公開されています。docs/release.md をご覧ください |
| MCP Registry | io.github.lacs-project/sysknife | registry.modelcontextprotocol.io — 上記の crates.io インストール先に解決されます。サーバーをサンドボックス化するディレクトリのページにはすべてのツールが一覧表示されますが、デーモンが必要なツールは呼び出せません。その違いについては docs/mcp-registry.md で説明しています |
| GitHub Releases | Releases からダウンロード | 各タグに、SHA-256 チェックサム付きのビルド済み x86_64 および aarch64 バイナリがあります |
ライセンス
MIT です。制限なく、独自の製品で自由に使用、変更、配布、組み込みができます。
LACS 仕様 は CC0 1.0 に基づくパブリックドメインです。
Vladimir Rotariu が開発しました。 · 問題、アイデア、体験談などは、お気軽にお寄せください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。