Get started · free while in alpha

Install Turf and run your first governed plan.

Homebrew installs both the CLI and the MCP server. Bring your own model — hosted, local, or a private GPU endpoint. The alpha is free under an evaluation license.

1 · Install

The tap installs the turf CLI and the turf-mcp-server binary.

Homebrew · macOS & Linux
$ brew install turfbuild/tap/turf
# later: brew upgrade turf

2 · Point Turf at a model

Set a key for a hosted model, or run fully local with no key and no cost.

Choose a model
# hosted frontier model
$ export ANTHROPIC_API_KEY=sk-...

# or a local model — no API key, no cost
$ turf --model dmr/ai/qwen3 chat

# or a private GPU endpoint (vLLM, LM Studio, gateways)
$ turf --base-url https://gpu.internal/v1 --model my-model chat

3 · Run it

Chat interactively, or converge a whole stack from a config directory.

The Turf CLI
$ turf chat
$ cd path/to/config && turf up
$ cd path/to/config && turf destroy

Every change is planned, shown to you, and applied one effect at a time — with an approval gate in between. Nothing runs off-plan.

Use Turf from any MCP client

Turf is an MCP server first. Add it to Claude Desktop, Claude Code, Codex, VS Code, or any MCP-capable agent.

Claude Desktop

Add this to claude_desktop_config.json:

claude_desktop_config.json
{
  "mcpServers": {
    "turf": {
      "command": "turf-mcp-server"
    }
  }
}

Claude Code

Register the server
$ claude mcp add turf --scope user -- turf-mcp-server

Codex CLI

Register the server
$ codex mcp add turf -- turf-mcp-server

VS Code

Register the server
$ code --add-mcp '{"name":"turf","command":"turf-mcp-server"}'

The server speaks MCP over stdio by default, or over HTTP with turf-mcp-server --transport http (binds loopback).

Container image & supply-chain verification

A multi-arch image is published to GHCR and signed with cosign (keyless, via GitHub OIDC).

Pull & verify
$ docker pull ghcr.io/turfbuild/turf-mcp-server:latest

# verify the signature
$ cosign verify ghcr.io/turfbuild/turf-mcp-server:latest \
    --certificate-identity-regexp '^https://github.com/turfbuild/turf-mcp-server/' \
    --certificate-oidc-issuer https://token.actions.githubusercontent.com

# verify the SBOM attestation
$ cosign verify-attestation --type cyclonedx ghcr.io/turfbuild/turf-mcp-server:latest \
    --certificate-identity-regexp '^https://github.com/turfbuild/turf-mcp-server/' \
    --certificate-oidc-issuer https://token.actions.githubusercontent.com

Prefer the CLI? Verify the Homebrew binary's provenance with gh attestation verify turf --repo turfbuild/turf.

Next