Install the Jetty agent skill.

One repo, every agent CLI. Install the Jetty plugin in Claude Code, Codex, or Gemini CLI — or wire the MCP server into Cursor, VS Code, Windsurf, Zed, or anything else that speaks MCP. About five minutes to your first runbook.


The fast path: Claude Code

If you're already using Claude Code, this is two lines:

claude plugin marketplace add jettyio/jettyio-skills
claude plugin install jetty@jetty

Then run the setup wizard inside Claude Code:

/jetty-setup

The wizard does three things, in order:

  1. Connects your Jetty account. If you don't have a token yet it opens jetty.io/sign-up; otherwise it reads the one you paste, validates it, and stores it at ~/.config/jetty/token (chmod 600 — never in your repo).
  2. Sets up an AI provider key. Use your own (OpenAI, Anthropic, Gemini) or activate trial mode — 10 free runs, up to 60 minutes, with Jetty-provided keys, no third-party signup.
  3. Walks you through your first runbook. Hands off to /create-runbook, which scaffolds a working RUNBOOK.md from a template and registers the task on Jetty.

Under five minutes from the install command to a trajectory you can replay.


Other agents

Gemini CLI

gemini extensions install https://github.com/jettyio/jettyio-skills

The installer prompts for your Jetty token. Then ask Gemini to set up Jetty — Antigravity-style skills trigger by description, not slash command.

Codex CLI

Add the MCP server to ~/.codex/config.json:

{
  "mcpServers": {
    "jetty": {
      "command": "npx",
      "args": ["-y", "jetty-mcp-server"],
      "env": { "JETTY_API_TOKEN": "mlc_your_token" }
    }
  }
}

Cursor, VS Code Copilot, Windsurf, Zed, Antigravity

Same MCP config, different file: .cursor/mcp.json, .vscode/mcp.json, ~/.codeium/windsurf/mcp_config.json, ~/.config/zed/settings.json, or ~/.gemini/antigravity/mcp_config.json. The full per-IDE snippets are in the repo README.

Anything else with MCP

JETTY_API_TOKEN=mlc_your_token npx -y jetty-mcp-server

That's the whole server. Stdio transport, standard MCP protocol, no other moving parts.


What you actually get

The plugin ships four skills (Claude Code surfaces them as slash commands; other agents trigger them by description):

  • /jetty-setup — first-run wizard. Account, token, provider key, first runbook.
  • /jetty — natural-language workflow management. List collections, run tasks, inspect trajectories, label runs, manage env vars. “Run my-project/my-task with prompt=Hello world” is a real command.
  • /create-runbook — scaffolds a complete RUNBOOK.md: objective, output manifest, parameters, evaluation criteria, processing steps, iteration bounds, and a self-check section. Validates the result before you ship it.
  • /optimize-runbook — feeds a failing trajectory back into your runbook. Cites the steps that motivated each change and proposes a diff. (This is what powers the one-click Optimize button in Spot — see the comparison page for the full loop.)

Plus 16 MCP tools the agent uses under the hood — list-collections, run-workflow, get-trajectory, add-label, set-environment-vars, and the rest. You don't call them directly; the skills do.


Prerequisites

  • Node.js 18+ — the MCP server runs via npx.
  • A Jetty token. Get one at jetty.io/sign-up → Settings → API Tokens. Tokens start with mlc_.
  • An AI provider key — OpenAI, Anthropic, or Gemini. Or skip this and use trial mode for the first ten runs.

Provider keys are stored server-side as collection environment variables, set once in the Jetty web UI. They never appear in trajectories, logs, or outputs — runbooks declare what they need; Jetty resolves it at run time.


Don't want a CLI? Skip the skill.

The skill is the friendly path. The substrate is an OpenAI-compatible HTTP endpoint at https://flows-api.jetty.io/v1/chat/completions. Add a jetty block to switch from passthrough to agent mode. Existing SDKs work unchanged.

Full API surface in the developer docs. The shape of the request is in For builders.


If something breaks

  • Token won't validate. Confirm it starts with mlc_ and that you copied it from jetty.io/settings → API Tokens, not from anywhere else.
  • Slash commands missing. Skills only work in Claude Code today (and a couple of Codex flows). In Cursor, VS Code, Windsurf, Zed: ask the agent in plain language — the MCP tools work, the slash sugar doesn't.
  • “No environment variables configured.” Either activate trial mode (the wizard offers it) or add a provider key at jetty.io/settings.
  • Anything else. Open an issue at github.com/jettyio/jettyio-skills or drop into the Discord.

Now write a runbook

How to build an AI agent → — six-step walkthrough that turns a workflow you do every week into a runbook your team can run.

Turn a skill into a runbook → — if you've already built a Claude skill or a custom GPT, this is the fastest path.


Related reading