PageSourceSearch

https://kilocode-docs.vercel.app/docs/_next/static/chunks/pages/automate/integrations-bd4947f75298f9cb.js

js kilocode-docs.vercel.app collected 2026-10-03 07:12:22 UTC 14,700 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1740],{13785:(e,t,n)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/automate/integrations",function(){return n(14255)}])},14255:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__N_SSG:()=>b,default:()=>y,markdoc:()=>f});var o=n(11872),i=n(34904),a=n(92130),r=n(55442),s=n(71867),c=n(47650),l=n(69450);let d={tags:(0,r.X)(s),nodes:(0,r.X)(c),functions:(0,r.X)(l),...(0,r.X)({})},u=new a.Ay.Tokenizer({allowComments:!0}).tokenize('---\ntitle: "Integrations"\ndescription: "Overview of Kilo Code integrations"\n---\n\n# Kilo Code Integrations\n\nKilo Integrations lets you connect GitHub or GitLab for repository workflows and DoltHub for Dolt-versioned data. Once connected, Kilo can access authorized resources securely, enabling features like **Code Reviews**, **Cloud Agents**, **Kilo Deploy**, and data workflows through **Kilo Connect**.\n\n## Supported Platforms\n\n| Platform | Integration Type | Details |\n|---|---|---|\n| GitHub | GitHub App | [GitHub Setup](#connecting-github) |\n| GitLab | OAuth or PAT | [GitLab Setup](#connecting-gitlab) |\n| DoltHub | OAuth | [DoltHub Setup](#connecting-dolthub) |\n\n## What You Can Do With Integrations\n\n- **Connect GitHub, GitLab, or DoltHub to Kilo Code** in a few clicks\n- **Enable advanced features** like Cloud Agents, Code Reviews, and Kilo Deploy\n- **Authorize GitHub or GitLab repository access** so Kilo can analyze and work with your code\n- **Query Dolt-versioned data** and authorize DoltHub access for Gas Town Wasteland\n\n## Prerequisites\n\nBefore connecting:\n\n- You must have a **GitHub** or **GitLab** account.\n- For GitHub: You need permission to install GitHub Apps for the repositories you want Kilo to access.\n- For GitLab: You need **Maintainer** role (or higher) on the projects you want to connect.\n- For DoltHub: You need a DoltHub account to authorize the OAuth connection.\n- For a Kilo organization, adding a GitHub integration requires the **Owner** or **Admin** role, in addition to permission to install the app on GitHub.\n\n---\n\n## Connecting GitHub\n\n### 1. Open the Integrations Page\n\nGo to your **Personal** or **Organization Dashboard**, and navigate to the [Integrations](https://app.kilo.ai/integrations) tab.\n\n### 2. Start the Connection Flow\n\n1. Click **Configure** on the GitHub panel.\n2. You\'ll be redirected to GitHub to authorize the **KiloConnect** App.\n3. Select the GitHub account or organization you want to connect.\n\n### 3. Choose Repository Access\n\nGitHub will ask which repositories you want Kilo to access:\n\n- **All repositories** (recommended if you plan to use Cloud Agents or Deploy across multiple projects)\n- **Only selected repositories** (choose specific repos)\n\nClick **Install & Authorize** to continue.\n\n### 4. Complete Authorization\n\nOnce approved:\n\n- You\'ll return to the Kilo Integrations page.\n- GitHub will show a **Connected** status.\n- Your Kilo workspace can now access GitHub repositories securely.\n\n---\n\n## Connecting GitLab\n\nYou can connect GitLab using **OAuth** or a **Personal Access Token (PAT)**. Both **GitLab.com** and **self-hosted GitLab instances** are supported.\n\n{% tabs %}\n{% tab label="OAuth (GitLab.com)" %}\n\n1. Go to the **Integrations** page:\n   - **Personal**: [app.kilo.ai/integrations/gitlab](https://app.kilo.ai/integrations/gitlab)\n   - **Organization**: Your organization → Integrations → GitLab\n2. Click **Connect GitLab**\n3. Authorize the application on GitLab\n4. You\'ll be redirected back to Kilo with the connection active\n\n{% /tab %}\n{% tab label="OAuth (Self-Hosted)" %}\n\nFor self-hosted GitLab instances using OAuth, you need to register an OAuth application first:\n\n1. In your GitLab instance, go to **Admin Area → Applications** (or **User Settings → Applications**)\n2. Create a new application:\n   - **Name**: `Kilo Code`\n   - **Redirect URI**: `https://app.kilo.ai/api/integrations/gitlab/callback`\n   - **Scopes**: `api`, `read_user`, `read_repository`, `write_repository`\n   - **Confidential**: Yes\n3. Copy the **Application ID** and **Secret**\n4. In Kilo, go to the GitLab integration page\n5. Enter your **Instance URL**, **Client ID**, and **Client Secret**\n6. Click **Connect** and authorize\n\n{% /tab %}\n{% tab label="Personal Access Token" %}\n\n1. In GitLab, go to **User Settings → Access Tokens**\n2. Create a token with the `api` scope\n3. Copy the token\n4. In Kilo, go to the GitLab integration page\n5. Paste the token (and enter your Instance URL for self-hosted)\n6. Click **Connect**\n\n> PAT tokens cannot be refreshed automatically. When your token expires, create a new one in GitLab and reconnect in Kilo.\n\n{% /tab %}\n{% /tabs %}\n\n---\n\n## Connecting DoltHub\n\nUse the DoltHub integration page to connect your DoltHub account. Kilo uses this OAuth connection for [Kilo Connect](/docs/code-with-ai/platforms/kilo-connect) and as the default auth method for [Gas Town Wasteland](/docs/code-with-ai/gastown/wasteland).\n\n1. Go to the **Integrations** page:\n   - **Personal**: [app.kilo.ai/integrations/dolthub](https://app.kilo.ai/integrations/dolthub)\n   - **Organization**: Your organization → Integrations → DoltHub\n2. Click **Connect DoltHub**.\n3. Approve Kilo on DoltHub.\n4. Return to Kilo and confirm DoltHub shows a **Connected** status.\n\n{% image src="/docs/img/integrations/dolthub/connect.png" alt="DoltHub integration page before OAuth connection" width="900" caption="DoltHub integration page in Kilo" /%}\n\n{% image src="/docs/img/integrations/dolthub/authorize.png" alt="DoltHub OAuth authorization screen for Kilo" width="700" caption="DoltHub OAuth authorization screen" /%}\n\n{% image src="/docs/img/integrations/dolthub/connected.png" alt="Connected DoltHub integration page showing api_read_write permission" width="900" caption="Connected DoltHub integration" /%}\n\nTo remove the connection, click **Disconnect** from the DoltHub integration page.\n\n---\n\n## What Happens After Connecting\n\nOnce your integrations are connected, the following features are enabled in Kilo:\n\n### Cloud Agents\n\n- Run Kilo Code in the cloud from any device\n- Auto-create branches and push work continuously\n- Work from anywhere while keeping your repo in sync\n\n### Code Reviews\n\n- Automated AI review on every pull request or merge request\n- Consistent feedback based on your team\'s standards\n- See the [Code Reviews guide](/docs/automate/code
1-reviews/overview) for setup\n\n### Kilo Deploy\n\n- Deploy Next.js 14 & 15 apps directly from Kilo\n- Trigger rebuilds automatically on push\n- Manage deployment logs and history\n\n### DoltHub data access\n\n- Query Dolt-versioned databases from your workspace\n- Use DoltHub alongside GitHub or GitLab when a workflow also needs repository access\n- Authorize Gas Town Wasteland to fork commons databases, push claims and evidence, and manage DoltHub PRs. Wasteland also supports an advanced API token option when OAuth is not available.\n\n### Bitbucket\n\nOrganization accounts can connect Bitbucket Cloud and select its repositories when starting [Cloud Agent sessions](/docs/code-with-ai/platforms/cloud-agent) on the web or in the mobile app. Connect Bitbucket from your organization\'s **Integrations** page. Bitbucket is not available for personal accounts.\n\n---\n\n## Managing or Removing the Integration\n\n### GitHub\n\nAn organization Owner or Admin can connect multiple GitHub organizations. Click **Add organization** and repeat the installation flow. Each installation has its own connection status, repository scope, selected repository list, and management actions. Personal accounts use a single GitHub connection.\n\nFrom the **Integrations** page, click "Manage on GitHub" to:\n\n- View the GitHub account you connected\n- Update which repositories Kilo has access to\n- Disconnect GitHub entirely\n- Reauthorize the app if permissions change\n\n### GitLab\n\nFrom the **Integrations** page:\n\n- Click **Disconnect** to remove the GitLab connection\n- Your tokens are cleared, but webhook configuration is preserved so reconnecting restores your setup\n\n> Disconnecting from Kilo does not revoke OAuth tokens on GitLab\'s side. You can manually revoke them from **GitLab → User Settings → Applications → Authorized Applications**.\n\n### DoltHub\n\nFrom the **Integrations** page, open DoltHub to:\n\n- View the connected status\n- View granted permissions\n- Disconnect DoltHub from Kilo\n\n---\n\n## Troubleshooting\n\n### GitHub\n\n**"I don\'t see my repositories."**\nEnsure the KiloConnect App is installed for the correct GitHub org and that repo access includes the repositories you need.\n\n**"My organization blocks third-party apps."**\nYou may need an admin to approve installing GitHub Apps.\n\n**"Cloud Agents or Deploy can\'t access my repo."**\nRevisit the GitHub app settings and confirm the app has the correct repo scope.\n\n### GitLab\n\n**"No projects listed after connecting."**\nClick the refresh button to sync projects from GitLab. Ensure your GitLab account has access to the projects you expect.\n\n**"Permission denied" errors.**\nYou need **Maintainer role** on the GitLab project for webhook and bot token creation.\n\n**"Token expired."**\n\n- **OAuth**: Tokens refresh automatically. If refresh fails, reconnect from the integration page.\n- **PAT**: Create a new token in GitLab and reconnect in Kilo.\n\n**"Self-hosted connection issues."**\n\n- Verify your instance URL is accessible from the internet\n- Ensure HTTPS is configured\n- Check that OAuth application scopes include all required scopes\n- Verify the redirect URI matches: `https://app.kilo.ai/api/integrations/gitlab/callback`\n'),p=a.Ay.parse(u,{slots:!1}),g=p.attributes.frontmatter?i.Ay.load(p.attributes.frontmatter):{},{components:h}=(0,r._)(d);var b=!0;let f={frontmatter:g};function y(e){let t=e.markdoc;return a.ZR.react(t.content,o,{components:{...h,...e.components}})}},47650:(e,t,n)=>{"use strict";n.r(t),n.d(t,{fence:()=>a,heading:()=>s,table:()=>l,tbody:()=>u,td:()=>h,th:()=>g,thead:()=>d,tr:()=>p});var o=n(92130),i=n(58838);let a={render:i.NG,attributes:o.a9.fence.attributes};function r(e){return"string"==typeof e?e:o.vw.isTag(e)?e.children.map(r).join(" "):""}let s={render:i.DZ,children:["inline"],attributes:{id:{type:String},level:{type:Number,required:!0,default:1},className:{type:String}},transform(e,t){let n=e.transformAttributes(t),i=e.transformChildren(t),a=n.id&&"string"==typeof n.id?n.id:i.map(r).join(" ").replace(/[?/]/g,"").replace(/\s+/g,"-").toLowerCase();return new o.vw(this.render,{...n,id:a},i)}};var c=n(52914);let l={...o.a9.table,render:c.XI},d={...o.a9.thead,render:c.D1},u={...o.a9.tbody,render:c.vc},p={...o.a9.tr,render:c.Tr},g={...o.a9.th,render:c.Th,attributes:{...o.a9.th.attributes,width:{type:String}}},h={...o.a9.td,render:c.Td,attributes:{...o.a9.td.attributes,colspan:{type:Number},rowspan:{type:Number}}}},69450:(e,t,n)=>{"use strict";n.r(t),n.d(t,{includes:()=>o,upper:()=>i});let o={transform(e){let[t,n]=Object.values(e);return!!Array.isArray(t)&&t.includes(n)}},i={transform(e){let t=e[0];return"string"==typeof t?t.toUpperCase():t}}},71867:(e,t,n)=>{"use strict";n.r(t),n.d(t,{browserFrame:()=>f,callout:()=>
1i,codicon:()=>a,copyLine:()=>r,flowDiagram:()=>b,icon:()=>l,image:()=>d,imageGallery:()=>u,kiloCodeIcon:()=>p,linebreak:()=>y,tab:()=>c,tabs:()=>s,video:()=>g,youtube:()=>h});var o=n(58838);let i={render:o.Pq,children:["paragraph","tag","list"],attributes:{title:{type:String,description:"Optional custom title for the callout"},type:{type:String,default:"note",matches:["generic","note","tip","info","warning","danger"],description:"The type of callout: generic (no icon/title), note, tip, info, warning, or danger"},collapsed:{type:Boolean,default:!1,description:"When true, the callout starts collapsed and can be expanded by clicking the header"}}},a={render:o.W6,selfClosing:!0,attributes:{name:{type:String,required:!0,description:"The name of the VS Code codicon (e.g., 'send', 'check', 'warning')"},size:{type:String,default:"1em",description:"The size of the icon (CSS font-size value)"},className:{type:String,default:"",description:"Additional CSS classes to apply to the icon"}}},r={render:o.a7,selfClosing:!0,attributes:{text:{type:String,required:!0,description:"The exact one-line text to display and copy"}}},s={render:o.tU,children:["tab"],attributes:{}},c={render:o.oz,children:["paragraph","tag","list","fence","heading"],attributes:{label:{type:String,required:!0,description:"The label shown on the tab button"}}},l={render:o.In,selfClosing:!0,attributes:{src:{type:String,required:!0},srcDark:{type:String,description:"Optional image source for dark mode. Falls back to src if not provided."},alt:{type:String,default:"icon"},size:{type:String,default:"1.2em"}}},d={render:o._V,selfClosing:!0,attributes:{src:{type:String,required:!0,description:"The image source URL"},alt:{type:String,required:!0,description:"Alternative text for the image"},width:{type:String,description:"Width of the image (e.g., '500px', '80%')"},height:{type:String,description:"Height of the image (e.g., '300px', 'auto')"},caption:{type:String,description:"Optional caption displayed below the image"}}},u={render:o.i_,children:["tag"],attributes:{columns:{type:String,description:"Preferred number of image columns on wide screens"},width:{type:String,description:"Preferred width of each gallery image"}}},p={render:o.kz,selfClosing:!0,attributes:{size:{type:String,default:"1.2em",description:"Size of the icon (CSS height value)"}}},g={render:o.n5,selfClosing:!0,attributes:{url:{type:String,required:!0,description:"The YouTube video URL"},title:{type:String,description:"Accessible title for the video iframe"},caption:{type:String,description:"Optional caption to display below the video"}}},h={render:o.Yu,selfClosing:!0,attributes:{url:{type:String,required:!0,description:"The YouTube video URL"},title:{type:String,description:"Accessible title for the video iframe"},caption:{type:String,description:"Optional caption to display below the video"}}},b={render:o.Cb,selfClosing:!0,attributes:{name:{type:String,required:!0,description:"Name of the diagram to render (must match a key in diagrams/index.ts)"},height:{type:String,default:"400px",description:"Height of the diagram container"}}},f={render:o.AR,children:["paragraph","tag","list"],attributes:{url:{type:String,description:"Optional URL to display in the address bar"},caption:{type:String,description:"Optional caption below the frame"}}},y={render:"br",selfClosing:!0}}},e=>{e.O(0,[8228,2545,636,6593,8792],()=>e(e.s=13785)),_N_E=e.O()}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.