threepp
C++20 기반 크로스플랫폼 3D 라이브러리, 파이썬 바인딩 및 three.js 수준 API 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Pipeline health dashboard for GitLab™: history, trends, MTTR and inline failure logs. Not affiliated with GitLab Inc.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Pipeline health dashboard for GitLab™.
GITLAB is a trademark of GitLab Inc. in the United States and other countries and regions. pipepulse is an independent project, not affiliated with, endorsed, sponsored or approved by GitLab Inc.
Monitor multiple GitLab projects from a single view — with history, trends, and inline failure logs.
Live demo: pipepulse.morv.dev (generated sample data, no GitLab token needed)
Most CI dashboards show only the current state. pipepulse stores pipeline history in Postgres and surfaces:
Inspired by larscom/gitlab-ci-dashboard and ci-dashboard/gitlab-ci-dashboard. pipepulse adds persistent history, trend analytics, and a premium-grade UI.
| Layer | Tech |
|---|---|
| Backend | Python · FastAPI · async background worker |
| Database | PostgreSQL |
| Frontend | Next.js · TypeScript · Recharts |
| Infra | Docker · Helm (k3s) · GitHub Actions |
| Demo | Vercel (dashboard only, snapshot data) · pipepulse.morv.dev |
read_api token: every accessible project by default, or a chosen listprefers-reduced-motion respected┌─────────────────────────────────────────────────────────────────┐
│ Projects: 6 Active failures: 2 Avg build: 4m 12s ✓ 94% │
├────────────────┬──────────────────────┬────────────┬────────────┤
│ Project │ Pulse (last 20) │ Status │ Duration │
├────────────────┼──────────────────────┼────────────┼────────────┤
│ api-service │ ▁▃▂█▂▁▃▂▁▁▂▃▁▂█▂▁▃▂▁│ ✓ success │ 3m 48s │
│ web-frontend │ ▂▁▃█▁▂▃▁▂▃▁▂▁▃▁▂▁▃▁▂│ ✗ failed │ 6m 02s │ ← expanded
│ └─ test:e2e │ Error: Cannot find module './auth' ... │
│ infra-deploy │ ▁▁▂▁▃▁▁▂▁▃▁▁▂▁▁▃▁▁▂▁│ ✓ success │ 1m 15s │
└────────────────┴──────────────────────┴────────────┴────────────┘
The public demo is the dashboard alone, deployed on Vercel with PIPEPULSE_DEMO=true. It needs
no backend or database: it serves web/src/demo/snapshot.json, a snapshot recorded from the
real API on generated data (6 projects, 60 days of history). Timestamps are shifted to "now" on
every request, so the demo never looks stale.
Regenerate the snapshot after changing the API or the demo data:
docker compose up -d postgres migrate
cd api && uv run python -m pipepulse.seed.snapshot ../web/src/demo/snapshot.json
To run pipepulse for real against your GitLab, use docker-compose (below) or the Kubernetes guide.
Prerequisites: Docker with the Compose plugin. For working on the API outside containers also uv. Postgres runs in Docker, so you don't need to install it locally.
cp .env.example .env
docker compose up --build # everything: dashboard on :3000, API on :8000
open http://localhost:3000
API without Docker (needs a reachable Postgres, see PIPEPULSE_DATABASE_URL):
cd api
uv sync
uv run alembic upgrade head
uv run uvicorn pipepulse.main:app --reload
uv run pytest
Dashboard (Next.js, needs the API running):
cd web
npm install
npm run dev # http://localhost:3000
npm test # unit tests (ANSI log parser, formatting)
DB-backed tests use a separate database. Create it once and they'll run against it, otherwise they're skipped:
docker compose exec postgres psql -U pipepulse -c 'CREATE DATABASE pipepulse_test'
read_api scope..env:
PIPEPULSE_GITLAB_URL=https://gitlab.com # or your self-managed instance
PIPEPULSE_GITLAB_TOKEN=glpat-...
PIPEPULSE_PROJECTS=my-team/backend, my-team/frontend # optional
Leave PIPEPULSE_PROJECTS empty to track every project the token can see pipelines of
(Reporter access and up, not archived, CI enabled); ones that never ran a pipeline stay
off the dashboard until they do. To pick projects, list their paths from
the GitLab URL: https://gitlab.com/my-team/backend → my-team/backend (subgroups
included, e.g. my-team/apps/mobile).docker compose up --build -d and open http://localhost:3000.The worker checks the token's scopes at startup, then every 2 minutes picks up new projects
(backfilling 30 days of history) and syncs pipelines and failed job logs. Follow it with
docker compose logs -f worker. Changing .env needs docker compose up -d to take effect.
A project that's no longer configured (or no longer accessible) isn't deleted: it stops being polled and moves to a "Removed from configuration" section on the dashboard, history intact. Configure it again and it resumes; or delete it there, confirming with its path, to drop its history for good.
The dashboard has no login, and job logs can contain sensitive output: keep it on a private network, or put it behind your reverse proxy's authentication.
API docs: http://localhost:8000/api/docs
GET /metrics on the API (port 8000, deliberately not under /api, so the dashboard's
public routes never expose it) serves per-project gauges computed from the stored history:
pipepulse_project_failing, _running_pipelines, _pipelines{status}, _success_ratio,
_duration_avg_seconds, _duration_p90_seconds, _mttr_median_seconds (default branches,
7-day window, ?days= to change) and _last_polled_timestamp_seconds, which makes a good
staleness alert, e.g. time() - pipepulse_project_last_polled_timestamp_seconds > 900.
The Helm chart annotates the API pods for annotation-based scraping.
Repo layout: api/ (FastAPI + poller), web/ (Next.js dashboard), deploy/ (Helm chart and self-hosting guide).
MIT