Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The two binaries are:

qqqa runs on macOS, Linux, and Windows.

By default the repo includes profiles for OpenRouter (default), OpenAI, Groq, a local Ollama runtime, and the Codex CLI (so you can piggyback on a paid ChatGPT subscription). An Anthropic profile stub exists in the config for future work but is not wired up yet.
By default the repo includes profiles for OpenRouter (default), OpenAI, Groq, a local Ollama runtime, the Codex CLI (piggyback on ChatGPT), and the Claude Code CLI (reuse your Claude subscription). An Anthropic profile stub exists in the config for future work but is not wired up yet.



Expand Down Expand Up @@ -72,6 +72,29 @@ Example `~/.qq/config.json` fragment that pins Codex as the default profile:
}
```

### Claude Code CLI profile (bring-your-own Claude desktop subscription)

Have a Claude subscription? Select the `claude_cli` profile and qqqa will use the `claude` binary. That keeps usage effectively free if you already pay for Claude for Desktop.

What to know:

- Install Claude Code so the `claude` binary is on your `PATH`, then run `claude login` once.
- Claude Code streams responses the same way API-based LLMs do.

Minimal config snippet:

```json
{
"default_profile": "claude_cli",
"profiles": {
"claude_cli": {
"model_provider": "claude_cli",
"model": "sonnet"
}
}
}
```

## Features

- OpenAI compatible API client with streaming and non streaming calls.
Expand Down Expand Up @@ -121,14 +144,15 @@ The initializer lets you choose the default provider:
- Anthropic + `claude-3-5-sonnet-20241022` (placeholder until their Messages API finalizes)
- Ollama (runs locally, adjust port if needed)
- Codex CLI + `gpt-5` (wraps the `codex exec` binary so you can reuse a ChatGPT subscription; no API key needed, buffered output only)
- Claude Code CLI + `sonnet` (wraps the `claude` binary; `qq` streams live, `qa` buffers so it can parse tool calls)

It also offers to store an API key in the config (optional). If you prefer environment variables, leave it blank and set one of:

- `OPENROUTER_API_KEY` for OpenRouter (default)
- `GROQ_API_KEY` for Groq
- `OPENAI_API_KEY` for OpenAI
- `OLLAMA_API_KEY` (optional; any non-empty string works—even `local`—because the Authorization header cannot be blank)
- No API key is required for the Codex CLI profile—the ChatGPT desktop app or `codex` binary handles auth.
- No API key is required for the Codex or Claude CLI profiles—their binaries handle auth (`codex login` / `claude login`).

Defaults written to `~/.qq/config.json`:

Expand All @@ -138,6 +162,8 @@ Defaults written to `~/.qq/config.json`:
- `groq` → base `https://api.groq.com/openai/v1`, env `GROQ_API_KEY`
- `ollama` → base `http://127.0.0.1:11434/v1`, env `OLLAMA_API_KEY` (qqqa auto-injects a non-empty placeholder if you leave it unset)
- `anthropic` → base `https://api.anthropic.com/v1`, env `ANTHROPIC_API_KEY` (present in the config schema for future support; not usable yet)
- `codex` → mode `cli`, binary `codex` with base args `exec` (install Codex CLI; auth handled by `codex login`)
- `claude_cli` → mode `cli`, binary `claude` (install `@anthropic-ai/claude-code`; auth handled by `claude login`)
- `codex` → CLI provider, binary `codex` - fails if the binary is missing
- Profiles
- `openrouter` → model `openai/gpt-4.1-nano` (default)
Expand Down
Loading