Context Harness v0.3.0 closes the gap between “I installed it” and “I understand what it’s doing.” Four new CLI commands, Docker support, and scoring transparency that makes tuning possible instead of guesswork.

ctx stats — what’s in my database?

After syncing, the first question is always “did it work?” Now you can answer it:

$ ctx stats
Context Harness — Database Stats
================================

  Database:    ./data/ctx.sqlite
  Size:        14.2 MB

  Documents:   216
  Chunks:      1386
  Embedded:    1386 / 1386 (100%)

  By source:
  SOURCE                     DOCS   CHUNKS   EMBEDDED   LAST SYNC
  ----------------------------------------------------------------------------
  git:platform                 89      412        412   3 hours ago
  filesystem:docs             127      584        584   1 day ago
  script:jira                  0        0          0   never

Document counts, chunk counts, embedding coverage percentage, per-source breakdown, and last sync time. One command, instant confidence.

ctx search --explain — why did this rank here?

Search results show a single score. When a result feels wrong, you couldn’t tell if the problem was keyword matching, semantic similarity, or the alpha weighting between them. Now you can:

$ ctx search "deployment process" --mode hybrid --explain
Search: mode=hybrid, alpha=0.60, candidates: 42 keyword + 80 vector

1. [0.87] git:platform / deployment-guide.md
    scoring: keyword=0.712  semantic=0.981  → hybrid=0.873
    ...

2. [0.64] filesystem:docs / deploy-notes.md
    scoring: keyword=0.890  semantic=0.471  → hybrid=0.639
    ...

Each result shows the normalized keyword score, semantic score, the alpha weight, and how they combined into the final hybrid score. You can see exactly what’s happening and adjust hybrid_alpha based on data instead of guessing.

ctx export — native JSON export

The static site search story (ctx-search.js) previously required a Python one-liner to extract data.json from SQLite. That’s now a first-class command:

# To a file
$ ctx export --output site/static/docs/data.json
Exported 216 documents, 1386 chunks to site/static/docs/data.json

# To stdout for piping
$ ctx export | gzip > data.json.gz

No Python dependency, same JSON schema, works in CI pipelines.

ctx completions — tab completion for your shell

# Bash
$ ctx completions bash > ~/.local/share/bash-completion/completions/ctx

# Zsh
$ ctx completions zsh > ~/.zfunc/_ctx

# Fish
$ ctx completions fish > ~/.config/fish/completions/ctx.fish

Covers all commands, subcommands, and flags.

Docker support

A Dockerfile and docker-compose.yml are now included in the repo. The Dockerfile is a multi-stage build that produces a minimal Debian image with the ctx binary, your config, connectors, tools, and agents baked in:

$ docker compose up -d
$ curl localhost:7331/health
{"status":"ok","version":"0.3.0"}

See the deployment guide for the full Docker setup including persistent volumes, health checks, and environment variable configuration.

Upgrading

# From source
cargo install --path . --force

# Or download pre-built binary
curl -L https://github.com/parallax-labs/context-harness/releases/latest/download/ctx-macos-aarch64.tar.gz | tar xz

No breaking changes. All existing configs, databases, and MCP integrations continue to work.

What’s next

The focus shifts to dogfooding — using Context Harness on real repos and real questions to find where retrieval quality falls short. The --explain flag is the tool for that. Expect tuning improvements, built-in Lua connectors for common sources, and possibly a reranker if the data justifies it.