AI News HubLIVE
In-site rewrite5 min read

Local agent first AI search optimization tooling

Canonry is an open-source, self-hostable AI Engine Optimization (AEO) platform that helps websites track citations across Gemini, ChatGPT, Claude, Perplexity, and local LLMs. It offers CLI, dashboard, MCP adapter, and built-in agent for tracking keywords, technical audits, ad management, and more. Initial setup takes 5 minutes.

SourceHacker News AIAuthor: arberx

Uh oh!

There was an error while loading. Please reload this page.

Notifications You must be signed in to change notification settings

Fork 12

Star 89

BranchesTags

Open more actions menu

Folders and files

NameName

Last commit message

Last commit date

Latest commit

History

691 Commits

691 Commits

.claude

.claude

.github

.github

.husky

.husky

.impeccable

.impeccable

apps

apps

docker

docker

docs

docs

eslint-rules

eslint-rules

packages

packages

scripts

scripts

skills

skills

test-setup

test-setup

.dockerignore

.dockerignore

.gitignore

.gitignore

.node-version

.node-version

.nvmrc

.nvmrc

AGENTS.md

AGENTS.md

CLAUDE.md

CLAUDE.md

CONTRIBUTING.md

CONTRIBUTING.md

Dockerfile

Dockerfile

Dockerfile.api

Dockerfile.api

Dockerfile.web

Dockerfile.web

Dockerfile.worker

Dockerfile.worker

LICENSE

LICENSE

Makefile

Makefile

README.md

README.md

canonry-install.sh

canonry-install.sh

eslint.config.js

eslint.config.js

package.json

package.json

pnpm-lock.yaml

pnpm-lock.yaml

pnpm-workspace.yaml

pnpm-workspace.yaml

tsconfig.base.json

tsconfig.base.json

vitest.config.ts

vitest.config.ts

vitest.package.config.ts

vitest.package.config.ts

Repository files navigation

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, Vercel, and the WordPress Traffic Logger plugin today

Diagnose against real traffic with built-in GSC, GA4, and Bing Webmaster

Track local AEO via Google Business Profile — search-term impressions, performance metrics, and hotel lodging + booking-CTA gaps

Manage ChatGPT ads with OpenAI Ads Manager — connect an ad account, inspect conversion setup and performance, prepare paused campaigns, and launch only with an explicit human approval

Discover who links to you with Common Crawl backlinks — follows Common Crawl's rolling monthly hyperlink graph, auto-syncing each new window on a schedule, queried locally with DuckDB

Execute fixes via WordPress, JSON-LD schema, and indexing submissions

Manage many clients declaratively — config-as-code YAML + cnry apply

Schedule recurring visibility checks, traffic syncs, and Business Profile syncs, with webhook alerts on regressions

Generate client-ready HTML reports — cnry report

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.

Run your first AI visibility check in 5 minutes

npm install -g @canonry/canonry cnry init cnry serve

The CLI installs as cnry (short form) and canonry — the two are interchangeable. The legacy package name @ainyc/canonry is still published at the same versions for compatibility, but new installs should use @canonry/canonry.

Open http://localhost:4100/setup. A guided wizard walks you through provider keys, project setup, queries, and your first visibility check.

If you serve Canonry on 0.0.0.0 or a LAN address, complete first-run dashboard password setup from loopback first, or authenticate with a cnry_... bearer key. The unauthenticated setup path is loopback-only by design.

Prefer the terminal?

cnry project create my-site --domain example.com cnry query add my-site "your first query" "second query" cnry run my-site --wait cnry evidence my-site cnry insights my-site

To pin a project to a provider model for future sweeps, use an explicit override. Omitting a provider keeps the project on all configured engines; omitting its model keeps that engine on the instance setting.

cnry project update my-site --provider gemini --provider-model gemini=gemini-2.5-pro cnry project update my-site --clear-provider-model gemini

Manage ChatGPT ads with human control

Connect an OpenAI Ads Manager account to bring its account state, integrity review, conversion pixels and event settings, campaign structure, and paid-performance rollups into the same project as your organic AEO evidence.

cnry ads connect my-site --api-key cnry ads sync my-site cnry ads account my-site cnry ads summary my-site

Canonry and your agent can inspect the live account, look up geo targets, prepare campaigns, ad groups, and ChatGPT chat-card ads in a paused state, and keep durable operation receipts for reconciliation. Activation is deliberately separate: a human approves one exact campaign tree, then a scoped executor may launch only that approved tree. This keeps spend-bearing changes reviewable and recoverable instead of granting an agent unrestricted access to your ad account. See the MCP tool surface for the complete agent workflow and safety model.

Or set it up with your AI coding agent

Drop this into Claude Code, Codex, or any shell-capable agent. It installs canonry, runs your first sweep, audits your site for AEO readiness, and stops for your sign-off before taking any action on your behalf:

Set up canonry for me. Canonry is an open-source platform that tracks how AI answer engines (Gemini, ChatGPT, Claude, Perplexity) cite my site.

  1. Ask me for: my domain, 3–5 queries I want to track, and which provider I want to start with (gemini / openai / claude / perplexity). Wait for my answers before proceeding.
  2. Run npm install -g @canonry/canonry.
  3. Run cnry init in this directory. This scaffolds config and installs the canonry skills into .claude/skills/canonry/, .claude/skills/aero/, .codex/skills/canonry/, and .codex/skills/aero/. If the skills aren't there afterwards, run cnry skills install.
  4. Read the operator playbook at .claude/skills/canonry/SKILL.md and follow it end-to-end: create the project with my domain and queries, wire up the provider key I chose, and trigger the first sweep.
  5. Open my browser to the dashboard so I can see the run results.
  6. Switch to the analyst playbook at .claude/skills/aero/SKILL.md and run a baseline AEO audit on my behalf. Read citation evidence with cnry evidence --format json, then run cnry technical-aeo run --wait followed by cnry technical-aeo score --format json for a site-readiness score. This crawls every page in my sitemap (not just the homepage), scores the whole site 0–100, and saves the result so it appears in the dashboard and can be re-audited on a schedule.
  7. Summarize what you found: my mention and citation rates per provider, the top 3 queries I'm not yet cited on, and the highest-impact site issues from the audit. Ask me for permission before taking any further action, such as drafting content, submitting URLs for indexing, editing files, or anything else that changes my site.

One-click copy at canonry.ai.

If you get stuck

Problem Fix

No provider key configured Open /setup, or grab a free Gemini key, set GEMINI_API_KEY, and restart cnry serve.

Why did my first audit fail? Run cnry doctor, then reopen /setup; it checks provider keys and setup blockers before the first sweep.

No results after a run Visibility checks are async — check the Runs tab or use cnry run --wait.

Not sure what queries to test Setup wizard auto-generates them; expand the basket later with cnry discover run --icp "..." — see the discovery methodology.

npm install fails on node-gyp Install build tools for better-sqlite3 (guide).

Provider keys

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 cnry init, in the dashboard /settings, or as env vars.

Documentation

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 · Google Business Profile · WordPress · Server-side traffic (Cloud Run + Vercel + WordPress 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 cnry skills install (details)

All docs docs/README.md

Requirements

Node.js ≥ 22.14.0. At least one provider API key.

Contributing

git clone https://github.com/Canonry/canonry.git && cd canonry pnpm install && pnpm run typecheck && pnpm run test && pnpm run lint

See CONTRIBUTING.md.

License

FSL-1.1-ALv2. Free to use, modify, and self-host. Each version converts to Apache 2.0 after two years.

About

An agent first AEO monitoring and operating platform

open.canonry.ai

Topics

agent

cli

sqlite

mcp

seo

geo

self-hosted

seo-optimization

websearch

ai-agents

ai-search

local-first

brand-monitoring

aeo

llm-monitoring

ai-visibility

generative-engine-optimization

answer-engine-optimization

geo-optimization

answer-engine-optimisation

Resources

Readme

License

View license

Contributing

Contributing

Uh oh!

There was an error while loading. Please reload this page.

Activity

Custom properties

Stars

89 stars

Watchers

4 watching

Forks

12 forks

Report repository

Releases 7

WordPress Traffic Logger v1.0.0

Latest

May 21, 2026

+ 6 releases

Packages 0

Uh oh!

There was an error while loading. Please reload this page.

Uh oh!

There was an error while loading. Please reload this page.

Contributors

Uh oh!

There was an error while loading. Please reload this page.

Languages

TypeScript 97.9%

PHP 1.0%

CSS 0.7%

JavaScript 0.4%

Shell 0.0%

Dockerfile 0.0%