Skip to content

The AI-powered GitHub inbox for open-source maintainers.

License

Notifications You must be signed in to change notification settings

volta-net/volta

Repository files navigation

Volta

The AI-powered GitHub inbox for open-source maintainers.

What is Volta?

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.

Features

  • 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, #issue references, 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.

Usage

  1. Log in with GitHub — Sign in with your GitHub account.

  2. Install the GitHub App — Install the Volta GitHub App on your account or organization and select which repositories to sync.

  3. 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.

  4. Pick your favorites — Select the repositories you want to focus on. Issues and PRs from your favorites appear in their respective views.

  5. Configure subscriptions — Customize what notifications you receive per repository (issues, PRs, releases, CI, mentions).

  6. Connect AI (optional) — Add your Vercel AI Gateway token in settings to enable AI-powered features.

Setup

Make sure to install the dependencies:

pnpm install

Create a GitHub App

  1. Go to GitHub SettingsDeveloper settingsGitHub AppsNew GitHub App
  2. 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
  1. 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
  1. 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
  2. For "Where can this GitHub App be installed?", select Any account (or Only on this account for development)

  3. Click Create GitHub App

  4. After creation:

    • Copy the App ID and Client ID
    • Generate a Client Secret and copy it
    • Generate a Private Key (downloads a .pem file)

Environment Variables

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

Development Server

Start the development server on http://localhost:3000:

pnpm dev

Webhook Testing

GitHub App webhooks require a publicly accessible URL. Use smee.io to forward webhooks to your local environment:

  1. Go to https://smee.io and click Start a new channel
  2. Copy the webhook proxy URL (e.g., https://smee.io/abc123)
  3. Install the smee client:
pnpm add -g smee-client
  1. Start the smee client to forward webhooks:
smee -u https://smee.io/YOUR_CHANNEL_ID -t http://localhost:3000/webhook
  1. 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.

Production

Build the application for production:

pnpm build

Locally preview production build:

pnpm preview

Deployment

Volta uses Vercel Workflow DevKit for durable functions that handle long-running operations like repository syncing. This requires deployment to Vercel for full functionality.

  1. Connect your repository to Vercel
  2. Vercel will automatically detect the Nuxt configuration
  3. Set all environment variables in the Vercel dashboard
  4. 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.

About

The AI-powered GitHub inbox for open-source maintainers.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages