Agent-first AEO operating platform. Open source. Self-hosted.
- Track citations across Gemini, ChatGPT, Claude, Perplexity, and local LLMs
- Watch AI engines crawl and refer traffic via server-log ingestion — Cloud Run today, more sources coming
- Diagnose against real traffic with built-in GSC, GA4, and Bing Webmaster
- Execute fixes via WordPress, JSON-LD schema, and indexing submissions
- Manage many clients declaratively — config-as-code YAML +
canonry apply - Schedule recurring visibility checks AND traffic syncs, with webhook alerts on regressions
- Generate client-ready HTML reports —
canonry report <project> - Drive from your own agent via the 67-tool MCP adapter or webhooks
- Or use Aero — Canonry's built-in agent that wakes up after every run
Every dashboard view has a matching CLI command and API endpoint. The CLI is the surface; the UI consumes the same API your agent does.
npm install -g @ainyc/canonry
canonry init
canonry serveOpen http://localhost:4100/setup. A guided wizard walks you through provider keys, project setup, queries, and your first visibility check.
Prefer the terminal?
canonry project create my-site --domain example.com
canonry query add my-site "your first query" "second query"
canonry run my-site --wait
canonry evidence my-site
canonry insights my-site| Problem | Fix |
|---|---|
| No provider key configured | Grab a free Gemini key, set GEMINI_API_KEY, restart canonry serve. |
| No results after a run | Visibility checks are async — check the Runs tab or use canonry run <project> --wait. |
| Not sure what queries to test | The setup wizard auto-generates them by analyzing your site. |
npm install fails on node-gyp |
Install build tools for better-sqlite3 (guide). |
| Provider | Key source | Env var |
|---|---|---|
| Gemini | aistudio.google.com | GEMINI_API_KEY |
| OpenAI | platform.openai.com | OPENAI_API_KEY |
| Claude | console.anthropic.com | ANTHROPIC_API_KEY |
| Perplexity | perplexity.ai/settings/api | PERPLEXITY_API_KEY |
| Local LLMs | Any OpenAI-compatible endpoint | LOCAL_LLM_URL |
Configure during canonry init, in the dashboard /settings, or as env vars.
| Architecture & data model | docs/architecture.md · docs/data-model.md |
| Aero — built-in agent | skills/aero/SKILL.md |
| MCP — Claude Desktop / Cursor / Codex | docs/mcp.md |
| Integrations | GSC · GA4 · Bing · WordPress · Server-side traffic (Cloud Run logs) |
| Deployment — Docker, Railway, Render, systemd, Tailscale | docs/deployment.md |
| API — 118+ endpoints | GET /api/v1/openapi.json (no auth) |
| Skills bundle for Claude Code / Codex | canonry skills install (details) |
| Roadmap & ADRs | docs/roadmap.md · docs/adr/ |
| All docs | docs/README.md |
Node.js ≥ 22.14.0. At least one provider API key.
git clone https://github.com/ainyc/canonry.git && cd canonry
pnpm install && pnpm run typecheck && pnpm run test && pnpm run lintSee CONTRIBUTING.md.
FSL-1.1-ALv2. Free to use, modify, and self-host. Each version converts to Apache 2.0 after two years.
