Husk 0.1.0 · Apache-2.0
Give your agent a computer.
A disposable Linux machine an agent can drive, and a way to turn a chat transcript into a bot. Runs on hardware you already own. No account, no telemetry.
On Docker and Podman you get kernel isolation. On the local provider you get process guardrails — a pinned working directory, a scrubbed environment, a command deny list. That stops accidents. It does not stop an adversary, and a prompt-injected model is closer to an adversary than to an accident. The security page is specific about which one you have.
$ husk up scratch creating scratch... ✓ scratch is up id cmp_5j8svxeqer9p provider local (WSL2 (Ubuntu)) isolation guardrails only — not a sandbox workdir /work network egress $ husk exec scratch -- 'uname -sr; echo hi > /work/a.txt; cat /work/a.txt' Linux 6.18.33.2-microsoft-standard-WSL2 hi $ husk exec scratch -- 'sudo rm -rf /' error refused: privilege escalation hint: add a pattern to guardrails.allowCommands in husk.yaml if this is intentional
The whole install, for an MCP client
One line gives Claude Code — or Cursor, or Zed, or anything speaking MCP — a Linux machine mid-conversation.
claude mcp add husk -- npx -y @husk-ai/mcp
There is no second step. Nothing is created until the model calls a tool, and the first tool result tells it plainly what kind of machine it got. MCP covers the tool list, the flags, and the other clients.
Documentation
These docs describe the code, not the plan
Every claim on this site was checked against the source in this repository, and every terminal transcript was produced by running the command. Where the code and the design documents disagree, the pages say so in a Not yet note rather than describing something that does not work.
The current set of those, so you can find them quickly: MCP is stdio only, the reaper does not sweep containers, Discord, Slack and Telegram triggers are not wired up, husk run ignores fallbackModels, and the SDK targets a different API than the one the server serves.
Stuck on something specific? Troubleshooting lists the real failure modes with the exact string husk prints for each, and the FAQ answers the rest.