Kanon
Integrations

Integrations

Kanon connects to your existing tools to close the loop between knowledge, work, and code.

Linear

Connect Linear to:

  • Draft tickets from the AI chat — when discussing product changes, the chat proactively offers a categorized ticket draft (bug/improvement/feature)
  • Create tickets from tracking gaps — the Tracking Plan page creates tickets for analytics events missing from the code
  • Create tickets from flag maintenance — the Flag Plan page creates tickets for stale flags and undocumented flags
  • Track spec changes — Linear tickets are linked to spec changes in the knowledge base

Setup

  1. Go to Settings → Integrations
  2. Click Connect Linear
  3. Authorize the OAuth app (grants issue creation permission)
  4. Select a team for each repo (determines which team tickets are filed to)

How it works

Linear is connected at the workspace level (one OAuth token per workspace). Each repo is bound to a specific team. When a ticket is created:

  • The team is set from the repo binding (never model-chosen)
  • The title and description are authored by the AI or the tracking plan
  • The user always edits and approves before creation
  • Created tickets link back to the knowledge base

GitHub

Connect GitHub for:

  • Repo source — clone private repos for scanning (instead of requiring a local path)
  • PR-triggered spec changes — detect when a PR modifies files covered by the KB

Setup

  1. Go to Settings → Integrations or connect via the API:
    POST /api/repos/{slug}/github
    { "githubOwner": "your-org", "githubRepo": "your-app", "githubBranch": "main" }
  2. Set GITHUB_TOKEN in .env.local for private repos

Repo source

When a repo has a GitHub source configured (sourceType: "github"), the discover and scan API routes automatically clone/pull from GitHub instead of requiring a local path. The clone is shallow (--depth 1) and cached.

Google OAuth

Used for user authentication (sign-in with Google). Configured via Supabase:

  • Set SUPABASE_AUTH_EXTERNAL_GOOGLE_CLIENT_ID and _SECRET in your environment
  • Authorized redirect URI: {supabase-url}/auth/v1/callback

Environment variables

VariableRequiredDescription
DATABASE_URLYesPostgres connection (pooled)
DIRECT_URLYesPostgres direct connection
NEXT_PUBLIC_SUPABASE_URLYesSupabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEYYesSupabase anon key
SUPABASE_SERVICE_ROLE_KEYYesSupabase service role key (server-only)
OPENAI_API_KEYYesOpenAI API key for extraction and chat
KANON_API_TOKENRecommendedMachine token for CLI commands
LINEAR_OAUTH_CLIENT_IDFor LinearLinear OAuth app client ID
LINEAR_OAUTH_CLIENT_SECRETFor LinearLinear OAuth app client secret
GITHUB_TOKENFor private reposGitHub PAT with repo scope
NEXT_PUBLIC_SITE_URLProductionThe canonical URL for auth redirects

On this page