Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Local GitLab PipelinesNew to Visual Studio Code? Get it now.
Local GitLab Pipelines

Local GitLab Pipelines

Kilkaya

|
6 installs
| (0) | Free
GitLab pipelines for workspace repositories, powered by glab on your local host.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Local GitLab Pipelines

A VS Code desktop extension that uses the locally installed glab CLI to show GitLab pipelines for repositories in your workspace.

Install and run

  1. Install and authenticate glab on your local computer: glab auth login --hostname gitlab.example.com (use gitlab.com for GitLab.com).
  2. Install the .vsix using Extensions → … → Install from VSIX… in desktop VS Code. Install it locally when working with a Dev Container.
  3. Open Source Control in the Activity Bar, then expand the GitLab Pipelines section. Click its header to collapse or expand it, just like the Source Control Graph section.
  4. Expand a pipeline to see its stages and jobs. Click a job to open it in GitLab. The external-link action on a pipeline opens its associated merge request, or the pipeline when no merge request is found. If the lookup fails, it opens the pipeline and logs the fallback in the extension output.

If VS Code cannot find glab, set the User setting localGlab.executablePath to its absolute local path, such as /opt/homebrew/bin/glab on an Apple Silicon Mac. Authenticate separately for each GitLab host you use.

The extension does not store access tokens, run a shell, or modify repositories or pipelines. All API calls use glab api with an explicit host and project path.

Tree and refresh

Repositories start expanded. Active mode lists pipelines with running, pending, created, preparing, or waiting-for-resource status. If a repository has no active pipelines, its latest pipeline is shown instead, regardless of status. Expand a pipeline to load stages and jobs, including trigger jobs. Stages start expanded and display aggregate status, while each job displays its own status.

The Toggle Active / Recent Pipelines toolbar action includes finished pipelines, defaulting to the latest 20 per repository. This preference is saved per workspace. Switch to recent mode to inspect older completed pipelines.

Refresh runs every 30 seconds while the view is visible. Use Refresh Pipelines for an immediate update. Use Rescan Workspace Repositories after adding repositories or changing remotes; adding or removing workspace folders also triggers discovery. Errors are shown under the affected repository; other repositories still load.

Repository discovery and Dev Containers

The workspace root and folders two levels below each root are searched, including nested repositories inside another repository. Multi-root workspaces are supported and overlapping results are deduplicated. Ordinary .git directories, submodule .git files, and linked worktrees with readable Git metadata are supported. origin is preferred, with another supported remote used as a fallback. HTTPS, SSH, and SCP-style remote URLs work, including nested GitLab groups.

The manifest sets extensionKind to ["ui"], keeping the extension and glab on your local desktop even with Dev Containers or Remote SSH. Repository metadata is read with vscode.workspace.fs, which accesses the workspace filesystem across the remote connection. There is no need for a matching local checkout or glab inside the container. If a user override forces remote execution, activation is refused.

The remote filesystem must expose .git/config and any referenced worktree metadata. A worktree pointer to a host-only path that is inaccessible inside a container cannot be resolved. Git config include, includeIf, URL rewrite rules, and automatic SSH config alias resolution are not evaluated; use localGlab.hostAliases for SSH aliases. Known GitHub and Bitbucket remotes are skipped; other hosts are attempted as GitLab hosts.

This requires desktop VS Code and a trusted workspace. Browser-only VS Code cannot launch a local CLI. Stage order is inferred from job creation IDs because the REST jobs endpoint does not expose CI stage positions; retries or dynamically created jobs may affect ordering. Trigger jobs link to GitLab; downstream pipelines are not recursively expanded.

Settings

Setting Default Purpose
localGlab.executablePath glab Local CLI path, set in User settings
localGlab.discoveryDepth 2 Search depth below each workspace root
localGlab.refreshInterval 30 Refresh seconds; 0 disables polling
localGlab.recentPipelineLimit 20 Recent pipelines per repository
localGlab.excludedFolders Dependency and build folders Folder names excluded from discovery
localGlab.hostAliases {} SSH alias → GitLab API host mapping

Symbolic-link directories are skipped to prevent traversal loops. Active pipelines and jobs are paginated, so the recent-pipeline limit does not hide active runs or jobs.

Development

npm ci
npm test
npm run package

Press F5 in VS Code to launch an Extension Development Host. Tests cover repository depth, overlapping roots, worktree and submodule pointers, remote parsing, API pagination, status grouping, and local-host manifest configuration.

Manual smoke test: authenticate local glab, open a workspace containing root/child/grandchild repositories, check active and recent modes, expand a pipeline, and open a job. Repeat with a Dev Container and verify Developer: Show Running Extensions lists this extension on the local host. Check the explicit path setting, an unauthenticated host, and refresh after a pipeline completes.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft