XGIC GitLab CLI
GitLab product commands for the modular XGIC CLI—ops under
xgic gitlab ….
Namespace: xgic.cli.gitlab · Console group: xgic gitlab … · Brand: XGIC CLI only
(ADR-0005)
Standards hub: xgic/ai · README standards
Vision
Self-managed GitLab operators need a stable, public-safe command surface for versioned ops—
not a grab bag of one-off scripts. This module owns the GitLab product namespace under xgic.
The GraphQL client library lives in gitlab-graphql;
the Compose template and orchestration image producer live in
gitlab and gitlab-dev.
One brand (xgic), clear ownership, and no private hosts or tracker IDs in the package.
Why this module exists
| Benefit | Detail |
|---|---|
| Domain clarity | Nested under xgic gitlab—no clash with core or Payload commands |
| Composable stack | Depends on xgic-cli; optional GraphQL extra when automation lands |
| Public-safe by design | Endpoints via env/flags—never hard-coded private inventory |
| AI + human parity | Same command map in README and AGENTS.md |
| Open-source rigor | Apache-2.0, Python 3.14+, RC → TestPyPI → PyPI |
Ecosystem
| Package / repo | Role |
|---|---|
| xgic/cli | Thin core framework (xgic) |
| xgic/gitlab-graphql | GraphQL client library |
| This repo | GitLab product module (xgic.cli.gitlab) |
| xgic/gitlab-dev | Orchestration image producer (ghcr.io/xgic/xgic-gitlab) |
| xgic/gitlab | End-user Docker Compose template |
Architecture: ADR-0001 · ADR-0005.
Quick start
Development (editable) — current primary path
uv pip install -e ../cli
uv pip install -e ".[dev]"
xgic gitlab --help
xgic gitlab info
Optional GraphQL extra (when GraphQL-backed commands ship):
uv pip install -e ".[graphql]"
Install (PyPI)
xgic-gitlab-cli 0.1.1 is on PyPI. Further cuts follow the hub python-package-release.md path (RC → TestPyPI → PyPI).
uv pip install "xgic-gitlab-cli"
xgic gitlab --help
Requirements
- Python 3.14+
xgic-cli≥ 0.2.1- Docker / Docker Compose for stack ops (
health/backup/restore)
Console commands
All product commands nest under xgic gitlab:
| Command | Purpose |
|---|---|
xgic gitlab info |
Module version and status (--json supported) |
xgic gitlab health |
Compose service checks + optional HTTP /-/health |
xgic gitlab backup |
gitlab-backup create, then one .tar.zst pair and a .sha256 sidecar |
xgic gitlab restore |
Restore the latest verified pair, or --archive (--yes required) |
Configuration (no private host defaults)
| Setting | Flag | Environment |
|---|---|---|
| Compose file | --compose-file |
XGIC_GITLAB_COMPOSE_FILE (default docker-compose.yml) |
| Project name | --project |
XGIC_GITLAB_COMPOSE_PROJECT (default xgic-gitlab) |
| GitLab EE service | --gitlab-service |
XGIC_GITLAB_EE_SERVICE (default gitlab-ee) |
| Orchestration service | --xgic-service |
XGIC_GITLAB_ORCH_SERVICE (default xgic-gitlab) |
| Backup dir hint | --backup-dir |
XGIC_GITLAB_BACKUP_DIR |
| GitLab URL | --url |
GITLAB_URL (no default) |
| Token | --token |
GITLAB_TOKEN (never logged) |
Shared: --dry-run, --json.
Examples
# From a checked-out xgic/gitlab template directory
export GITLAB_URL=http://localhost:8929
xgic gitlab health --json
xgic gitlab backup \
--secrets-file ./gitlab-secrets.json \
--config-file ./gitlab.rb \
--dry-run
xgic gitlab restore --dry-run
xgic gitlab restore --archive gitlab.tar.zst --dry-run
# after confirmation; destinations are optional and are not written during backup:
xgic gitlab restore \
--archive gitlab.tar.zst \
--secrets-dest ./restore/gitlab-secrets.json \
--config-dest ./restore/gitlab.rb \
--yes
xgic gitlab backup reads the live secrets and config files and does not write
them back. The archive contains the GitLab backup tar, those two files, and
backup-manifest.json. Registry, LFS, and packages are required unless
--allow-missing names a component GitLab omitted. The manifest is a Pydantic
model. Its restore_validation list records REST and GraphQL checks for a
later validator. Restore compares a recorded product release with the
running service before it extracts the archive. An archive with no recorded
release is not a mismatch.
See docs/backup.md and docs/configuration.md.
Status
0.1.4. Restore compares a recorded product release with the running
service before it extracts the archive. An image build suffix is the same
release. TestPyPI 0.1.4rc1 passed smoke. PyPI 0.1.3 does not perform
that comparison.
AI agent guidance
- Use
xgic gitlab …for product ops; do not hardcode private GitLab hostnames in public artifacts or committed examples. - Prefer fictional placeholders (
https://gitlab.example.com) in docs and tests. - Destructive restore always needs
--yes; start with--dry-run. - Follow hub public-safe rules before any public GitHub write.
Public safety
This package is public-safe only. Do not hardcode private GitLab hosts, internal inventory, or private tracker IDs. Operators configure endpoints via environment / flags.
Publishing
Follow
python-package-release.md
(publish after xgic-cli for stack releases). Tags: vX.Y.ZrcN → TestPyPI; vX.Y.Z → PyPI.
License
Apache License 2.0. See LICENSE and NOTICE.
Copyright form: Copyright 2026 XGIC.
Metadata
Release files for xgic-gitlab-cli 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xgic_gitlab_cli-0.1.4.tar.gz | 25.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xgic_gitlab_cli-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 59.1 kB
Release files / xgic_gitlab_cli-0.1.4.tar.gz
| Download URL | xgic_gitlab_cli-0.1.4.tar.gz |
|---|---|
| Size | 25.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b21b0ea5189f8a12f5052c2bcc5ddaa1762c823f80dc23ae288e20e641a695e2
|
|
BLAKE2b-256 checksum How to use checksums |
00df0993197183b4ee23d362b61b49b62365ab71936ee91e99c4d3aadd823756
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 17, 2026.
Transparency logRelease files / xgic_gitlab_cli-0.1.4-py3-none-any.whl
| Download URL | xgic_gitlab_cli-0.1.4-py3-none-any.whl |
|---|---|
| Size | 33.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f9863c31e2ef8a31108fd98da990b1eb74c0c592a997958f3a96fc27323294e
|
|
BLAKE2b-256 checksum How to use checksums |
e6feafdf96cc6c3d0c9c4af73fd741a74724835255b3cca7761bcbdcc51aee50
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 17, 2026.
Transparency log