-
Notifications
You must be signed in to change notification settings - Fork 0
Home
A terminal UI for monitoring CI/CD pipelines. Run it from any git repository and get an instant overview of pipeline runs and job statuses — no browser required.
Supports GitHub Actions and GitLab CI/CD (cloud and self-hosted).
- Installation
- Quick Start
- Configuration
- Authentication
- Interface Overview
- Keyboard Shortcuts
- Log Viewer
- Environment Variables
- Setting up OAuth Apps
brew tap waabox/gitdeck
brew install gitdeck# amd64
wget https://github.com/waabox/gitdeck/releases/latest/download/gitdeck_linux_amd64.deb
sudo dpkg -i gitdeck_linux_amd64.deb
# arm64
wget https://github.com/waabox/gitdeck/releases/latest/download/gitdeck_linux_arm64.deb
sudo dpkg -i gitdeck_linux_arm64.debsudo rpm -i https://github.com/waabox/gitdeck/releases/latest/download/gitdeck_linux_amd64.rpmRequires Go 1.24 or later.
git clone https://github.com/waabox/gitdeck.git
cd gitdeck
go build -o gitdeck ./cmd/gitdeck
mv gitdeck /usr/local/bin/cd /path/to/your/project
gitdeckgitdeck reads the origin remote from .git/config and automatically selects the right CI provider (GitHub Actions or GitLab CI).
# Print version
gitdeck --versiongitdeck stores its configuration at:
~/.config/gitdeck/config.toml
The file is created automatically the first time gitdeck saves a token after authentication. You can also create it manually before the first run.
# Number of recent pipelines to show in the list (default: 3)
pipeline_limit = 3
[github]
# OAuth App Client ID — only needed if you want to use your own app.
# gitdeck ships with a default client_id for github.com so this is optional.
client_id = ""
# OAuth access token. Written here automatically after first login.
# You can also paste a Personal Access Token (PAT) directly.
token = ""
[gitlab]
# OAuth App Application ID — only needed if you want to use your own app.
# gitdeck ships with a default client_id for gitlab.com so this is optional.
client_id = ""
# OAuth access token. Written here automatically after first login.
# You can also paste a Personal Access Token (PAT) directly.
token = ""
# Base URL of your GitLab instance. Leave empty for gitlab.com.
# Required for self-hosted GitLab.
url = ""By default gitdeck uses its own pre-registered OAuth apps for github.com and gitlab.com — no configuration needed. However if you prefer to use your own app (for example to keep tokens scoped to your organization, or for a self-hosted instance), register an OAuth app and set client_id in the config:
[gitlab]
client_id = "your_application_id_here"
url = "https://gitlab.yourcompany.com" # omit for gitlab.comSee Setting up OAuth Apps below for step-by-step instructions.
If you already have a PAT and don't want to go through the OAuth flow, paste it directly into the config:
[github]
token = "ghp_xxxxxxxxxxxxxxxxxxxx"
[gitlab]
token = "glpat-xxxxxxxxxxxxxxxxxxxx"gitdeck will use the token as-is and skip the OAuth flow entirely.
Environment variables always take precedence over the config file and require no file at all:
| Variable | Description |
|---|---|
GITHUB_TOKEN |
GitHub OAuth token or PAT. Overrides github.token. |
GITLAB_TOKEN |
GitLab OAuth token or PAT. Overrides gitlab.token. |
GITLAB_URL |
GitLab instance base URL. Overrides gitlab.url. |
export GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
export GITLAB_URL=https://gitlab.yourcompany.com
gitdeckOn first run, if no token is present, gitdeck starts the OAuth Device Flow automatically:
No GitHub token found. Starting OAuth authentication...
Visit: https://github.com/login/device
Enter code: ABCD-1234
Waiting for authorization...
Authenticated. Token saved to /Users/you/.config/gitdeck/config.toml
The token is saved to the config file — subsequent runs are silent.
You can skip OAuth entirely by exporting a token directly:
export GITHUB_TOKEN=ghp_yourtoken
export GITLAB_TOKEN=glpat_yourtokenEnvironment variables always take precedence over the config file.
- Go to Settings → Developer settings → OAuth Apps → New OAuth App
- Set any name and homepage URL
- Set the callback URL to
http://localhost(unused for device flow) - Copy the Client ID into
~/.config/gitdeck/config.tomlunder[github]
- Go to User Settings → Applications → Add new application
- Enable the
read_apiscope - Tick Allow Device Authorization Grant
- Copy the Application ID into
~/.config/gitdeck/config.tomlunder[gitlab] - For self-hosted instances, also set
url = "https://your.gitlab.host"
gitdeck uses a hierarchical drill-down navigation: Pipelines → Jobs → Steps. Each level is a full-width screen. Press Enter to drill down, Esc to go back.
gitdeck | gitdeck / ⎇ main a7e7cc7 / feat: redesign TUI header
────────────────────────────────────────────────────────────
Pipelines
> ● #22285124958 main 2m ago
✓ #22285124957 main 45s ago
✗ #22285124956 feat/auth 1h ago
────────────────────────────────────────────────────────────
#22285124958 by waabox
────────────────────────────────────────────────────────────
↑/↓: navigate enter: open ctrl+r: refresh r: rerun x: cancel q: quit
gitdeck | gitdeck / ⎇ main a7e7cc7 / feat: redesign TUI header
────────────────────────────────────────────────────────────
Jobs for Pipeline #22285124958
> ✓ build 12s
✗ test 38s
○ deploy --
────────────────────────────────────────────────────────────
↑/↓: navigate enter: steps l: logs esc: back r: rerun x: cancel q: quit
gitdeck | gitdeck / ⎇ main a7e7cc7 / feat: redesign TUI header
────────────────────────────────────────────────────────────
Steps for Job: test
> ✓ Checkout code 2s
✓ Install dependencies 15s
✗ Run tests 28s
○ Upload coverage --
────────────────────────────────────────────────────────────
↑/↓: navigate l: logs esc: back q: quit
Header — shows the repo name, current branch with ⎇ symbol, short commit SHA, and first line of the commit message.
Footer — context-aware keyboard hints that change depending on the current view.
| Icon | Meaning |
|---|---|
● |
Running |
✓ |
Success |
✗ |
Failed |
○ |
Pending |
⊘ |
Cancelled |
| Key | Action |
|---|---|
↑ / ↓
|
Navigate items / scroll logs |
Enter |
Drill down: Pipelines → Jobs → Steps |
Esc |
Go back: Steps → Jobs → Pipelines / close log viewer |
ctrl+r |
Force refresh pipelines |
q / Ctrl+C
|
Quit |
| Key | Where | Action |
|---|---|---|
l |
Jobs, Steps | Open full log viewer for selected job |
r |
Pipelines, Jobs | Re-run selected pipeline (asks confirmation) |
x |
Pipelines, Jobs | Cancel selected pipeline (asks confirmation) |
| Key | Action |
|---|---|
↑ / ↓
|
Scroll one line |
PgUp / PgDn
|
Scroll one page |
g |
Jump to top |
G |
Jump to bottom |
Esc |
Close logs |
Press l from the Jobs or Steps view to open the full log output in a fullscreen scrollable panel.
gitdeck waabox/gitdeck [logs] build
────────────────────────────────────────────────────────────
Run actions/checkout@v4
with:
repository: waabox/gitdeck
...
────────────────────────────────────────────────────────────
↑/↓: scroll PgUp/PgDn: page g/G: top/bottom esc: back
Press Esc to return to the previous view.
| Variable | Description |
|---|---|
GITHUB_TOKEN |
GitHub personal access token or OAuth token. Overrides config file. |
GITLAB_TOKEN |
GitLab personal access token or OAuth token. Overrides config file. |
GITLAB_URL |
GitLab instance base URL (for self-hosted). Overrides config file. |