---
title: "Bring your own CLI: AI testing with no API key and no token resale"
description: "Hover bundles no AI runtime. It spawns the coding-agent CLI already on your PATH (claude, codex, cursor-agent), so you reuse the subscription you already pay for. Why that architecture matters."
date: 2026-05-15
author: "Hover"
tags: [architecture, byo-cli, pricing]
---

# Bring your own CLI: AI testing with no API key and no token resale

Most AI dev tools open with a text field that wants your API key. You paste it in, the tool calls the model for you, and someone bills you: the provider directly, or the tool with a margin stacked on top. That's the default, and the margin rarely shows up on the invoice as a line item.

Hover skips the field, because Hover ships no model client. There's nothing inside it to hold a key. Instead it runs the coding-agent CLI you already installed.

## How it works

When you ask Hover to drive your browser, it shells out to a binary on your `PATH`:

- `claude` (Claude Code)
- `codex` (OpenAI Codex CLI)
- `cursor-agent`, `aider`, `gemini-cli`, `qwen-code`

That CLI talks to its own provider on your existing plan: the Claude Pro or Max or ChatGPT subscription you already pay for. Hover reads whatever the CLI streams back, normalises it into one event stream, and shows it in the widget. It never touches your key, because it never makes the call. The service detects which agents you have installed, picks one, shows it as a pill in the widget header, and lets you switch from a dropdown without editing an environment variable.

## Why build it this way

You don't pay a margin on inference. The model cost is whatever your subscription already covers. On a flat Pro or Max plan, a browser-driving session costs you nothing at the margin.

You have no key to leak. Hover stores no credentials. There's no `.env` with a long-lived provider key sitting in your repo waiting for someone to commit it by accident.

Your code and DOM never route through a vendor. Hover's local service carries no LLM SDK and no telemetry. Your data goes from the CLI to that CLI's provider, the same path you already trust when you run `claude` in your terminal. The service binds to `127.0.0.1` and refuses connections from anywhere else.

You stay free to switch models. The model is a binary on your PATH, so changing providers is changing binaries. The day a model gets cheaper or faster or better at browser work, you point Hover at it. No migration, no re-platforming.

## What it asks of you

This design assumes you already have a coding-agent CLI installed and logged in. If you don't, installing one is a real first step that a hosted tool skips. Different CLIs sandbox the agent differently, too; Hover puts a badge on soft-sandbox agents so you know the tool surface is wider than the locked-down ones.

For the growing number of developers who live in `claude` or `codex` all day, reusing the plan you already pay for beats pasting another API key and paying a margin on top of it.

[Read about the agent registry →](/docs/reference/agent-registry)
