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
- Go to Settings → Integrations
- Click Connect Linear
- Authorize the OAuth app (grants issue creation permission)
- 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
- Go to Settings → Integrations or connect via the API:
POST /api/repos/{slug}/github { "githubOwner": "your-org", "githubRepo": "your-app", "githubBranch": "main" } - Set
GITHUB_TOKENin.env.localfor 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_IDand_SECRETin your environment - Authorized redirect URI:
{supabase-url}/auth/v1/callback
Environment variables
| Variable | Required | Description |
|---|---|---|
DATABASE_URL | Yes | Postgres connection (pooled) |
DIRECT_URL | Yes | Postgres direct connection |
NEXT_PUBLIC_SUPABASE_URL | Yes | Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Yes | Supabase anon key |
SUPABASE_SERVICE_ROLE_KEY | Yes | Supabase service role key (server-only) |
OPENAI_API_KEY | Yes | OpenAI API key for extraction and chat |
KANON_API_TOKEN | Recommended | Machine token for CLI commands |
LINEAR_OAUTH_CLIENT_ID | For Linear | Linear OAuth app client ID |
LINEAR_OAUTH_CLIENT_SECRET | For Linear | Linear OAuth app client secret |
GITHUB_TOKEN | For private repos | GitHub PAT with repo scope |
NEXT_PUBLIC_SITE_URL | Production | The canonical URL for auth redirects |