Yaplate is a GitHub App bot that helps maintainers and contributors communicate better by translating, summarizing, and generating replies inside GitHub issues and pull requests.
Yaplate works directly inside GitHub issues and pull requests.
- Translate issue and pull request comments into your preferred language
- Summarize long issue threads so maintainers can catch up quickly
- Generate reply drafts using AI when asked
- Auto deletes its own comments
- Send follow-up reminders for assigned issues and pull requests (optional)
- Mark inactive threads as stale (optional)
Mention the bot in an issue or pull request comment.
For translation and reply commands, quote the comment you want the bot to respond to. Yaplate will translate or generate a reply based on the quoted text.
- Website: Yaplate Website
- Test here: Yaplate Test
For default english
@yaplate summarize
@yaplate summarize in <language_code>
Quote the message and run:
@yaplate translate to <language_code>
Quote the message and run:
@yaplate reply in <language_code>
<your_reply_text>
User:
> Estoy bloqueado por un error de dependencias…
@yaplate translate to en
Yaplate:
> Estoy bloqueado por un error de dependencias…
Translation (en):
“I’m blocked by a dependency error…”
- Greet the author/assignee: Yaplate will greet the author or assignee when they open their first issue or pull request in the repository.
- Follow-Up Scheduler: Yaplate will ask for follow-ups from the author/assignee after a delay. If no response is received, the issue/PR may be marked as stale.
- Auto-delete bot comment: If you delete the comment that triggered Yaplate, the bot will also delete its corresponding reply (the one created because of your comment).
If enabled, Yaplate automatically schedules follow-ups when:
- An issue is assigned to someone
- A PR is opened (optional)
It sends reminders after a delay if no progress is detected.
Follow-ups are posted in the assignee/author language when possible.
- A follow-up timer starts when an issue is assigned or a pull request is opened.
- Yaplate detects the language of the issue/PR and uses that language for follow-up messages.
- If the assignee/author replies to the follow-up with a quoted response, Yaplate treats it as progress and schedules the next follow-up (if configured).
- If there is no meaningful progress after the configured number of follow-ups, Yaplate posts a stale comment explaining the inactivity.
- Special Case: if the user indicates they are blocked or waiting for maintainer approval, Yaplate stops escalation and posts a message requesting maintainer attention. No further follow-ups or stale marking will occur.
flowchart TD
A[Follow-up Feature] -->|Reply| B[Schedule Next Follow-Up]
A -->|No reply| S1[Mark Stale]
B -->|Reply| C[Schedule Next Follow-Up]
B -->|No reply| S2[Mark Stale]
C -->|Reply| D[...]
C -->|No reply| S3[Mark Stale]
Yaplate uses standard language codes (ISO 639-1). Examples:
| Code | Language |
|---|---|
en |
English |
hi |
Hindi |
fr |
French |
ja |
Japanese |
zh |
Chinese |
- Lingo.dev API (translation)
- FastAPI (Webhook server)
- Redis (state + scheduling)
- Gemini API (summarization + semantic checks + Human intention)
- Create a Railway project
- Deploy this repo from GitHub
- Add a Redis database in the same Railway project
- Generate a public domain in Railway (Networking → Generate Domain)
| Variable | Required | Description |
|---|---|---|
| GITHUB_WEBHOOK_SECRET | Yes | Webhook signature secret |
| GITHUB_APP_ID | Yes | GitHub App ID |
| GITHUB_PRIVATE_KEY | Yes | Full PEM private key content |
| REDIS_URL | Yes | Redis connection URL |
| LINGO_API_KEY | Yes | Translation API key |
| GEMINI_API_KEY | Yes | Gemini API key |
Note: Do NOT use GITHUB_PRIVATE_KEY_PATH on Railway. Use GITHUB_PRIVATE_KEY.
-
Create a GitHub App from GitHub Developer Settings
-
Enable webhook events:
- Issues
- Issue comments
- Pull requests
- Pull request review comments
- Installation
- Installation repositories
- Set webhook URL:
https://YOUR_DOMAIN/webhook
- Generate and download the private key .pem
Yaplate requires the following GitHub App permissions to work correctly:
- Repository Permissions
- Issues: Read & write
- Pull requests: Read & write
- Metadata: Read-only
- Contents: Read-only (optional, only if future repo config is enabled)
- Install dependencies:
pip install -r requirements.txt- Setup environment:
- Create a .env file:
GITHUB_WEBHOOK_SECRET=...
GITHUB_APP_ID=...
GITHUB_PRIVATE_KEY_PATH=github_private_key.pem
LINGO_API_KEY=...
GEMINI_API_KEY=...
REDIS_URL=redis://localhost:6379/0- Start Redis:
docker run -p 6379:6379 redis- Run the bot
uvicorn app.main:app --host 0.0.0.0 --port 8000- Expose webhook
ngrok http 8000- Then set Github App Webhook URL to:
https://<ngrok-domain>/webhook
- Better handling of language drift across long issues and pull requests
- Per-repository and per-organization configuration
- Disable bot for selected issues and pull requests
- Cached responses when LLM or translation services are unavailable
- Better permission minimization
For bugs, feature requests, or feedback:
- Open an issue in this repository
- Or contact: ashutoshkumart82@gmail.com




