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

# Coding harnesses

> Local and partner endpoint setup for Flint coding harnesses.

For cloud usage, choose [OpenCode’s free tier](https://docs.recursive.com/guides/coding-agents.md#use-flint-for-free) or [OpenRouter](https://docs.recursive.com/guides/openrouter). The OpenRouter guide includes authentication examples for different harnesses and the current Flint listing status.

For local coding, we recommend **[Pi with rec](https://docs.recursive.com/edge/rec.md#recommended-harness)**. Start with `rec launch pi`; [`rec launch opencode`](https://docs.recursive.com/edge/rec#launch-opencode) is also supported. The Nebius setup below is for select partners with assigned API access. Other integrations have separate guides with their validation status noted.

## Runtime launchers

After loading Flint in your runtime, launch from your project directory:

| Harness | Ollama | Unsloth |
| - | - | - |
| OpenCode | `ollama launch opencode` | `unsloth start opencode` |
| Pi | `ollama launch pi` | `unsloth start pi --persist` |
| Codex | `ollama launch codex` | `unsloth start codex --persist` (GGUF/llama-server backend) |
| VS Code | `ollama launch vscode` | `unsloth start vscode` |
| OpenHands | [Connection profile](https://docs.recursive.com/guides/openhands.md#connect-local-runtimes) | [Connection profile](https://docs.recursive.com/guides/openhands.md#connect-local-runtimes) |

Select `flint:40b-a2b-qat-int4` for Ollama, or your loaded Flint model for Unsloth. Use a runtime version that includes the chosen launcher. Custom local configurations in the individual harness guides are for llama.cpp; OpenHands requires a connection profile for each runtime.

## Local model connections

Start a Flint-compatible runtime first, then connect your harness using the settings below. These are connection recipes, not a claim that every Flint/runtime/harness combination has passed end-to-end testing.

| Local runtime | API base URL | Model ID | Client API key |
| - | - | - | - |
| [Ollama](https://docs.recursive.com/edge/ollama.md#connect-a-coding-harness) | `http://127.0.0.1:11434/v1` | `flint:40b-a2b-qat-int4`; confirm with `/v1/models` | `ollama` placeholder for the default local server |
| [Unsloth](https://docs.recursive.com/edge/unsloth.md#connect-a-coding-harness) | Displayed server URL plus `/v1`, e.g. `http://127.0.0.1:8888/v1`; confirm the port | Exact loaded Flint ID from `/v1/models` | Unsloth API key from Settings → API |
| [llama.cpp](https://docs.recursive.com/edge/llama-cpp.md#connect-a-coding-harness) | `http://127.0.0.1:8080/v1` in our guides | `flint-local`, set by `--alias` | `local` placeholder unless server authentication is enabled |
| [rec](https://docs.recursive.com/edge/rec.md#launch-opencode) | `http://127.0.0.1:11500/v1` | `flint` | Token from `rec auth token` |

### Automatic setup with rec

After [installing rec](https://docs.recursive.com/edge/rec.md), launch from your project directory:

```bash theme={null}
rec launch pi
```

For OpenCode, use `rec launch opencode` instead. Either command starts or reuses the local server and supplies the harness’s model, authentication, and runtime settings. The first launch downloads the model and matching harness. Closing the harness leaves the server running; use `rec stop` to stop it. Other harnesses use their local-connection instructions below.

### Check the connection

For manual configuration, set these variables in the terminal that will launch your harness. Example for the default local llama.cpp server:

```bash theme={null}
export FLINT_BASE_URL="http://127.0.0.1:8080/v1"
export FLINT_MODEL="flint-local"
export LOCAL_API_KEY="local"
curl --fail-with-body --silent --show-error "${FLINT_BASE_URL%/}/models" \
  -H "Authorization: Bearer ${LOCAL_API_KEY}"
```

For an authenticated server, read the key privately:

```bash theme={null}
export LOCAL_API_KEY="$(python3 -c 'import getpass; print(getpass.getpass("Local server API key: "))')"
```

Set `FLINT_MODEL` to the exact Flint ID returned by model discovery. A local tag can differ from the free-tier name **Flint-40B**. Never use `NEBIUS_API_KEY` for these local connections. When authentication is enabled, use the server’s actual credential instead of a placeholder.

Match the harness context and output budgets to the running server; do not copy the hosted 262,144-token limit. Configure enough context for the harness’s prompts and tools. Keep the runtime’s validated sampling settings and chat template, then run the [tool-cycle check](#verify-a-complete-tool-cycle).

Loopback URLs assume the harness and server share a host. Docker, WSL, and remote VS Code sessions may need a different reachable address; see the [OpenHands networking instructions](https://docs.recursive.com/guides/openhands.md#local-server-networking).

## Get access

For the select-partner Nebius endpoint, Recursive shares API keys separately through **1Password**. Open the link supplied to you and copy your assigned key. If the link has expired, ask your Recursive contact for a new one. Keep the key out of source code and error reports.

You do not need a Nebius account or Tailscale. Tools run in your local development environment; model requests, including code and tool output, go to Nebius. Use a project you have permission to share with Recursive and Nebius.

| Connection | Value |
| - | - |
| API base URL | `https://api.tokenfactory.us-north1.nebius.com/v1/` |
| Model ID | `dedicated/shadowlaunch/ll-alpha` |
| Authentication | Bearer token from your 1Password handoff |
| Sampling | `temperature=1`, `top_p=0.95`, `top_k=20` |
| Reasoning | Always on; omit reasoning-effort controls |

The route was verified in Nebius on **2026-10-15**. Use the complete model ID, including `dedicated/`, wherever a guide asks for the upstream model.

## Choose your tool

> [card] [OpenCode](https://docs.recursive.com/guides/coding-agents.md)
>
> Select Flint-40B from the free tier or connect a local Flint runtime.

> [card] [VS Code](https://docs.recursive.com/guides/vscode)
>
> Connect native Chat through a local runtime or Nebius, or launch Pi in the integrated terminal.

> [card] [Pi](https://docs.recursive.com/guides/pi.md)
>
> Launch with rec, connect another local runtime, or add the Nebius partner model.

> [card] [OpenHands](https://docs.recursive.com/guides/openhands.md)
>
> Connect a local model server or Nebius to OpenHands’ browser interface.

> [card] [Codex CLI](https://docs.recursive.com/guides/codex)
>
> Connect local runtimes, or try the experimental bridge for Chat Completions.

## Verify a complete tool cycle

Start a new chat and ask **“What is 19 + 23?”** A reply of `42` checks basic connectivity. Then check file and tool execution in a disposable project folder.

Create `smoke-input.txt` containing `19 23`, then send this prompt:

```text theme={null}
Read smoke-input.txt using your file-reading tool. Add its two integers.
Write result.txt containing exactly 42 followed by a newline. Run a shell
assertion that fails unless the file contains exactly that value.
Report the assertion result.
```

A pass requires an observed read-tool call, an actual `result.txt` file, a successful shell assertion, and a completed agent turn. Independently check the file from the project directory:

```bash theme={null}
python3 -c 'from pathlib import Path; assert Path("result.txt").read_bytes() == b"42\n"'
```

Record the tool and version, endpoint and model, elapsed time, tool errors, retries, and any intervention. This checks connectivity and tool execution; it does not measure coding quality.

## Troubleshooting

| Symptom | Check |
| - | - |
| `401` or `403` | Use the complete assigned key and regional URL. Desktop credentials must match the configured provider. Pi needs `NEBIUS_API_KEY` in its process; Codex needs the local `FLINT_PROXY_KEY`. |
| `400`, `404`, or missing model | Use the complete `dedicated/shadowlaunch/ll-alpha` ID for upstream requests. Use `flint` for rec or the local Codex bridge. Do not append an API route twice. |
| Text works, tools fail | Record the failing tool call and exact versions. For Codex, inspect the bridge error. A text-only reply does not establish agent compatibility. |
| `429`, `5xx`, or timeouts | Reduce concurrency, honor `Retry-After`, and check endpoint health. |

Send your existing Recursive contact the status code, request ID, time and timezone, and tool version. Omit credentials and private repository content. See [API usage](https://docs.recursive.com/guides/api), [generation settings](https://docs.recursive.com/guides/generation-settings), and [troubleshooting](https://docs.recursive.com/resources/troubleshooting.md) for more detail.

For running the model on your own hardware, start with [local setup](https://docs.recursive.com/local/choose-your-setup.md).


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