Mneme

GitHub

Set up the GitHub App for Mneme webhook ingestion.

The GitHub connector is the primary signal source for Mneme. It receives webhook events from a GitHub App and processes them into signals and memories.

Create a GitHub App

  1. Go to GitHub Settings → Developer settings → GitHub Apps → New GitHub App
  2. Fill in the details:
    • App name: Mneme (or your preferred name)
    • Homepage URL: Your Mneme deployment URL
    • Webhook URL: https://your-mneme-host/webhooks/github
    • Webhook secret: Generate a random secret and save it for later

Permissions

Set the following repository permissions:

PermissionAccessPurpose
ContentsReadRead file contents and diffs
Pull requestsRead & WriteComment on PRs, read PR data
Commit statusesRead & WriteSet check status on commits
MetadataReadRepository metadata (always required)

Events

Subscribe to these webhook events:

EventDescription
pull_requestPR opened, closed, merged, updated
pushCode pushed to any branch
issuesIssue created, updated, closed
issue_commentComments on issues and PRs
pull_request_reviewPR review submitted
pull_request_review_commentInline review comments

Generate Private Key

After creating the app, generate a private key from the app settings page. Save the .pem file securely.

Environment Variables

Set these in your Mneme deployment:

GITHUB_APP_ID=123456
GITHUB_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----"
# OR use a file path:
GITHUB_PRIVATE_KEY_PATH=/path/to/private-key.pem
GITHUB_WEBHOOK_SECRET=your-webhook-secret

Install the App

  1. Go to your GitHub App's public page
  2. Click Install
  3. Select the organization or user account
  4. Choose All repositories or select specific repos
  5. Click Install

Webhook Verification

Mneme verifies every incoming webhook using HMAC-SHA256:

  1. The x-hub-signature-256 header contains sha256=<hex-digest>
  2. Mneme computes HMAC-SHA256(webhook_secret, request_body)
  3. Comparison uses timing-safe equality to prevent timing attacks

Invalid signatures are rejected with 401 Unauthorized.

Processed Events

The GitHub connector processes these event types into signals:

EventSignal CategoryWhat's Captured
pushCode changeCommits, files changed, authors
issuesDiscussionIssue title, body, labels, assignees
issue_commentDiscussionComment content, context
pull_request_reviewCode reviewReview verdict, body
pull_request_review_commentCode reviewInline comment, diff context, file path

Configuration

GitHub signals are configured via Dashboard → Connectors → GitHub. You can customize which event types are processed. GitHub signals are enabled by default.

On this page