{"id":47727961,"url":"https://github.com/arvindell/glab-overseer","last_synced_at":"2026-04-07T01:00:33.619Z","repository":{"id":348404022,"uuid":"1197890704","full_name":"arvindell/glab-overseer","owner":"arvindell","description":"A terminal watcher for GitLab pipelines with live job logs.","archived":false,"fork":false,"pushed_at":"2026-04-01T18:11:04.000Z","size":900,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T06:30:50.396Z","etag":null,"topics":["cli","devtools","gitlab","golang","tui"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arvindell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-01T01:08:38.000Z","updated_at":"2026-04-02T01:07:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/arvindell/glab-overseer","commit_stats":null,"previous_names":["arvindell/glab-overseer"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/arvindell/glab-overseer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindell%2Fglab-overseer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindell%2Fglab-overseer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindell%2Fglab-overseer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindell%2Fglab-overseer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arvindell","download_url":"https://codeload.github.com/arvindell/glab-overseer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arvindell%2Fglab-overseer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31379452,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T21:40:47.592Z","status":"ssl_error","status_checked_at":"2026-04-03T21:40:05.436Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","devtools","gitlab","golang","tui"],"created_at":"2026-04-02T20:59:27.346Z","updated_at":"2026-04-03T22:01:16.501Z","avatar_url":"https://github.com/arvindell.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# glab-overseer\n\n`glab-overseer` is a terminal watcher for GitLab pipelines.\n\nIt uses the GitLab REST API directly, polls for new pipelines, triggers actions\nwhen a new pipeline appears, and shows live stage/job progress with job logs in\na terminal UI inspired by `glab ci view`.\n\n![glab-overseer demo screenshot](./demo.png)\n\n## Features\n\n- pure HTTP calls to GitLab, no `glab` and no SDKs\n- polling-based pipeline detection\n- deduped new-pipeline triggers across restarts\n- async actions: `none`, `log`, `open`\n- stage/job TUI with live trace polling\n- recent pipelines overview homepage\n- release binaries for macOS and Linux\n\n## Install\n\nFrom source:\n\n```bash\ngo install github.com/arvindell/glab-overseer@latest\n```\n\nOr download a binary from GitHub Releases.\n\nWith the install script:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/arvindell/glab-overseer/main/install.sh | sh\n```\n\nWith Homebrew:\n\n```bash\nbrew tap arvindell/tap\nbrew install glab-overseer\n```\n\n## Config\n\nCopy `.env.example` to `.env` and fill in:\n\n```env\nGITLAB_HOST=https://gitlab.com\nGITLAB_PROJECT=group/project\nGITLAB_TOKEN=your_gitlab_pat\nGITLAB_REF=\nOVERSEER_POLL_INTERVAL=15s\nOVERSEER_TRACE_INTERVAL=3s\nOVERSEER_ACTION=log\n```\n\nRequired:\n\n- `GITLAB_PROJECT`\n- `GITLAB_TOKEN`\n\nThe token should have `read_api` access.\n\n## Run\n\n```bash\nglab-overseer --project group/project\n```\n\nOr from the repo:\n\n```bash\ngo run . --project group/project\n```\n\nUseful flags:\n\n- `--demo`\n- `--ref`\n- `--interval`\n- `--trace-interval`\n- `--action`\n- `--state-file`\n\n## Demo Mode\n\nFor screenshots or demos without exposing real pipelines, run:\n\n```bash\nglab-overseer --demo\n```\n\nThis uses built-in fake pipeline, job, and log data and does not require a\nGitLab token or project.\n\n## Keybindings\n\n- `up` / `down`: move through pipelines in overview mode\n- `Enter`: inspect the selected pipeline from the overview\n- `b`: go back to the overview from the inspector\n- `left` / `right`: change stage\n- `up` / `down`: change job\n- `Enter`: open log viewer mode for the selected job\n- `Esc`: leave log viewer mode and return to preview mode\n- `F`: reactivate default focus mode\n- `PageUp` / `PageDown`: scroll logs\n- `Ctrl+U` / `Ctrl+D`: half-page log scroll\n- `Home` / `End`: jump to top / bottom of logs\n- `g` / `G`: top / bottom of logs\n- `q`: quit\n\n## Focus Modes\n\nThere are two focus modes:\n\n- `default`: automatically cycles through running jobs with logs every 10 seconds\n- `user`: activated when you manually move focus\n\nWhen a new pipeline appears, focus resets to the default mode.\n\nPress `F` at any time to switch back to default mode.\n\nIn stage selection mode, the log pane shows a live preview of the latest log\nlines for the selected job. Press `Enter` to switch into log viewer mode for\nmanual scrolling, and `Esc` to return to preview mode.\n\n## Overview Mode\n\nThe app now starts on a pipeline overview homepage that shows recent pipelines,\ntheir refs, statuses, authors, and a compact stage summary.\n\nSelect a pipeline and press `Enter` to inspect it with the detailed stage and\nlog viewer.\n\nWhen a new pipeline is detected, the app automatically opens it in inspect\nmode. If that pipeline succeeds, the UI returns to the overview automatically.\n\nIf the currently inspected pipeline fails, the stage and log pane borders turn\nred.\n\n## Development\n\n```bash\ngofmt -w .\ngo test ./...\ngo vet ./...\ngo build ./...\n```\n\n## Project Docs\n\n- [`CONTRIBUTING.md`](./CONTRIBUTING.md)\n- [`SECURITY.md`](./SECURITY.md)\n- [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md)\n- [`CHANGELOG.md`](./CHANGELOG.md)\n- [`LICENSE`](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farvindell%2Fglab-overseer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farvindell%2Fglab-overseer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farvindell%2Fglab-overseer/lists"}