Add the instance credentials
For the bundled Compose deployment, add these values to.env:
GITHUB_PRIVATE_KEY to the full PEM with real line breaks or literal \n sequences. GITHUB_PRIVATE_KEY_BASE64 takes precedence if both are present.
Recreate the application container to apply the environment:
Connect the project
- Open Settings → Projects, select the project, then open Integrations and select Connect next to GitHub.
- Link your GitHub account if Kaneo asks for it. Kaneo uses it to confirm that you administer the repository.
- Type the repository as
owner/name, or select Browse and search the repositories your installed app can reach. Kaneo checks the installation as soon as you pick one. - Select Connect repository.
- Create a test task and check that its GitHub issue appears.
Changing the connected repository
Disconnect the existing integration before connecting a different repository. This preserves local tasks but removes their old external links and any unfinished import progress. Reconnecting the same verified repository, including after a rename or reinstall, preserves its links and project preferences. Legacy integrations without a verified numeric identity can be reverified for the same repository name; review their existing links before enabling synchronization.Testing the Integration
After connecting a repository, test the integration thoroughly:1
Test Task to Issue CreationCreate a new task in your connected Kaneo project with:
- A clear title
- A description
- Set priority and status
- A new issue was created
- The issue has
priority:*andstatus:*labels - A comment links back to the Kaneo task
2
Test Automatic Status TransitionsTest branch-based workflow:
- Note your task number (e.g.,
PROJ-123) - Create and push a branch matching the pattern (e.g.,
proj-123) - Verify the task moves to “in-progress”
- Open a PR from that branch
- Verify the task moves to “in-review”
- Merge the PR
- Verify the task moves to “done”
Default branch pattern is
{slug}-{number}. You can customize this in project settings.3
Test Issue to Task SyncIn GitHub:
- Create a new issue
- Add labels like
priority:highorstatus:in-progress
- Verify a task was created from the issue
- Check that priority and status match the labels
- Confirm the task links to the GitHub issue
4
Test Label SynchronizationTest both directions:
- Change task priority in Kaneo → Check issue labels in GitHub
- Add/remove labels in GitHub → Check task in Kaneo
- Change task status in Kaneo → Check if issue is closed/reopened
Advanced Configuration
Branch Naming Patterns
Configure how Kaneo matches branches to tasks in your project’s GitHub integration settings: Predefined Patterns:{slug}-{number}(default) - e.g.,proj-123{slug}-{number}-{title}- e.g.,proj-123-fix-bug{number}- e.g.,123{number}-{title}- e.g.,123-fix-bugfeature/{slug}-{number}- e.g.,feature/proj-123fix/{slug}-{number}- e.g.,fix/proj-123
Pull Request Task References
Kaneo checks the configured branch pattern first, then explicit task references in the PR title and body. Use your project key, such asPROJ-42 or fix(PROJ-42): correct the link, or an explicit task: 42 marker. Task markers require a separator after task; words such as task42 do not identify a task.
Issue references use the remote repository’s numbering. A title containing #61 or a body containing Closes #61 resolves through the issue link recorded by this integration. If GitHub issue 61 is linked to Kaneo task PROJ-42, the PR belongs to PROJ-42, even if PROJ-61 also exists. Same-repository owner/repo#61 references and issue URLs are also supported. References to another repository are ignored.
Links from Copy task link, such as https://kaneo.example.com/acme/task/PROJ-42/fix-login, contain the project key, so pasting one in the PR title or body links the PR to that task. If none of those match, Kaneo also looks for a full task URL (/dashboard/workspace/.../task/...). A PR with full URLs to more than one task, or to a task in another project, is not linked.
Without an explicit task reference, unmapped issues do not create PR associations. References that map to multiple tasks within the integration are skipped. Repeated issue links to the same task are accepted. Bare numeric title shortcuts such as [42], (42), or 42: ... are not task identifiers; use the project key instead.
GitHub webhooks also skip conflicting candidates or an existing PR association across projects connected to the repository. Signed Gitea webhooks resolve only within their authenticated integration; another project’s mappings or PR links do not block that integration. Direct Gitea handler calls without an integration ID use the repository-wide checks. Imports for both providers remain scoped to the selected project.
These rules apply to new associations from webhooks and imports. Existing PR associations within the applicable scope are preserved; historical incorrect links require separate correction.
Status Transition Configuration
Customize when tasks automatically change status:
Configure these under Workflow → Automations to match your workflow.
Label Synchronization
Kaneo automatically creates and syncs these label types: System Labels (managed automatically):priority:low,priority:medium,priority:high,priority:urgentstatus:to-do,status:in-progress,status:in-review,status:done,status:planned,status:archived
- Any labels added to GitHub issues (not starting with
priority:orstatus:) are synced to Kaneo - Labels added in Kaneo can be synced to GitHub (if configured)
Multiple Organizations
If you need to connect repositories from multiple GitHub organizations:- Install your GitHub App on each organization
- Grant appropriate permissions for each organization
- Each Kaneo project can connect to any repository where your app is installed
Having issues? Check our troubleshooting guide for common problems and solutions.