The AI-powered GitHub inbox for open-source maintainers.
Volta helps open-source maintainers stay on top of their GitHub notifications. Instead of drowning in issues, PRs, and mentions across multiple repositories, Volta gives you a single inbox where you can triage, respond, and take action without context switching.
Volta is a full-stack Nuxt app built with Nuxt UI, NuxtHub, AI SDK, and Workflow.
-
Unified Inbox — All your GitHub notifications in one place. Filter by repository, type (issues, PRs, releases, CI), or read status. Bulk actions to mark as read or delete.
-
Issue & PR Management — View details, timelines, and comments without leaving the app. Edit titles, manage labels, assign reviewers, and reply inline.
-
Rich Editor — Write comments with
@mentions,#issuereferences, image uploads, code blocks with syntax highlighting, tables, task lists, etc. -
AI-Powered Features (optional) — Connect your Vercel AI Gateway token to unlock:
- Detect when issues have been answered or resolved
- Suggest labels, improve titles, find duplicates
- Draft context-aware replies that match your writing style
- Fix grammar, simplify, summarize, or translate text
-
Favorites & Search — Pin important issues and repositories. Search across everything with the command palette.
-
Real-time Sync — Webhooks keep everything up to date as it happens on GitHub.
-
PWA — Install to your dock and see unread counts at a glance.
-
Log in with GitHub — Sign in with your GitHub account.
-
Install the GitHub App — Install the Volta GitHub App on your account or organization and select which repositories to sync.
-
Wait for sync — Volta fetches your existing issues, PRs, comments, reviews, labels, milestones, and CI status in the background. Large repositories may take a few minutes.
-
Pick your favorites — Select the repositories you want to focus on. Issues and PRs from your favorites appear in their respective views.
-
Configure subscriptions — Customize what notifications you receive per repository (issues, PRs, releases, CI, mentions).
-
Connect AI (optional) — Add your Vercel AI Gateway token in settings to enable AI-powered features.
Make sure to install the dependencies:
pnpm install- Go to GitHub Settings → Developer settings → GitHub Apps → New GitHub App
- Fill in the required fields:
| Field | Value |
|---|---|
| GitHub App name | Your app name (e.g., Volta) |
| Homepage URL | http://localhost:3000 |
| Callback URL | http://localhost:3000/auth/github |
| Webhook URL | Your smee.io URL (see Webhook Testing) |
| Webhook secret | Run openssl rand -hex 32 to generate one |
- Set the required permissions:
| Permission | Access |
|---|---|
| Repository permissions | |
| Actions | Read-only |
| Administration | Read-only |
| Checks | Read-only |
| Commit statuses | Read-only |
| Contents | Read-only |
| Issues | Read & write |
| Metadata | Read-only |
| Pull requests | Read & write |
| Organization permissions | |
| Issue Types | Read-only |
-
Subscribe to events:
- Check run
- Installation target
- Issue comment
- Issues
- Label
- Member
- Meta
- Milestone
- Public
- Pull request
- Pull request review
- Pull request review comment
- Pull request review thread
- Release
- Repository
- Status
- Workflow run
-
For "Where can this GitHub App be installed?", select Any account (or Only on this account for development)
-
Click Create GitHub App
-
After creation:
- Copy the App ID and Client ID
- Generate a Client Secret and copy it
- Generate a Private Key (downloads a
.pemfile)
Copy .env.example to .env and fill in the values from your GitHub App:
cp .env.example .env| Variable | Description |
|---|---|
NUXT_SESSION_PASSWORD |
A random string of at least 32 characters for session encryption |
NUXT_OAUTH_GITHUB_CLIENT_ID |
GitHub App → Client ID |
NUXT_OAUTH_GITHUB_CLIENT_SECRET |
GitHub App → Client secrets → Generate |
NUXT_GITHUB_APP_ID |
GitHub App → App ID |
NUXT_GITHUB_PRIVATE_KEY |
GitHub App → Private keys → Generate (convert newlines to \n) |
NUXT_GITHUB_WEBHOOK_SECRET |
The webhook secret you set when creating the app |
ENCRYPTION_KEY |
A 256-bit key for encrypting user AI tokens (run openssl rand -hex 32) |
Tip: To convert the private key, run:
awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' your-app.pem
Start the development server on http://localhost:3000:
pnpm devGitHub App webhooks require a publicly accessible URL. Use smee.io to forward webhooks to your local environment:
- Go to https://smee.io and click Start a new channel
- Copy the webhook proxy URL (e.g.,
https://smee.io/abc123) - Install the smee client:
pnpm add -g smee-client- Start the smee client to forward webhooks:
smee -u https://smee.io/YOUR_CHANNEL_ID -t http://localhost:3000/webhook- In your GitHub App settings, set the Webhook URL to your smee.io URL
Note: GitHub CLI webhook forwarding (
gh webhook forward) only works with repository and organization webhooks, not GitHub App webhooks.
Build the application for production:
pnpm buildLocally preview production build:
pnpm previewVolta uses Vercel Workflow DevKit for durable functions that handle long-running operations like repository syncing. This requires deployment to Vercel for full functionality.
- Connect your repository to Vercel
- Vercel will automatically detect the Nuxt configuration
- Set all environment variables in the Vercel dashboard
- Deploy!
Note: The durable workflows (
server/workflows/) ensure that long-running sync operations complete successfully even if they exceed typical serverless timeouts.
For other deployment options, check out the Nuxt deployment documentation.