qodev-gitlab-cli
Agent-friendly CLI for the GitLab API. Designed for both human and AI-agent workflows, with structured JSON output, consistent flags, and predictable error codes.
Why this CLI?
- Agent-friendly —
--jsonon every command, consistent flags, predictable exit codes - Built for AI agent workflows — works seamlessly with Claude Code, scripts, and automation pipelines
- How it compares:
glabis GitLab's official interactive CLI for humans;qodev-gitlabis optimized for programmatic and agent use
Installation
pip install qodev-gitlab-cli
Or run directly without installing:
uvx qodev-gitlab-cli
Quick Start
# Set your GitLab token
export GITLAB_TOKEN="glpat-xxxxxxxxxxxxxxxxxxxx"
# Install AI agent skill files (for Claude Code, etc.)
$ qodev-gitlab-cli install --skills
# List open merge requests
$ qodev-gitlab-cli mrs list
!42 Add authentication opened feature/auth → main
# Get MR details as JSON (for scripts/agents)
$ qodev-gitlab-cli mrs get 42 --json
{"iid": 42, "title": "Add authentication", "state": "opened", ...}
# List pipelines
$ qodev-gitlab-cli pipelines list
12345 running main 2m ago
# Get details of a specific issue
$ qodev-gitlab-cli issues get 42
# Create a merge request from the current branch
$ qodev-gitlab-cli mrs create --title "Add new feature"
Commands
| Group | Subcommand | Description |
|---|---|---|
| projects | list |
List projects (--owned for owned only) |
get |
Get project details | |
| mrs | list |
List merge requests (--state) |
get |
Get merge request details | |
create |
Create a merge request (--title, --source, --target, --description, --labels, --squash) |
|
update |
Update a merge request (--title, --description, --labels, --target) |
|
merge |
Merge a merge request (--squash, --when-pipeline-succeeds) |
|
close |
Close a merge request | |
discussions |
List discussions on a merge request | |
changes |
Show diff for a merge request | |
commits |
List commits in a merge request | |
approvals |
Show approval status | |
comment |
Comment on a merge request (--body) |
|
pipelines |
List pipelines for a merge request | |
| pipelines | list |
List pipelines (--ref, --limit) |
get |
Get pipeline details | |
jobs |
List jobs for a pipeline | |
wait |
Wait for a pipeline to complete (--timeout, --interval) |
|
| jobs | get |
Get job details |
log |
Get job log output | |
retry |
Retry a failed job | |
| issues | list |
List issues (--state, --labels, --milestone) |
get |
Get issue details | |
create |
Create an issue (--title, --description, --labels) |
|
update |
Update an issue (--title, --description, --labels) |
|
close |
Close an issue | |
comment |
Comment on an issue (--body) |
|
notes |
List comments/notes on an issue | |
| releases | list |
List releases |
get |
Get release details by tag | |
create |
Create a release (--tag, --name, --description, --ref) |
|
| variables | list |
List CI/CD variables (values hidden) |
get |
Get a CI/CD variable | |
set |
Set (create or update) a CI/CD variable (--protected, --masked) |
|
| install | --skills |
Install AI agent skill files to .claude/skills/qodev-gitlab/ |
Configuration
Authentication
Set the GITLAB_TOKEN environment variable, or pass --token on each invocation:
export GITLAB_TOKEN="glpat-xxxxxxxxxxxxxxxxxxxx"
GitLab Instance
By default the CLI targets https://gitlab.com. Override with the GITLAB_URL environment variable or the --url flag:
export GITLAB_URL="https://gitlab.example.com"
Global Options
| Flag | Description | Default |
|---|---|---|
--json |
Output as JSON (for scripting / agents) | false |
--project, -p |
Project ID or path | auto-detected from git remote |
--limit |
Results per page | 25 |
--page |
Page number | 1 |
--token |
GitLab token (overrides GITLAB_TOKEN) |
|
--url |
GitLab URL (overrides GITLAB_URL) |
Exit Codes
| Code | Meaning |
|---|---|
0 |
Success |
80 |
Authentication error |
81 |
Not found |
82 |
API error |
83 |
Validation error |
84 |
Configuration error |
License
MIT -- see LICENSE for details.
Metadata
Release files for qodev-gitlab-cli 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qodev_gitlab_cli-0.3.0.tar.gz | 21.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qodev_gitlab_cli-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.5 kB
Release files / qodev_gitlab_cli-0.3.0.tar.gz
| Download URL | qodev_gitlab_cli-0.3.0.tar.gz |
|---|---|
| Size | 21.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e00fb573f46b1435a7d61f30d5a61bc5026d44a162ab4237c9f7e59ddc8957af
|
|
BLAKE2b-256 checksum How to use checksums |
1372e4c40548d6d305be49c82a81312ee767893fb3b40b068eb3ff5e36870af1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 24, 2026.
Transparency logRelease files / qodev_gitlab_cli-0.3.0-py3-none-any.whl
| Download URL | qodev_gitlab_cli-0.3.0-py3-none-any.whl |
|---|---|
| Size | 29.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2e16ce4cf387fc426956d13c685f7214c2fe79529d13dbfbdc93fa67b0673f01
|
|
BLAKE2b-256 checksum How to use checksums |
bf02ac59c7fac5aef505d2e4abe617a35ba995126c91da839a480ec86c7041cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 24, 2026.
Transparency log