SysKnife

by lacs-project

Not rated
GitHub

About

Administers Linux for AI agents through typed, approval-gated actions with an Ed25519-signed audit trail, never raw shell strings.

Details

Author
lacs-project
Categories
Developer Tools

Setup

Install SysKnife in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/lacs-project/sysknife

Follow the installation instructions in the repository README, then restart your MCP client.

Your sysadmin co-pilot. Plan. Approve. Audit.

Install·How it works·Why notXDistro matrix·Roadmap·Contribute·Discuss

A deterministic reproduction of the Claude Code MCP flow on Ubuntu 24.04, rendered offline byubuntu-flow-mock.shso 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? Seethe 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 atyped operationwith a formal risk level, and the daemon builds the command line itself from the action's own definition — some actions do run throughsh -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 that10 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 emitstyped actions, and apublic-key-verifiable audit chainrecords every one.

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.

NeedsNode 18 or newer. On Ubuntu 22.04apt install nodejsgives 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.
-

Downloads the prebuiltsysknife+sysknife-daemonbinariesfor your architecture (x86_64 / aarch64) from GitHub Releases,SHA-256-verifieseach 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 yourLLM 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.

Askswhich AI integrationto wire up (or pick--claude/--cursor/--codex/--all) and yourdaemon 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 thesysknife_tools —sysknife_plan,sysknife_execute,sysknife_history,sysknife_doctor,sysknife_audit_verify— as first-class tools.

Installs and starts the daemon as a service(last step) — a systemduser*service by default (no sudo; kept alive across logout via linger). That service runs as you, so read-only actions work butmutating ones do not: installing packages or restarting services needs the system-level service, whose sudoers grants belong to thesysknifesystem 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, setSYSKNIFE_PINNED_SHA256SUMS=/path/to/sums; seeSECURITY.md.

Then in your chat: ask for what you want and review the plan with risk pills. Approve each transaction withsysknife 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 guideforsysknife "...",--dry-run,--json, approval prompts, and audit-log inspection.

Needs Rust stableand a C compiler(build-essential): the TLS and SQLite dependencies build native code, so a rustup-only machine stops aterror: linker cc not found.cmakeis not required. Budget 7 to 12 minutes for the ~400-crate build (6m56s on Ubuntu 24.04, 11m43s on 22.04).

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

Whichever way you installed, there is one command for it.

# Removes what the wizard installed: the user service, the binaries in # ~/.local/bin, and the MCP + agent config in the current directory. npx sysknife-setup --uninstall # See exactly what that would touch, without touching it. npx sysknife-setup --uninstall --dry-run

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/sysknifeare left in place and their paths printed. Delete those too, only if you mean to, with:

npx sysknife-setup --uninstall --purge # names each file before deleting it

If you installed thesystemservice withsudo make install, remove it with the Makefile that owns its sudoers grants, polkit rules and privileged helpers.--uninstalldeliberately will not touch those, because half a removed privilege boundary is worse than none:

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.