0
0

Compiler noise
→ structured JSON.

ZeroTest runs any command and translates errors into clean, machine-readable diagnostics. File paths, line numbers, severity, error codes — all in one JSON payload.

/ features

8 languages

Python, Go, TypeScript, JavaScript, Rust, C/C++, Java, Ruby. Each with format-specific parsers.

CLI + MCP

Use from your terminal or plug into any MCP-compatible agent. Same binary, two modes.

Auto-detect

Language and toolchain detected from the command name and output. Override with hints when needed.

Single binary

Go. No runtime deps. Drop it in your path and go. Mac, Linux, Windows.

/ languages

Language Toolchains Format
Python mypy, pytest, flake8, pylint, runtime mypy format + tracebacks
Go go build, go vet, golangci-lint file:line:col: message
TypeScript tsc TSXXXX codes
JavaScript eslint, prettier line:col severity rule-id
Rust rustc, cargo error[EXXXX] + panics
C / C++ gcc, g++, clang, clang++ file:line:col: severity:
Java javac, maven, gradle file:line:col: error:
Ruby ruby, rake, rails syntax + method errors

Add a language → contributing guide

/ install

No notarization, no fees — grab the binary straight from the terminal.

go install github.com/scopophobic/ZeroTest@latest

Or download with curl:

# macOS / Linux
curl -sL https://github.com/scopophobic/ZeroTest/releases/latest/download/zerotest-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/') -o /usr/local/bin/zerotest && chmod +x /usr/local/bin/zerotest

# Windows (PowerShell)
curl -sL https://github.com/scopophobic/ZeroTest/releases/latest/download/zerotest-windows-amd64.exe -o zerotest.exe
Direct download links
macOS (Apple Silicon)
arm64
macOS (Intel)
amd64
Linux
amd64
Windows
amd64

/ usage

Run any command. JSON goes to stdout. Exit code matches the wrapped command.

# Run a type check
$ zerotest python -m mypy src/app.py

# Build check
$ zerotest go build ./...

# Lint
$ zerotest tsc --noEmit

# Compile
$ zerotest gcc main.c -o main

# Long-running (e.g. Django) — capture errors w/o waiting forever
$ zerotest --timeout 5000 python manage.py runserver

# Help / version
$ zerotest -h
$ zerotest -v

--timeout <ms> kills the process after N ms and returns diagnostics so far. Default 120s. Useful for servers that print errors but never exit.

Run with no arguments to start the MCP server. Then configure your client.

# Start server
$ zerotest

Claude Desktop config:

{
  "mcpServers": {
    "zerotest": {
      "command": "/path/to/zerotest",
      "args": []
    }
  }
}

Example response

{
  "ok": false,
  "runtime_metadata": {
    "language": "python",
    "toolchain": "mypy",
    "execution_time_ms": 14,
    "exit_code": 1
  },
  "diagnostics": [
    {
      "code": "DT_PY_OPERATOR",
      "severity": "error",
      "message": "Unsupported operand types",
      "location": {
        "file": "src/app.py",
        "line": 42,
        "column": 18
      }
    }
  ]
}