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
5 changes: 3 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Instructions for coding agents working on qmax-code.

qmax-code is a terminal **QA** agent that can also host coding CLIs. It runs
standalone on a local repository or connected to QualityMax. Through `/orch`
it can launch Claude Code, Codex, or OpenCode while keeping qmax tools and
it can launch Claude Code, Codex, Antigravity, or OpenCode while keeping qmax tools and
terminal UX — or run the built-in loop on Anthropic, Cerebras, or Ollama.

This repository is **Go 1.25.13+**, not TypeScript. The thing users install is one
Expand All @@ -23,7 +23,8 @@ those other agents when the job is coding.
- **Cerebras** = fast inference (~1000–2000+ tok/s). Models today: GPT-OSS
120B, GLM 4.7, Gemma 4. **Qwen 3.8 is coming soon** on Cerebras; do not
wire it into `/orch` until the model ID is live on the Cerebras API.
- **Claude Code / Codex** = judgment for hard design and tricky refactors.
- **Claude Code / Codex / Antigravity** = judgment for hard design and tricky refactors.
Antigravity uses Google OAuth (run interactive `agy` to sign in), not a Gemini API key.
- **OpenCode** = opt-in providers (Z.AI GLM, Groq, OpenRouter) via
`/providers`.

Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ All notable changes to qmax-code. Versions follow [Semantic Versioning](https://

## [Unreleased]

### Added
- Antigravity CLI (`agy`) is a first-class `/orch` backend. It runs Google's
native agent harness as a subprocess (`agy -p --output-format stream-json`),
attaches qmax tools through `~/.gemini/config/mcp_config.json`, and authenticates
with **Google OAuth** (interactive `agy` browser sign-in) using the same Google account as
AI Studio. A Gemini API key is not required. Select it with `/agy`,
`/orch`, or `--backend agy`.

## [1.32.0] - 2026-09-05

### Added
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

qmax-code is a **Go** terminal **QA** agent (Go 1.25.13+). It ships as one
compiled binary: `curl | bash` installs a file, not a Node or Python runtime.
Claude Code, Codex, and OpenCode are separate subprocesses that `/orch` can
Claude Code, Codex, Antigravity, and OpenCode are separate subprocesses that `/orch` can
host; they are not this repository's runtime.

**Positioning:** not an IDE, not a faster Claude. Cursor owns the editor.
Claude Code / Codex own hard coding. qmax-code owns QA (tests, crawls, review,
Claude Code / Codex / Antigravity own hard coding. qmax-code owns QA (tests, crawls, review,
receipts) and switches inference in `/orch`. **Cerebras** is the fast path
(~1000–2000+ tok/s: GPT-OSS 120B, GLM 4.7, Gemma 4; **Qwen 3.8 coming soon**).
Do not add Qwen to the picker until Cerebras publishes the live model ID.
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@ Thanks for your interest in improving `qmax-code`. This document covers everythi
| Requirement | Notes |
|---|---|
| **Go 1.25.13+** | See `go.mod` for the exact version. `go version` to check. |
| **Inference backend** | The direct API path needs an Anthropic key. You can instead develop against a logged-in Claude Code/Codex CLI, an enabled OpenCode provider, Cerebras, or Ollama. |
| **Inference backend** | The direct API path needs an Anthropic key. You can instead develop against a logged-in Claude Code/Codex/Antigravity CLI, an enabled OpenCode provider, Cerebras, or Ollama. |
| **QualityMax account** | Required only for connected cloud tools (test generation, crawl, repo review). Standalone `--local` development and most unit tests do not need one. |

Optional but useful:

- [golangci-lint](https://golangci-lint.run/usage/install/) — the CI linter; run it locally to catch issues before pushing
- [Claude Code](https://claude.ai/download), [Codex](https://github.com/openai/codex), or [OpenCode](https://opencode.ai) — only needed when working on that CLI orchestration backend
- [Claude Code](https://claude.ai/download), [Codex](https://github.com/openai/codex), [Antigravity](https://antigravity.google/docs/cli/install/), or [OpenCode](https://opencode.ai) — only needed when working on that CLI orchestration backend
- [Ollama](https://ollama.com) or a Cerebras key — only needed when working on that inference adapter

---
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ repositories, heal scripts, and prepare CI. It calls the QualityMax API
directly, so the separate `qmax` CLI is optional.

Use the built-in agent with Anthropic, Cerebras, or Ollama, or use
**orchestration mode** to run Claude Code, Codex, or OpenCode with the same qmax
**orchestration mode** to run Claude Code, Codex, Antigravity, or OpenCode with the same qmax
QA tools through MCP.

![Five open QualityMax tools and where qmax-code sits among them](docs/img/family.svg)
Expand Down Expand Up @@ -175,7 +175,7 @@ background-job health—remain experimental and are only exposed when
multimodal input for Gemma 4, optional reasoning effort, and live speed
metrics.
- **27 managed QA skills:** the catalog is refreshed into Claude Code, Codex,
and OpenCode and can be inspected or reinstalled with `/skills`.
OpenCode, and Antigravity and can be inspected or reinstalled with `/skills`.
- **Improved terminal sessions:** a stable input panel, prompt queue, session
status and cost metrics, compact/verbose output toggle, ten themes, saved
sessions, and optional cloud sync.
Expand Down Expand Up @@ -336,6 +336,7 @@ troubleshooting.
| Anthropic API | `/api` or `/orch` | `ANTHROPIC_API_KEY` or OS keychain | Built-in agent loop; tool set follows connected vs. standalone mode. |
| Claude Code | `/cc` or `/orch` | Local Claude Code login | CLI subprocess; qmax tools arrive through MCP. Uses Claude Code authentication and plan/provider billing; see [subscription setup](docs/ORCHESTRATION.md#claude-code-subscription-billing). |
| Codex | `/codex` or `/orch` | Local Codex login | CLI subprocess using the user's OpenAI access; qmax tools arrive through MCP. |
| Antigravity | `/agy` or `/orch` | Google OAuth (run `agy` once to sign in) | CLI subprocess using the same Google account as AI Studio. No Gemini API key. qmax tools arrive through MCP. |
| Cerebras | `/gemma`, `/orch`, or `--backend cerebras` | `CEREBRAS_API_KEY` or OS keychain | Built-in native function calling. Fast inference (~1000–2000+ tok/s): GPT-OSS 120B, GLM 4.7, Gemma 4 (vision + effort). **Qwen 3.8 coming soon.** |
| OpenCode | `/opencode` or `/orch` | Per-provider key in OS keychain | CLI subprocess for opt-in Z.AI, Groq, and OpenRouter providers. |
| Ollama | `/ollama` or `/orch` | Configured Ollama endpoint | Self-hosted inference; configure the URL and model first. |
Expand Down Expand Up @@ -373,6 +374,7 @@ agent. qmax-code declares that dependency in the Codex skill metadata.

```text
/orch Pick backend, model, and effort
/agy Switch to Antigravity (Google OAuth)
/providers List opt-in OpenCode providers
/providers enable groq Store a provider key and enable its models
/skills Show managed QA skills and install status
Expand Down
11 changes: 7 additions & 4 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,13 @@ qmax tools supplied through MCP.
Only use Unattended mode in a trusted, recoverable workspace. Neither mode
creates a sandbox or worktree boundary.

Claude Code and Codex can optionally receive a user-level qmax MCP entry in
`~/.claude/settings.json` or `~/.codex/config.toml`. That makes qmax tools
available whenever the CLI is launched, not only inside qmax-code. OpenCode
uses a separate qmax-managed overlay at `~/.qmax-code/opencode.json`.
Claude Code, Codex, and Antigravity can optionally receive a user-level qmax MCP
entry in `~/.claude/settings.json`, `~/.codex/config.toml`, or
`~/.gemini/config/mcp_config.json`. That makes qmax tools available whenever
the CLI is launched, not only inside qmax-code. OpenCode uses a separate
qmax-managed overlay at `~/.qmax-code/opencode.json`. Antigravity authenticates
with Google OAuth via interactive `agy` (browser sign-in); qmax-code does not store a Gemini API
key for that backend.

qmax-code also installs managed QA skills into the selected CLI's user-level
skills directory. See [Orchestration mode](docs/ORCHESTRATION.md) for the
Expand Down
10 changes: 8 additions & 2 deletions config_command.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,12 @@ func printConfig() {
} else {
fmt.Print(" (WARNING: opencode binary not found in PATH)")
}
case "agy":
if bin := agent.FindAgy(); bin != "" {
fmt.Printf(" (agy found: %s; Google OAuth)", bin)
} else {
fmt.Print(" (WARNING: agy binary not found in PATH)")
}
}
fmt.Println()
if len(cfg.EnabledProviders) > 0 {
Expand Down Expand Up @@ -276,10 +282,10 @@ func setConfigField(key, value string) error {

case "backend":
switch value {
case "", "api", "cc", "codex", "cerebras", "opencode":
case "", "api", "cc", "codex", "agy", "cerebras", "opencode":
cfg.Backend = value
default:
return fmt.Errorf("invalid backend %q; allowed: api, cc, codex, cerebras, opencode", value)
return fmt.Errorf("invalid backend %q; allowed: api, cc, codex, agy, cerebras, opencode", value)
}

case "cerebras_key":
Expand Down
2 changes: 1 addition & 1 deletion config_command_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func TestSetConfigField_DefaultFrameworkRejectsBadValues(t *testing.T) {
func TestSetConfigField_BackendValidation(t *testing.T) {
withTempHome(t)

for _, b := range []string{"api", "cc", "codex", "cerebras", ""} {
for _, b := range []string{"api", "cc", "codex", "agy", "cerebras", ""} {
if err := setConfigField("backend", b); err != nil {
t.Errorf("backend %q should be accepted: %v", b, err)
}
Expand Down
9 changes: 5 additions & 4 deletions docs/COMMANDS.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ qmax-code serve --mcp
| `--verbose` | Show tool calls and raw responses. |
| `--professional` | Disable the cat personality for this run. |
| `-q` | Reserved for a future quiet/CI output mode; currently has no effect. |
| `--backend NAME` | Override the saved backend with `api`, `cc`, `codex`, `cerebras`, or `opencode`. |
| `--backend NAME` | Override the saved backend with `api`, `cc`, `codex`, `agy`, `cerebras`, or `opencode`. |
| `--version` | Print the version and exit. |

Non-interactive stdin must include either `-p` or a positional prompt. This
Expand Down Expand Up @@ -87,7 +87,7 @@ qmax-code codex connect

These attach the active local Claude Code or a fresh Codex login to the
currently authenticated QualityMax user. They are separate from selecting a
backend with `/cc` or `/codex`.
backend with `/cc`, `/codex`, or `/agy`.

## Configuration subcommand

Expand Down Expand Up @@ -151,6 +151,7 @@ prints the selected local manifest. `verify` checks its signature offline.
| `/api` | Switch to the direct Anthropic API. |
| `/cc` | Switch to the Claude Code CLI backend. |
| `/codex` | Switch to the Codex CLI backend. |
| `/agy` | Switch to the Antigravity CLI backend (Google OAuth). |
| `/opencode` | Switch to the OpenCode CLI backend. |
| `/gemma [none\|low\|medium\|high]` | Activate Gemma 4 on Cerebras with the chosen reasoning level. |
| `/gemma off` | Return to the direct Anthropic API. |
Expand All @@ -174,7 +175,7 @@ behavior.
| `/status` | Show connection, session, usage, and model information. |
| `/cost` | Show token usage and estimated model cost. |
| `/update` | Check for a newer qmax-code release and install it when found. |
| `/plan` | Show the subscription coding-plan usage window: elapsed, turns, and time until the rolling 5-hour limit resets (cc/codex/opencode backends). |
| `/plan` | Show the subscription coding-plan usage window: elapsed, turns, and time until the rolling 5-hour limit resets (cc/codex/agy/opencode backends). |

In standalone mode, `/connect` and `/project` explain how to return to connected
mode. `/status`, `/context`, and `/config` identify the active standalone
Expand All @@ -200,7 +201,7 @@ after the current turn.
| Command | Action |
| --- | --- |
| `/skills` | List all qmax QA skills and their install status by CLI backend. |
| `/skills install` | Refresh skills for Claude Code, Codex, and OpenCode. |
| `/skills install` | Refresh skills for Claude Code, Codex, OpenCode, and Antigravity. |
| `/config` | Show selected session configuration. |
| `/set KEY VALUE` | Change a supported setting from the REPL. |
| `/keys` | Open the interactive API-key menu. |
Expand Down
Loading
Loading