Metadata-Version: 2.4
Name: canonhq
Version: 1.54.2
Summary: Canon — spec-driven development platform
Project-URL: Homepage, https://canonhq.co
Project-URL: Repository, https://github.com/canonhq/canon
Project-URL: Issues, https://github.com/canonhq/canon/issues
License-Expression: BUSL-1.1
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.12
Requires-Dist: anthropic>=0.43
Requires-Dist: cryptography>=44.0
Requires-Dist: fastapi>=0.115
Requires-Dist: httpx>=0.28
Requires-Dist: jinja2>=3.1
Requires-Dist: mcp[cli]>=1.7
Requires-Dist: mistune>=3.1
Requires-Dist: opentelemetry-api>=1.20
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.20
Requires-Dist: opentelemetry-sdk>=1.20
Requires-Dist: packaging>=24.0
Requires-Dist: posthog>=3.7
Requires-Dist: pydantic-settings>=2.7
Requires-Dist: pydantic>=2.10
Requires-Dist: pyjwt[crypto]>=2.9
Requires-Dist: python-frontmatter>=1.1
Requires-Dist: pyyaml>=6.0
Requires-Dist: uvicorn[standard]>=0.34
Provides-Extra: cloud
Requires-Dist: aiohttp>=3.9; extra == 'cloud'
Requires-Dist: alembic>=1.14; extra == 'cloud'
Requires-Dist: asyncpg>=0.30; extra == 'cloud'
Requires-Dist: authlib>=1.3; extra == 'cloud'
Requires-Dist: google-genai>=1.0; extra == 'cloud'
Requires-Dist: itsdangerous>=2.1; extra == 'cloud'
Requires-Dist: slack-bolt>=1.20.0; extra == 'cloud'
Requires-Dist: slack-sdk>=3.30.0; extra == 'cloud'
Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == 'cloud'
Requires-Dist: stripe>=11.0; extra == 'cloud'
Provides-Extra: dev
Requires-Dist: mypy>=1.14; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.25; extra == 'dev'
Requires-Dist: pytest-cov>=6.0; extra == 'dev'
Requires-Dist: pytest-httpx>=0.35; extra == 'dev'
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: respx>=0.22; extra == 'dev'
Requires-Dist: ruff>=0.9; extra == 'dev'
Provides-Extra: server
Requires-Dist: aiohttp>=3.9; extra == 'server'
Requires-Dist: alembic>=1.14; extra == 'server'
Requires-Dist: asyncpg>=0.30; extra == 'server'
Requires-Dist: authlib>=1.3; extra == 'server'
Requires-Dist: itsdangerous>=2.1; extra == 'server'
Requires-Dist: slack-bolt>=1.20.0; extra == 'server'
Requires-Dist: slack-sdk>=3.30.0; extra == 'server'
Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == 'server'
Description-Content-Type: text/markdown

# Canon

**Spec-driven development, automated.**

Canon is an AI-native documentation platform. Write structured specs in markdown, and AI agents handle PR reviews, ticket sync, and code verification — keeping product, engineering, and business aligned.

> This is the private monorepo. The open-source repo is at [canonhq/canon](https://github.com/canonhq/canon).

## Features

- **Spec-Aware PR Reviews** — Analyzes PRs against relevant specs, identifies which acceptance criteria are addressed, flags gaps
- **Bidirectional Ticket Sync** — Spec sections sync to Jira, Linear, or GitHub Issues in both directions
- **Code-Aware Verification** — AI verifies that acceptance criteria are actually implemented, not just that tickets were closed
- **Coverage Dashboard** — Track spec completion across your org by repo, team, and status
- **CLI & MCP Server** — Plan, verify, status, sync commands. MCP server for AI coding agents.
- **Claude Code Plugin** — Spec-aware skills for spec-driven development workflows

## Quick Start

Install the GitHub App on your organization:

[Install Canon](https://github.com/apps/canon-hq)

Or use the CLI:

```bash
pip install canonhq
canon setup
canon status
```

## Documentation

- **[Docs Site](https://canonhq.co/docs)** — Full documentation
- [Self-Hosting Guide](docs/self-hosting.md)
- [Agent Behavior](docs/agent-behavior.md)
- [Vision](docs/vision.md)

## Development

```bash
uv sync --extra dev --extra cloud
uv run pytest
uv run ruff check
uv run uvicorn canon.main:app --reload
```

## License

[BSL 1.1](oss/LICENSE) — converts to Apache 2.0 after four years per release.
