> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qwedai.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

> Install QWED SDKs for Python, TypeScript, Go, or Rust. Includes self-hosted full stack setup instructions for on-premise deployments.

Get QWED up and running in minutes.

## Python SDK

```bash theme={null}
pip install qwed
```

After installing, run the onboarding wizard to set up verification engines, configure your LLM provider, and generate a local API key:

```bash theme={null}
qwed init
```

The wizard runs four checks. First, it confirms that core engines (SymPy, Z3, AST, SQLGlot) are installed. Next, it walks you through selecting a provider — NVIDIA NIM, OpenAI, Anthropic, Google Gemini, or any OpenAI-compatible endpoint. It then validates your credentials. Finally, it bootstraps a ready-to-use API key. For CI pipelines, use `--non-interactive`. See the [CLI reference](https://docs.qwedai.tech/advanced/cli.md) for all options.

After init, verify your setup and run the built-in test suite:

```bash theme={null}
qwed doctor  # system health check — engines, provider, server, database
qwed test    # 12 deterministic tests — all must pass before production
```

`qwed doctor` reports the status of verification engines, LLM provider connectivity, and the database. `qwed test` runs deterministic tests across Math, Logic, SQL, and Code engines to confirm everything works correctly. See the [CLI reference](https://docs.qwedai.tech/advanced/cli.md) for details on both commands.

### Requirements

* Python 3.10+
* Optional: Redis (for caching)

### Symbolic engine (optional)

From v8.0.0, the Symbolic engine runs CrossHair only inside a Docker sandbox. Install the `symbolic` extra, which includes CrossHair and the `docker` client, then build the sandbox image from a qwed-verification checkout:

```bash theme={null}
pip install "qwed[symbolic]"
docker build -t qwed-crosshair-sandbox:0.0.101 docker/crosshair-sandbox
```

The image comes from `docker/crosshair-sandbox/Dockerfile` and is never pulled at runtime. To use a different tag, set `QWED_CROSSHAIR_IMAGE`. Without Docker or the image, symbolic verification returns `BLOCKED`. See [Docker sandbox requirement](https://docs.qwedai.tech/advanced/symbolic-limits.md#docker-sandbox-requirement).

## TypeScript SDK

```bash theme={null}
npm install @qwed-ai/sdk
# or
yarn add @qwed-ai/sdk
# or
pnpm add @qwed-ai/sdk
```

## Go SDK

```bash theme={null}
go get github.com/QWED-AI/qwed-verification/sdk-go/v9@v9.1.0
```

## Rust SDK

```toml theme={null}
# Cargo.toml
[dependencies]
qwed = "9.1.0"
```

***

## Full stack (self-hosted)

To run the complete QWED stack locally (API server, Postgres, Redis, Jaeger, Prometheus, and Grafana), use Docker Compose:

```bash theme={null}
# Clone the repository
git clone https://github.com/QWED-AI/qwed-verification.git
cd qwed-verification

# Copy the settings template, then fill in every required value
cp deploy/.env.example deploy/.env

# Build and start the stack from the repository root
docker compose -f deploy/docker-compose.yml up -d
```

Compose refuses to start while a required value in `deploy/.env` is empty. See [Self-hosting](https://docs.qwedai.tech/advanced/self-hosting.md#quick-start) for the full list.

To run only the API server from source instead:

```bash theme={null}
pip install -e ".[server]"
python -m uvicorn qwed_new.api.main:app --reload
```

### Docker image

The `qwedai/qwed-verification` image on Docker Hub runs the API server on port 8000. Pass the required secrets from your shell when you start it:

```bash theme={null}
# Generate each secret once and keep it. Changing the lookup or audit key later
# invalidates existing API keys or audit signatures.
for name in API_KEY_SECRET QWED_JWT_SECRET_KEY QWED_API_KEY_LOOKUP_SECRET QWED_AUDIT_SECRET_KEY; do
  export "$name=$(python -c 'import secrets; print(secrets.token_urlsafe(48))')"
done

docker run -p 8000:8000 \
  -v qwed-data:/var/lib/qwed \
  -e QWED_CORS_ORIGINS="http://localhost:3000" \
  -e API_KEY_SECRET \
  -e QWED_JWT_SECRET_KEY \
  -e QWED_API_KEY_LOOKUP_SECRET \
  -e QWED_AUDIT_SECRET_KEY \
  qwedai/qwed-verification:9.1.0
```

The server names no model. For requests that use a provider (natural-language, logic, statistics, and fact), also pass the provider's settings, for example `-e ACTIVE_PROVIDER -e OPENAI_API_KEY -e OPENAI_MODEL`. The container doesn't read the `qwed init` settings on your host.

> [!NOTE]
>
> The image runs the API server from version 8.0.0. Earlier tags ran the QWED GitHub Action. To scan a repository, use the [GitHub Action](https://docs.qwedai.tech/advanced/github-action.md) instead of the image.

### Infrastructure URLs

| Service | URL |
| - | - |
| API | [http://localhost:8000](http://localhost:8000) |
| Grafana | [http://localhost:3000](http://localhost:3000) |
| Prometheus | [http://localhost:9090](http://localhost:9090) |
| Jaeger | [http://localhost:16686](http://localhost:16686) |

> **Enterprise support coming soon:** Managed hosting and dedicated support. Contact [support@qwedai.tech](mailto:support@qwedai.tech)

***

## Next steps

* [Quick start guide](https://docs.qwedai.tech/getting-started/quickstart.md)
* [Core concepts](https://docs.qwedai.tech/getting-started/concepts.md)


## Related topics

- [QWED CLI reference](https://docs.qwedai.tech/advanced/cli.md)
- [QWEDLocal — client-side verification](https://docs.qwedai.tech/advanced/qwed-local.md)
- [Agentic security guards for the QWED Python SDK](https://docs.qwedai.tech/sdks/guards.md)
- [QWED A2A quick start for agent-to-agent verification](https://docs.qwedai.tech/a2a/quickstart.md)
- [QWED Infra: verification for Terraform, IAM, and Kubernetes](https://docs.qwedai.tech/infra/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.