{"id":"243b1ac1-1a10-4079-987a-30bfd1d74d32","slug":"context-harness","kind":"mcp","name":"context-harness","summary":"Local-first context ingestion and retrieval for AI tools. SQLite + embeddings + MCP server for Cursor & Claude.","owner":"parallax-labs","repoUrl":"https://github.com/parallax-labs/context-harness","license":"AGPL-3.0","licenseTier":"strong-copyleft","trust":"community","stars":42,"match":null,"fewStars":false,"format":"mcp","createdAt":"2026-02-21T22:09:32.000Z","addedAt":"2026-10-14T05:16:17.746Z","logoUrl":"https://avatars.githubusercontent.com/u/76528045?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["memory-knowledge","databases","search"],"tags":["claude","cursor","embeddings","local-ai","rag","rust","sqlite"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-15T03:08:32.637Z","sample":false,"url":"https://conduits.dev/tools/context-harness","language":"Rust","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# Context Harness\n\n[![GitHub stars](https://img.shields.io/github/stars/parallax-labs/context-harness?style=flat)](https://github.com/parallax-labs/context-harness)\n[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE)\n[![Latest release](https://img.shields.io/github/v/release/parallax-labs/context-harness?include_prereleases&style=flat)](https://github.com/parallax-labs/context-harness/releases/latest)\n\n**A local-first knowledge and agent runtime for AI tools.**\n\n*by [Parallax Labs](https://github.com/parallax-labs)*\n\n**[📖 Documentation & guides](https://parallax-labs.github.io/context-harness/)** · **[Try the demo](https://parallax-labs.github.io/context-harness/demo/)**\n\n---\n\nContext Harness turns project knowledge into infrastructure AI can actually use. It\ningests files, Git repositories, S3, and custom sources into an inspectable local\nSQLite index, then gives you two execution paths: reusable profiles for clients such\nas Cursor and Claude, or governed local agents with scoped tools, durable tasks,\ntyped outcomes, checkpoints, and conservative recovery.\n\n## Features\n\n- **Connector-driven ingestion** — plug in any source (filesystem, Git repos, S3 buckets, Lua scripts)\n- **Multi-format file support** — plain text (e.g. Markdown, `.txt`) plus **PDF**, **Word** (`.docx`), **PowerPoint** (`.pptx`), and **Excel** (`.xlsx`) with automatic text extraction when you include those extensions in `include_globs`\n- **Extension registries** — install community connectors, tools, and profiles from Git-backed repos\n- **Local-first storage** — SQLite with FTS5 for keyword search\n- **Embedding pipeline** — local (fastembed or tract), Ollama, and OpenAI embeddings with automatic batching, retry, and staleness detection\n- **Hybrid retrieval** — keyword + semantic + weighted merge (configurable alpha)\n- **MCP server** — expose context to Cursor and other AI tools via HTTP\n- **Local agents** — run durable, workspace-scoped agents with declarative tools, history, inspection, and resume support\n- **Local generation** — use OpenAI or a native loopback-only Ollama adapter with no silent fallback or model download\n- **Durable background tasks** — enqueue bounded work, operate independent workers, and correlate task/run outcomes\n- **Application host APIs** — register trusted compiled providers and tools, then refresh host-known changed documents without a full scan\n- **CLI-first** — everything accessible via the `ctx` command\n- **Incremental sync** — checkpointed, idempotent, deterministic\n\n## Quick Start\n\nFor a 5-minute walkthrough with copy-paste config, see the [Quick Start guide](https://parallax-labs.github.io/context-harness/docs/getting-started/quick-start/) on the docs site.\n\n### 1. Install\n\n**Pre-built binaries** (recommended):\n\nDownload the latest release from [GitHub Releases](https://github.com/parallax-labs/context-harness/releases/latest):\n\n```bash\n# macOS (Apple Silicon)\ncurl -L https://github.com/parallax-labs/context-harness/releases/latest/download/ctx-macos-aarch64.tar.gz | tar xz\nsudo mv ctx /usr/local/bin/\n\n# macOS (Intel)\ncurl -L https://github.com/parallax-labs/context-harness/releases/latest/download/ctx-macos-x86_64.tar.gz | tar xz\nsudo mv ctx /usr/local/bin/\n\n# Linux (x86_64)\ncurl -L https://github.com/parallax-labs/context-harness/releases/latest/download/ctx-linux-x86_64.tar.gz | tar xz\nsudo mv ctx /usr/local/bin/\n\n# Linux (aarch64)\ncurl -L https://github.com/parallax-labs/context-harness/releases/latest/download/ctx-linux-aarch64.tar.gz | tar xz\nsudo mv ctx /usr/local/bin/\n```\n\nWindows: download `ctx-windows-x86_64.zip` from the releases page and add `ctx.exe` to your PATH.\n\n**Nix (NixOS / nix-darwin):**\n\nInstall straight from the repo flake — no release tarball needed.\n\nFrom a clone:\n\n```bash\n# Build (full binary with local embeddings)\nnix build .#default\n./result/bin/ctx --version\n\n# Or install into your user profile (on $PATH)\nnix profile install .#default\n```\n\nWithout cloning (flake URL):\n\n```bash\nnix profile install github:parallax-labs/context-harness#default\n```\n\nThe flake provides two packages:\n\n| Package | Description |\n|---------|-------------|\n| **`.#default`** | Full build with local embeddings (fastembed; model downloads on first use). |\n| **`.#no-local-embeddings`** | Minimal binary, no local embeddings (use OpenAI or Ollama only). |\n\nUse `nix develop` for a development shell. To use Context Harness inside your own flake (NixOS, Home Manager), see the [Nix flake guide](https://parallax-labs.github.io/context-harness/docs/getting-started/nix-flake/).\n\n**From source:**\n\nLocal embeddings have **no system dependencies**; models are downloaded on first use.\n\n- **Linux:** Default features use rustls (no system OpenSSL). No extra packages required for a normal `cargo build`.\n- **macOS:** The build links against the C++ standard library (used by some dependencies). If you see `library not found for -lc++`, install the Xcode Command Line Tools: `xcode-select --install`. If you use Nix, run `nix develop` first so the shell provides Zig as the C/C++ compiler; then `cargo build` works.\n\n```bash\ncargo install --path crates/context-harness\n```\n\n### 2. Configure\n\n```bash\ncp config/ctx.example.toml config/ctx.toml\n# Edit config/ctx.toml with your settings\n```\n\nConfig path defaults to `./config/ctx.toml`; use `--config` to override. See [configuration reference](https://parallax-labs.github.io/context-harness/docs/reference/configuration/) for all options.\n\n### 3. Initialize and sync\n\n```bash\nctx init\nctx sync all          # sync all connectors in parallel\nctx sync git:platform # or sync a specific connector\n```\n\n### 4. Search\n\n```bash\nctx search \"your query\"              # keyword (default)\nctx search \"your query\" --mode hybrid   # keyword + semantic (needs embeddings)\nctx embed pending                    # backfill embeddings if using local/ollama/openai\n```\n\n### 5. MCP server (Cursor, Claude, etc.)\n\n```bash\nctx serve mcp\n```\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"context-harness\": {\n      \"url\": \"http://127.0.0.1:7331/mcp\"\n    }\n  }\n}\n```\n\n### 6. Add a reusable profile\n\nProfiles give Cursor, Claude, and custom MCP clients a repeatable role without\nmoving the conversation into Context Harness:\n\n```bash\nctx profile init code-reviewer\nctx profile validate\nctx profile test code-reviewer\n```\n\nSee [Profiles](https://parallax-labs.github.io/context-harness/docs/profiles/overview/)\nfor inline TOML, Lua, Rust, MCP, and REST examples.\n\n### 7. Run a local agent\n\nStart from the generic [`examples/local-agents`](examples/local-agents) setup or\nuse the reusable [`context-harness-agents` skill](skills/context-harness-agents)\nto configure a project. Then validate and run it from the workspace:\n\n```bash\nctx tool bindings validate\nctx agent validate\nctx agent run project-researcher \"Summarize the architecture and cite the relevant files\"\n```\n\nSee the [local agents guide](https://parallax-labs.github.io/context-harness/docs/agents/build-local-agents/)\nfor explicit model, connector, agent, tool, permission, history, inspection, and\nresume configuration. The [agent setup skill guide](https://parallax-labs.github.io/context-harness/docs/agents/setup-skill/)\ncovers installation, invocation, customization, generated files, and validation.\n\n## Architecture\n\n```\nSources → Ingest + Index → Canonical SQLite Knowledge → CLI / MCP Profiles / Governed Agents\n```\n\n### Data Flow\n\n1. **Connector** pulls items from a source (filesystem, Git, S3, Lua scripts)\n2. Items are normalized into a standard `Document`\n3. Documents are chunked and stored in SQLite\n4. FTS5 index enables keyword search over chunks\n5. Chunks are embedded (local, Ollama, or OpenAI) and vectors stored as blobs\n6. Query engine supports keyword, semantic, and hybrid retrieval\n7. Results exposed via CLI and MCP-compatible HTTP server\n\n## CLI Commands\n\nFull reference: [CLI docs](https://parallax-labs.github.io/context-harness/docs/reference/cli/).\n\n| Command | Description |\n|---------|-------------|\n| `ctx init` | Initialize database schema |\n| `ctx stats` | Show database statistics (docs, chunks, embeddings) |\n| `ctx sources` | List available connectors |\n| `ctx sync <connector>` | Ingest from a connector (`all`, `git`, `git:name`) |\n| `ctx search \"<query>\"` | Search indexed documents |\n| `ctx search --explain` | Search with scoring breakdown per result |\n| `ctx get <id>` | Retrieve a document by ID |\n| `ctx embed pending` | Backfill missing embeddings |\n| `ctx embed rebuild` | Delete and regenerate all embeddings |\n| `ctx export` | Export index as JSON for static site search |\n| `ctx serve mcp` | Start MCP-compatible HTTP server |\n| `ctx connector init <name>` | Scaffold a new Lua connector |\n| `ctx connector test <path>` | Test a connector without writing to DB |\n| `ctx registry list` | List configured registries and available extensions |\n| `ctx registry install` | Clone configured registries |\n| `ctx registry update` | Pull latest changes for registries |\n| `ctx registry search <q>` | Search extensions by name, tag, or description |\n| `ctx registry add <ext>` | Scaffold a config entry for a registry extension |\n| `ctx tool bindings validate` | Validate declarative tool bindings without executing them |\n| `ctx profile list` | List reusable MCP prompt profiles |\n| `ctx profile test <name>` | Resolve and preview a profile without calling a model |\n| `ctx profile init <name>` | Scaffold a Lua profile |\n| `ctx agent validate` | Validate local agent resources and their tool references |\n| `ctx agent run <name> <prompt>` | Run a workspace-scoped local agent |\n| `ctx agent history` | List durable runs for the current workspace |\n| `ctx agent inspect <run-id>` | Inspect run state, permissions, and tool activity |\n| `ctx agent resume <run-id>` | Resume an interrupted or awaiting-input run |\n| `ctx completions <shell>` | Generate shell completions (bash, zsh, fish) |\n\n## HTTP API\n\nThe server exposes an MCP Streamable HTTP endpoint and REST endpoints. See [MCP server reference](https://parallax-labs.github.io/context-harness/docs/reference/mcp-server/) for details. REST responses follow the schemas in [`docs/SCHEMAS.md`](docs/SCHEMAS.md).\n\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | `/mcp` | MCP Streamable HTTP endpoint (JSON-RPC for Cursor, Claude, etc.) |\n| POST | `/tools/search` | Search indexed documents (REST) |\n| POST | `/tools/get` | Retrieve a document by ID (REST) |\n| GET | `/tools/list` | List all registered tools (REST) |\n| GET | `/tools/sources` | List connector status (REST) |\n| GET | `/profiles/list` | List all registered profiles (REST) |\n| POST | `/profiles/{name}/prompt` | Resolve a profile prompt (REST) |\n| GET | `/health` | Health check |\n\nErrors follow a consistent format:\n\n```json\n{\n  \"error\": {\n    \"code\": \"not_found\",\n    \"message\": \"document not found: abc-123\"\n  }\n}\n```\n\n## Connector Configuration\n\nAll connector types support **named instances** — configure multiple of each. Full reference: [Built-in connectors](https://parallax-labs.github.io/context-harness/docs/connectors/built-in/).\n\n### Filesystem Connector\n\nScans a local directory. **Supported formats:** plain text (e.g. `.md`, `.txt`, `.rs`) are always ingested as UTF-8. To also index **PDF**, **Word** (`.docx`), **PowerPoint** (`.pptx`), and **Excel** (`.xlsx`), add those extensions to `include_globs` (e.g. `\"**/*.pdf\"`, `\"**/*.docx\"`); they are read as binary and extracted automatically.\n\n```toml\n[connectors.filesystem.docs]\nroot = \"./docs\"\ninclude_globs = [\"**/*.md\", \"**/*.txt\", \"**/*.pdf\", \"**/*.docx\"]\nexclude_globs = [\"**/drafts/**\"]\nfollow_symlinks = false\nmax_extract_bytes = 50_000_000 # skip files larger than this (default: 50MB)\n\n[connectors.filesystem.notes]\nroot = \"./notes\"\n```\n\n### Git Connector\n\nIngest documentation from any Git repository — point it at a repo URL and subdirectory:\n\n```toml\n[connectors.git.platform]\nurl = \"https://github.com/acme/platform.git\"   # or git@... or local path\nbranch = \"main\"\nroot = \"docs/\"                                  # scan this subdirectory\ninclude_globs = [\"**/*.md\", \"**/*.rst\"]\nshallow = true                                  # --depth 1 clone\n\n[connectors.git.auth-service]\nurl = \"https://github.com/acme/auth-service.git\"\nbranch = \"main\"\n```\n\nFeatures:\n- Clones on first sync, pulls on subsequent syncs\n- Per-file last commit timestamp and author from `git log`\n- GitHub/GitLab web URLs auto-generated for each file\n- Shallow clone support to minimize disk usage\n- Incremental sync via checkpoint timestamps\n\n### S3 Connector\n\nIngest documentation from Amazon S3 buckets:\n\n```toml\n[connectors.s3.runbooks]\nbucket = \"acme-docs\"\nprefix = \"engineering/runbooks/\"\nregion = \"us-east-1\"\ninclude_globs = [\"**/*.md\", \"**/*.json\"]\n# endpoint_url = \"http://localhost:9000\"   # for MinIO / LocalStack\n```\n\nSet `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables.\n\nFeatures:\n- Pagination for large buckets (1000+ objects)\n- `LastModified` timestamps for incremental sync\n- ETag tracking in metadata\n- Custom endpoint URL for S3-compatible services (MinIO, LocalStack)\n- Glob-based include/exclude filtering on object keys\n\n### Lua Script Connectors\n\nWrite custom connectors in Lua — no recompilation needed. Scripts have access to HTTP, JSON, environment variables, filesystem, base64, crypto, and logging APIs:\n\n```toml\n[connectors.script.jira]\npath = \"connectors/jira.lua\"\ntimeout = 600\nurl = \"https://mycompany.atlassian.net\"\napi_token = \"${JIRA_API_TOKEN}\"\nproject_key = \"ENG\"\n```\n\n```bash\n# Scaffold a new connector\nctx connector init jira\n\n# Test it\nctx connector test connectors/jira.lua\n\n# Sync it\nctx sync script:jira\n```\n\nSee `examples/connectors/github-issues.lua` for a complete example.\n\n## Extension Registries\n\nInstall community connectors, tools, and profiles from Git-backed repositories. See [Registry overview](https://parallax-labs.github.io/context-harness/docs/registry/overview/) and [Usage guide](https://parallax-labs.github.io/context-harness/docs/registry/usage-guide/) on the docs site.\n\n### Install the Community Registry\n\n```bash\nctx registry init --config ./config/ctx.toml\n```\n\nOr during first run, `ctx init` will offer to install it automatically.\n\n### Browse and Install Extensions\n\n```bash\n# List all available extensions\nctx registry list --config ./config/ctx.toml\n\n# Search for a connector\nctx registry search jira --config ./config/ctx.toml\n\n# See details\nctx registry info connectors/jira --config ./config/ctx.toml\n\n# Add it to your config (scaffolds the TOML entry with placeholders)\nctx registry add connectors/jira --config ./config/ctx.toml\n```\n\nTools and profiles from registries are **auto-discovered** at server startup — they appear in `GET /tools/list` and `GET /profiles/list` without explicit config. Connectors need credentials, so they require explicit activation via `ctx registry add`.\n\n### Configure Multiple Registries\n\n```toml\n[registries.community]\nurl = \"https://github.com/parallax-labs/ctx-registry.git\"\npath = \"~/.ctx/registries/community\"\nreadonly = true\nauto_update = true\n\n[registries.company]\nurl = \"git@github.com:myorg/ctx-extensions.git\"\npath = \"~/.ctx/registries/company\"\nreadonly = true\n```\n\nRegistries are resolved with precedence: explicit config > `.ctx/` project-local > personal > company > community.\n\n### Project-Local Extensions\n\nPlace a `.ctx/` directory in your project root with Lua scripts organized as `connectors/<name>/connector.lua`, `tools/<name>/tool.lua`, or `profiles/<name>/profile.lua`. Legacy `agents/<name>/agent.lua` profile extensions remain discoverable. They are auto-discovered from any subdirectory.\n\n### Customize an Extension\n\n```bash\n# Copy to a writable registry for editing\nctx registry override connectors/jira --config ./config/ctx.toml\n```\n\nSee the [registry docs](https://parallax-labs.github.io/context-harness/docs/registry/overview/) for the full specification.\n\n## Embedding Configuration\n\nContext Harness supports three embedding providers:\n\n| Provider | Description | Requires |\n|----------|-------------|----------|\n| `local` | Built-in models via fastembed (primary) or tract (musl/Intel Mac) — fully offline | No system deps; model downloads on first use |\n| `ollama` | Local Ollama instance | Running Ollama with an embedding model |\n| `openai` | OpenAI API | `OPENAI_API_KEY` env var |\n\n### Local (recommended for offline use)\n\n```toml\n[embedding]\nprovider = \"local\"\n# model = \"all-minilm-l6-v2\"  # default, 384 dims — no config needed\n```\n\nSupported models: `all-minilm-l6-v2` (384d), `bge-small-en-v1.5` (384d), `bge-base-en-v1.5` (768d), `bge-large-en-v1.5` (1024d), `nomic-embed-text-v1` (768d), `nomic-embed-text-v1.5` (768d), `multilingual-e5-small` (384d), `multilingual-e5-base` (768d), `multilingual-e5-large` (1024d).\n\n### Ollama\n\n```toml\n[embedding]\nprovider = \"ollama\"\nmodel = \"nomic-embed-text\"\ndims = 768\n# url = \"http://localhost:11434\"  # default\n```\n\n### OpenAI\n\n```toml\n[embedding]\nprovider = \"openai\"\nmodel = \"text-embedding-3-small\"\ndims = 1536\n```\n\nSet the `OPENAI_API_KEY` environment variable before using embedding commands.\n\n### Platform support (release binaries)\n\nPre-built [release binaries](https://github.com/parallax-labs/context-harness/releases) are built for six targets. The **local** embedding provider is included on all targets: primary platforms use fastembed (bundled ORT); Linux musl and macOS Intel use a pure-Rust (tract) backend.\n\n| Binary | Local embeddings | OpenAI / Ollama |\n|--------|------------------|------------------|\n| Linux x86_64 (glibc) | ✅ fastembed | ✅ |\n| Linux x86_64 (musl) | ✅ tract | ✅ |\n| Linux aarch64 | ✅ fastembed | ✅ |\n| macOS x86_64 (Intel) | ✅ tract | ✅ |\n| macOS aarch64 (Apple Silicon) | ✅ fastembed | ✅ |\n| Windows x86_64 | ✅ fastembed | ✅ |\n\n- **Minimal binary (no local embeddings):** `cargo install --path crates/context-harness --no-default-features`\n- **From source on musl or Intel Mac (tract backend):** `cargo build -p context-harness --no-default-features --features local-embeddings-tract`\n- **CI/release:** Linux cross-builds (musl, aarch64) use Zig and [cargo-zigbuild](https://github.com/rust-cross/cargo-zigbuild); no cross-rs or system OpenSSL.\n\nSee the [configuration docs](https://parallax-labs.github.io/context-harness/docs/reference/configuration/) for full platform notes.\n\n## Hybrid Search\n\nHybrid search merges keyword (FTS5/BM25) and semantic (cosine similarity) signals with a configurable alpha:\n\n```toml\n[retrieval]\nhybrid_alpha = 0.6  # 0.0 = keyword only, 1.0 = semantic only\n```\n\nUse `ctx search \"query\" --mode hybrid --explain` to see score breakdowns. See [search reference](https://parallax-labs.github.io/context-harness/docs/reference/search/) and [`docs/HYBRID_SCORING.md`](docs/HYBRID_SCORING.md) for the full specification.\n\n## Server Configuration\n\n```toml\n[server]\nbind = \"127.0.0.1:7331\"\n```\n\nFor production (Docker, systemd, CI), see [Deployment](https://parallax-labs.github.io/context-harness/docs/reference/deployment/).\n\n## Configuration\n\nSee [`config/ctx.example.toml`](config/ctx.example.toml) for a complete example, or the [configuration reference](https://parallax-labs.github.io/context-harness/docs/reference/configuration/) on the docs site.\n\n## Documentation\n\n**Website: [parallax-labs.github.io/context-harness](https://parallax-labs.github.io/context-harness/)**\n\n| Link | Description |\n|------|-------------|\n| [Getting started](https://parallax-labs.github.io/context-harness/docs/getting-started/quick-start/) | Quick Start, [Installation](https://parallax-labs.github.io/context-harness/docs/getting-started/installation/), [Nix flake](https://parallax-labs.github.io/context-harness/docs/getting-started/nix-flake/) |\n| [Configuration](https://parallax-labs.github.io/context-harness/docs/reference/configuration/) | Full `ctx.toml` reference, embedding providers, platform table |\n| [CLI reference](https://parallax-labs.github.io/context-harness/docs/reference/cli/) | Every command and flag |\n| [Connectors & registry](https://parallax-labs.github.io/context-harness/docs/connectors/built-in/) | Built-in connectors, [Lua connectors](https://parallax-labs.github.io/context-harness/docs/connectors/lua-connectors/), [extension registry](https://parallax-labs.github.io/context-harness/docs/registry/overview/) |\n| [Agents](https://parallax-labs.github.io/context-harness/docs/agents/overview/) | Executable local agents, scoped tools, setup skill, permissions, history, and recovery |\n| [Profiles](https://parallax-labs.github.io/context-harness/docs/profiles/overview/) | Reusable MCP roles and context for Cursor, Claude, and custom clients |\n| [Guides](https://parallax-labs.github.io/context-harness/docs/guides/agent-integration/) | External client integration, RAG, chatbots, and multi-repo context |\n| [API (Rustdoc)](https://parallax-labs.github.io/context-harness/api/context_harness/) | Generated Rust API docs |\n| [Local agent execution](docs/spec/0017-local-agent-execution.md) | Standalone agent run/history/inspect commands, supported tools, and a local fake-provider example |\n| [Developer tools and approvals](docs/spec/0018-developer-tools-and-approvals.md) | Workspace/Git tools, patch and process permissions, and interactive approval |\n| [Checkpoints and recovery](docs/spec/0019-checkpoints-recovery-and-artifacts.md) | Safe resume boundaries, run ownership, and large output artifacts |\n| [MCP client tools](docs/spec/0020-mcp-client-tools.md) | External stdio servers, namespaced tools, and startup/call authorization |\n| [Agent delegation](docs/spec/0021-agent-delegation.md) | Named child agents, inherited permissions, shared budgets, and lineage inspection |\n| [Resource MCP prompts](docs/spec/0022-resource-prompt-projection.md) | Stateless prompt projection of standalone agents for existing clients |\n| [Live demo](https://parallax-labs.github.io/context-harness/demo/) | Search a pre-built knowledge base in the browser |\n\nThe site also documents the **search widget** (`ctx-search.js`) for adding ⌘K search to static sites — see the [docs](https://parallax-labs.github.io/context-harness/docs/) for an example.\n\nIf Context Harness is useful to you, consider [starring the repo](https://github.com/parallax-labs/context-harness).\n\n## License\n\nAGPL-3.0 — see [LICENSE](LICENSE)\n\nFor commercial licensing inquiries, contact [Parallax Labs](https://github.com/parallax-labs).\n\n## Contributing\n\nContributions welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n"}