Metadata-Version: 2.5
Name: apache-aiops
Version: 0.2.0
Summary: Governed Apache HTTP Server diagnosis for config, virtual hosts, modules and HTTP health.
Author-email: Wei Zhou <zhouwei008@gmail.com>
License-Expression: MIT
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: httpx<1.0,>=0.27
Requires-Dist: mcp[cli]<3.0,>=2.0
Requires-Dist: pyyaml<7.0,>=6.0
Requires-Dist: rich<16.0,>=13.0
Requires-Dist: typer<1.0,>=0.12
Description-Content-Type: text/markdown

<!-- mcp-name: io.github.AIops-tools/apache-aiops -->
# Apache AIops

A dedicated, governed MCP server, CLI and skill for Apache HTTP Server with 17 MCP tools. It uses Apache's own `apachectl` diagnostics, optional operator-configured HTTP health and `mod_status` URLs, and bounded reads of an operator-configured error log plus a privacy-preserving access-log status summary. Every call is audited and budgeted by the vendored governance harness.

## What it checks

- Apache version, config syntax, parsed virtual hosts and loaded modules.
- Build options and parsed runtime configuration.
- Parsed config include tree, compiled modules and directives from static modules.
- Optional machine-readable `mod_status` metrics, bounded error-log tail and privacy-preserving access-status summary.
- Optional HTTP health status without downloading the response body.
- `apache_diagnose` correlates the checks and preserves failures as errors with `data: null`.

## Setup from source

Requires Python 3.11+, `uv`, and `apachectl` on the operator host. Run `uv sync --dev`, `uv run apache-aiops init`, then `uv run apache-aiops doctor`. Manual `~/.apache-aiops/config.yaml`:

```yaml
targets:
  - name: local
    apachectl_bin: apachectl
    probe_url: http://127.0.0.1/health
    status_url: http://127.0.0.1/server-status?auto
    error_log: /var/log/apache2/error.log
    access_log: /var/log/apache2/access.log
    timeout: 10
    verify_ssl: true
```

Run `uv run apache-aiops diagnose`. The MCP entry point is `uv run apache-aiops-mcp`. The optional HTTP probe is configured by the operator, not chosen by a tool caller. TLS verification is enabled by default, and `ca_file` accepts a custom CA PEM.

## Scope and verification

`graceful-reload` first runs `configtest`, supports dry-run and two CLI confirmations, and reports an unknown final outcome even if the command returned: existing workers may still serve the old config. It has no safe inverse when the prior config file is not snapshotted. Vhost editing, TLS certificate management and module changes remain outside this release. See [verification](docs/VERIFICATION.md). Missing operations and live-environment feedback are welcome as issues or PRs.
