Track notifications, issues, pull requests, and repositories from one focused workspace. No tab-switching, no noise.
Grouped by reason β mention, review_requested, ci_activity, security_alert, assign, state_change, subscribed and more. Unread items have a blue indicator. Click Mark as read to dismiss, or let the 60-second auto-refresh catch new ones without reloading the page.
Search-backed lists with quick filters (open / closed / merged). Click any row to open a slide-over detail panel showing the full timeline, labels, assignees, and action buttons β no page navigation needed.
Create unlimited tabs backed by real GitHub search queries. Paste any GitHub search qualifier into the tab editor β it just works. Drag-and-drop to reorder, group tabs into named folders.
Comments render with rich Markdown, syntax-highlighted code blocks, and Mermaid diagrams β sequence charts, flowcharts, Gantt β inline where they belong.
Built-in English and Simplified Chinese, auto-detected from your browser.
Adaptive dark mode styling keeps the dashboard comfortable in low-light environments and aligned with the system theme.
Paginated list of your repos with quick links to each. A fast way to jump to a project without leaving the dashboard.
GitHub's own interface has you bouncing between tabs, pages, and repos to stay on top of everything. GitPulse brings it all into one single-page workspace:
| GitHub.com | GitPulse | |
|---|---|---|
| Notifications + Issues + PRs | Separate pages, lots of back/forth | One dashboard, four tabs |
| Custom saved searches | Bookmarks or URL hacks | Built-in tab manager with drag-and-drop |
| Interface focus | Nav bar, project panel, sidebar noise | Only the GitHub activity you care about |
Runtime uses Bun. Start the dev server:
bun install
bun run devOpen the URL shown in terminal and paste your GitHub token on the landing page.
To get a token, run
gh auth tokenβ the token inherits the permissions you granted to the GitHub CLI, which typically includes organization-level access.
Visit gitpulse.euphony.ink β an official demo running in non-personal mode. Paste a GitHub token or sign in with OAuth to try the dashboard instantly.
GitPulse has two deployment modes, controlled by environment variables. At least one must be enabled, or the app refuses to start.
Users sign in by pasting a GitHub token or via GitHub OAuth. Suitable for teams or hosted deployments.
| Environment Variable | Required | Default | Description |
|---|---|---|---|
NUXT_SESSION_PASSWORD |
Yes | β | 32-byte hex key for session encryption |
NUXT_AUTH_PAT_ENABLED |
No | true |
Allow token-based login |
NUXT_AUTH_GITHUB_OAUTH_ENABLED |
No | β | Allow OAuth login |
NUXT_OAUTH_GITHUB_CLIENT_ID |
If OAuth | β | GitHub OAuth app client ID |
NUXT_OAUTH_GITHUB_CLIENT_SECRET |
If OAuth | β | GitHub OAuth app secret |
A password-gated vault with a pre-configured token. On each new browser you see a lock screen; optionally tick "Remember this device" to stay logged in.
| Environment Variable | Required | Default | Description |
|---|---|---|---|
NUXT_AUTH_PERSONAL_MODE_ENABLED |
Yes | β | Enable personal mode |
NUXT_PERSONAL_TOKEN |
Yes | β | GitHub token baked into the server |
NUXT_PERSONAL_MODE_PASSWORD |
Yes | β | Lock-screen password |
NUXT_PERSONAL_COOKIE_SECRET |
Yes | β | Secret for signing "remember me" cookies |
Dashboard user settings, including font choices, tab groups, and custom search tabs, are persisted through the server user settings storage layer. The local filesystem backend uses the Nitro storage mount named userSettings; the Upstash backend uses a Redis adapter. This is separate from GitHub token/session storage.
By default GitPulse uses local filesystem storage at ./.data/user-settings, which is ignored by git. For production deployments, especially serverless, container, or multi-instance deployments, configure this mount to use durable storage.
| Environment Variable | Required | Default | Description |
|---|---|---|---|
NUXT_GITPULSE_USER_SETTINGS_STORAGE_DRIVER |
No | fs |
User settings storage backend. Use fs for local Nitro storage or upstash for Upstash Redis. |
NUXT_GITPULSE_USER_SETTINGS_STORAGE_BASE |
No | Driver-specific | Base path/namespace. Defaults to ./.data/user-settings for fs and gitpulse:user-settings for upstash. |
NUXT_GITPULSE_USER_SETTINGS_STORAGE_UPSTASH_ENV_PREFIX |
No | UPSTASH_REDIS_REST |
Optional Vercel Storage custom env prefix. GitPulse reads <prefix>_KV_REST_API_URL and <prefix>_KV_REST_API_TOKEN. |
UPSTASH_REDIS_REST_URL |
Upstash | β | Upstash Redis REST URL, supplied by the Vercel Upstash integration or Upstash dashboard. |
UPSTASH_REDIS_REST_TOKEN |
Upstash | β | Upstash Redis REST token, supplied by the Vercel Upstash integration or Upstash dashboard. |
For Vercel + Upstash Redis using the standard variables, set:
NUXT_GITPULSE_USER_SETTINGS_STORAGE_DRIVER=upstash
UPSTASH_REDIS_REST_URL=...
UPSTASH_REDIS_REST_TOKEN=...If Vercel generated custom-prefixed variables such as UPSTASH_REDIS_REST_KV_REST_API_URL and UPSTASH_REDIS_REST_KV_REST_API_TOKEN, set:
NUXT_GITPULSE_USER_SETTINGS_STORAGE_DRIVER=upstash
NUXT_GITPULSE_USER_SETTINGS_STORAGE_UPSTASH_ENV_PREFIX=UPSTASH_REDIS_RESTUse the read/write token variable ending in _KV_REST_API_TOKEN; the _KV_REST_API_READ_ONLY_TOKEN value cannot save user settings.
No. Your token is kept in an encrypted server session cookie β it never touches a database. When you close the browser, the session ends.
Click your avatar in the left activity bar β Logout. Your session cookie is cleared.
GNU Affero General Public License v3.0 β see LICENSE.