> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metaphi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Set up Kennet in your coding agent, then take one bundle through the loop: check it, validate it, run it at k, read the run.

## 1. Install and set up your agent

```sh theme={"dark"}
brew install metaphi-labs/tap/kennet    # or: pip install kennet
kennet login                            # opens the browser; confirm the code you see
kennet skill install
```

`kennet skill install` finds the coding agents on your machine (Claude Code, Codex, Hum, Gemini CLI, GitHub Copilot CLI, Cursor, opencode). In each one it installs the Kennet skill and adds the `kennet` MCP server, `https://kennet.metaphi.ai/mcp/`. It prints the sign-in command for each agent, for example `hum mcp login kennet`. Start a new session afterwards so the skill loads. `kennet agents list` shows what is installed where, and `--harness` picks one agent.

[Sign in](https://docs.metaphi.ai/account/sign-in.md) to the server with GitHub. Every call is checked against your own [GitHub access](https://docs.metaphi.ai/account/github.md), and the tools listed are the ones your access reaches.

Without the CLI, add the server by hand. In Hum:

```
hum mcp add kennet https://kennet.metaphi.ai/mcp/
hum mcp login kennet
```

For other clients, see [Connect an MCP server](https://docs.metaphi.ai/account/mcp.md).

## 2. Push a bundle

A bundle is a directory holding `task.toml`, with `instruction.md`, `environment/`, `solution/solve.sh` and `tests/test.sh`. Push it first: Kennet clones GitHub, never your checkout.

The steps below use `acme/tasks` at `main`, bundle `tasks/fix-rounding`. Its runs land under `fix-rounding/`. You can ask your agent in plain words ("run pre-run checks on tasks/fix-rounding"); the calls are shown so you know what it sends.

## 3. Pre-run checks

```json theme={"dark"}
run_task_ci_checks {"repo": "acme/tasks", "ref": "main", "path": "tasks/fix-rounding"}
```

It returns a task. Poll `get_task` until it ends. Read `tasks[<bundle>].eval_ready`; when false, `gate.blocking_checks` names what to fix. Edit, push, call again. The report lands at `fix-rounding/ci/<run id>/`.

`arms` (default true) runs the validate run that decides `eval_ready`: the reference solution, the untouched code, and every solution in the bundle's `wrong/` and `right/`. With `arms` off, the call screens and audits only and cannot be `eval_ready`.

## 4. Validate

```json theme={"dark"}
run_harbor_tasks {"repo": "acme/tasks", "ref": "main", "paths": ["tasks/fix-rounding"],
                  "mode": "validate"}
```

One trial per leg: the reference solution must score 1.0, the untouched code below it, and a cheat probe must not pass. It lands at `fix-rounding/validate/<run id>/`.

## 5. Conduct

```json theme={"dark"}
run_harbor_tasks {"repo": "acme/tasks", "ref": "main", "paths": ["tasks/fix-rounding"],
                  "mode": "conduct", "models": ["google/gemini-3.8-flash"],
                  "harness": "terminus-2", "k": 8, "reasoning_effort": "medium"}
```

Eight trials, each reviewed as it finishes. `reasoning_effort` is required; Kennet has no default. The task's progress counts calls by phase while it works. The run lands at `fix-rounding/eval/<run id>/<model slug>/`.

## 6. Read the run

```json theme={"dark"}
harbor_rollouts   {"repo": "acme/tasks", "task": "fix-rounding"}
harbor_run_report {"repo": "acme/tasks", "run_id": "<run id>"}
```

`harbor_rollouts` gives one row per trial (reward, failure type, cost, tokens, phase times) and per task the pass\@k and its band. `harbor_run_report` lists one run's trials and files; name a `trial` for its review report.

## 7. Review the trajectories

```json theme={"dark"}
review_run {"repo": "acme/tasks", "run_path": "fix-rounding/eval/<run id>/<model slug>"}
```

Every trial gets `trajectory_report.json`: whether the reward was earned, whether the agent got stuck, and recommended fixes to the task. Disagree with a verdict? See [Post-run](https://docs.metaphi.ai/kennet/post-run.md).

## 8. Pull it

```json theme={"dark"}
pull_run {"repo": "acme/tasks", "run_id": "<run id>"}
```

It returns a `curl` command. Run it; the run lands in `./jobs/<run id>/` in Harbor's layout, and `harbor view jobs/<run id>` browses it.

## Then decide

Too easy (pass\@k near 1)? Harden the task. Unsolved and the reviews say the instruction is short of information? Fix the instruction. Then push and go round again. Keeping, revising and rejecting are yours.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.