Skip to content

GitLab integration

The GitLab integration enables Speedwave to interface with GitLab.com or self-hosted GitLab instances: inspecting source trees, generating line-level git blame, managing merge requests, monitoring CI/CD pipelines, and creating issues.

GitLab executes within an isolated worker container. Credentials reside under ~/.speedwave/tokens/<project>/gitlab/ (holding the instance URL and personal access token) and are mounted read-only into the worker container.

The instance endpoint is resolved in order: stored configuration file, GITLAB_URL environment variable, or https://gitlab.com as the default.

Tool requests pass from Claude Code through the stateless Tool Gateway to the GitLab worker container.

The GitLab worker exposes 46 tools:

Tool nameDescription
listProjectIds, getProjectFullList accessible projects and retrieve comprehensive project metadata.
searchCodeSearch codebase content across accessible projects or within a single repository.
getTree, getFileTraverse directory trees and retrieve file contents.
getBlameExtract line-level git blame records with author commit history.
listBranches, getBranch, compareBranchesList branches, inspect metadata, or compare commit differences between branches.
createBranchCreate a new Git branch from a target reference.
deleteBranchDelete an unprotected Git branch.
listCommits, listBranchCommits, getCommitDiffEnumerate commits with filters, inspect branch history, or retrieve unified commit diffs.
searchCommitsSearch commit messages across repository history.
Tool nameDescription
listMrIds, getMrFull, getMrChangesQuery merge requests, inspect complete MR metadata, or retrieve unified changeset diffs.
createMergeRequest, updateMergeRequestAuthor new merge requests or modify target branches and titles.
approveMergeRequestSubmit merge request approvals.
mergeMergeRequestExecute merge operations with squashing and branch deletion options.
listMrCommits, listMrPipelinesEnumerate commits and CI/CD pipelines associated with a merge request.
listMrNotes, createMrNoteList or post general comments on a merge request.
listMrDiscussions, createMrDiscussionRetrieve or initiate threaded discussions on specific diff changes.
Tool nameDescription
listPipelineIds, getPipelineFullQuery pipeline execution runs and inspect job statuses.
getJobLogRetrieve inline console logs for a specific CI job.
retryPipelineTrigger re-execution of a failed pipeline.
triggerPipelineDispatch manual pipeline runs on designated Git references.
listArtifacts, downloadArtifactInspect or retrieve job build artifacts.
deleteArtifactsPurge job artifact archives.
listIssues, getIssueEnumerate or inspect repository issues.
createIssue, updateIssue, closeIssueAuthor, update, or close repository issues.
listLabels, createLabelManage repository labels.
createTag, deleteTagCreate or delete Git tags.
createReleaseGenerate formal GitLab releases from existing Git tags.
  1. Open your project in the Desktop application and navigate to Integrations → GitLab.
  2. Set the GitLab URL (https://gitlab.com or your self-hosted URL https://gitlab.example.com).
  3. Generate a Personal Access Token (glpat- prefix) with api, read_repository, and write_repository scopes in your GitLab user profile.
  4. Paste the token into the integration form and save.

The GitLab worker holds only its scoped personal access token, mounted in read-only mode. The Tool Gateway maintains zero credentials. Actions remain constrained by the permissions granted to the personal access token on the GitLab instance, respecting protected branch and protected tag configurations. Consult Credentials management for details.