All posts

Let me say it plainly: qmax-code is not based on Claude Code. It's not a fork. It's not a wrapper. It shares zero source code with Anthropic's product. qmax-code was built from scratch in Go, using the Charm framework for the terminal UI, and has been in production since early 2026 — before the Claude Code source leak made headlines.

This is the story of two tools, what motivated building them, and the engineering decisions behind each.

7,951
Lines of Go (qmax-code)
5,114
Lines of Go (qmax CLI)
48
MCP Tools
21
AI Skills

Two Tools, One Mission

QualityMax has two developer-facing tools, and they solve different problems:

qmax-codeqmax (CLI agent)
What it isInteractive AI testing agent (TUI)Traditional CLI for local test execution
InterfaceNatural language chat with Max the catCommands + flags (qmax crawl start)
FrameworkCharm (bubbletea + lipgloss + glamour)Standard Go stdlib
AI modelClaude (sonnet/opus/haiku, user choice)Server-side (QualityMax API)
Session persistenceFull conversation history, resumableConfig only (~/.qamax/)
Key storeOS Keychain (macOS/Linux)Config file
Best forExploration, ad-hoc testing, conversationCI/CD, scripted workflows, headless
Lines of Go7,9515,114

Think of it this way: qmax-code is Claude Code, but for testing. And qmax is gh, but for testing. Different interfaces, same platform underneath.

The Motivation

QualityMax started as a web platform. Import a repo, click buttons, see results. It works — but developers kept telling us the same thing:

"I don't want to leave my terminal to run tests."

We built qmax (the CLI) first. Traditional commands: qmax crawl start --url, qmax test run --project, qmax sast scan. It solved the context-switching problem for scripted workflows.

But then something shifted. Claude Code launched. Cursor added terminal agents. Developers started talking to their tools instead of typing flags.

I realized we needed both: the structured CLI for CI pipelines, and an interactive AI agent for the messy, exploratory work that developers actually do. "Hey, test the checkout flow on an iPhone and tell me what breaks" isn't a command — it's a conversation.

So I built qmax-code.

Why Go + Charm

Go: the universal binary

Both tools are Go. The reasons are pragmatic:

Charm: the terminal UI framework

qmax-code's TUI is built on Charm's Go libraries:

Charm is what makes qmax-code feel like a real application, not a CLI with colored output. Progress bars animate smoothly, code blocks have syntax highlighting, and the layout adapts to terminal width.

Features That Matter

Session persistence

Every conversation is saved to ~/.qmax-code/sessions/. Close your terminal, shut down your laptop, come back tomorrow — your context is still there.

$ qmax-code --list-sessions
ID          Updated             Turns   Tokens   Project
a8f2c1d0    2026-04-03 14:22    12      8,420    #142
b3e7f9a2    2026-04-02 09:15    8       5,100    #89
c1d4e6b8    2026-04-01 17:40    23      14,200   #142

$ qmax-code --resume last

Sessions persist for 7 days. You can resume any of them with --resume <id> or --resume last. The full conversation history, project context, and token usage are preserved.

OS Keychain integration

API keys are stored in your OS keychain — macOS Keychain Access, Linux secret-tool, or fallback to a 0600-permission config file. Never plaintext. Never environment variables that leak into shell history.

$ qmax-code login
/\_/\        /
( o.o )     /
 > ^ < /
/|   |       Let's connect you to QualityMax!

Your auth code: QMAX-8J9EXG
Opening browser to authorize...
Connected as dev@acme.io

Max the cat

Max is the mascot. He has moods: happy, thinking, confused, sad, proud, sleeping, alert. He reacts to what's happening — celebrates when tests pass, looks worried during long-running operations, and offers encouragement when things fail.

You can turn him off with --professional if you're presenting to your VP. But most developers keep him.

Speed and connectivity

qmax-code maintains a persistent connection to the QualityMax API. It doesn't just fire-and-forget — it streams progress bars for test execution, polls for crawl status updates, and shows live results as they arrive.

When the connection drops (laptop sleep, VPN toggle, network change), it reconnects automatically without losing state. The session file acts as a checkpoint — even if the process crashes, --resume last picks up where you left off.

Multi-model support

Choose your AI model per session: auto (haiku for simple tasks, sonnet for complex), sonnet, opus, or haiku. BYOLLM — bring your own Anthropic key.

$ qmax-code --model opus --project-id 142

The 48 MCP Tools

This is what makes qmax-code more than a pretty terminal. The 48 MCP tools expose the entire QualityMax platform to any AI assistant — Claude Code, Cursor, Windsurf, or qmax-code itself.

When you say "scan this repo for security issues," qmax-code doesn't guess. It calls import_repository, then analyze_coverage, then presents the results with Glamour-rendered markdown. The AI orchestrates. The tools execute.

MCP = Model Context Protocol

An open protocol that lets AI assistants call external tools. Instead of the AI hallucinating test results, it calls a real tool that actually runs the test and returns real output. QualityMax has 48 of these tools — the deepest MCP integration in the QA space.

The 21 Skills

Skills are higher-level workflows that chain multiple tools together. They live in .claude/skills/ and work with any AI assistant that supports the skill protocol:

Not Based on Claude Code

The timing is coincidental. The Claude Code source leaked in late March 2026. qmax-code has been in development since late 2025 and in production since early 2026. Here are the facts:

Claude Code writes code. qmax-code verifies that code is safe to ship.

In fact, they work together. Install both, connect QualityMax's 48 MCP tools to Claude Code, and you have the best of both worlds: Claude Code generates your features, qmax-code tests them.

What's Next

The terminal is where developers live. We built qmax-code to meet them there — with real tools, not just a prompt wrapper.

Try qmax-code

One command. Zero config. 15MB. Max the cat will take it from here.

curl -sL https://qualitymax.io/static/install-qmax-code.txt | bash

Learn more →