PlainHub
Talk to Your Whole Repository. GitHub-native browser editor with AI Panel and voice mode.

Open, edit, save — directly to your repo. Ask AI about your files. Now with voice. No server, no database.
Ask your own Claude Code in the PlainHub AI panel — it runs on your PC, read-only, no API key:
npm i -g plainhub
plainhub agent
Then in PlainHub: Settings → Connect your own agent, and enter the code it shows.
Setup guide — from your phone, what it can read, troubleshooting.
What's New in v1.4.0 — "Talk to Your Whole Repository"
🎙 Voice Mode (Web App)
- Push-to-talk voice input — hold the mic button to dictate
- Read-aloud AI responses with adjustable speed (1.0x / 1.5x / 2.0x / 3.0x / 5.0x)
- All in your browser — no server, no extra account
🤖 Enhanced AI Panel
- Ask Claude about any file in your repository
- BYOK (Bring Your Own Key) — your Anthropic API key stays in your browser
- Streaming responses with diff preview for proposed edits
🔐 GitHub App Authentication
- Per-repository access — choose exactly which repos PlainHub can read/write
- No "all repos" scope, no full-account access
- Minimal trust required to start
Try it now: plainhub.dev
Install
npm install -g plainhub
Quick Start
CLI
plainhub auth --from-gh
plainhub open README.md -r owner/repo
plainhub browse -r owner/repo
MCP Server (Claude Code)
claude mcp add plainhub -- plainhub-mcp
Then say: "Open the README in PlainHub"
MCP Server (Cursor)
Add to .cursor/mcp.json:
{
"mcpServers": {
"plainhub": {
"command": "plainhub-mcp"
}
}
}
CLI Usage
Commands
plainhub open <file> | Open a file in PlainHub |
plainhub diff <sha> | Show commit diff in PlainHub |
plainhub browse | Open repository file browser |
plainhub auth | Authenticate with GitHub PAT |
plainhub auth --from-gh | Import token from gh CLI |
plainhub auth --status | Show auth status |
plainhub auth --logout | Remove saved token |
plainhub post | Add a message to a ledger thread |
plainhub decide | Create a pending decision card |
plainhub ledger check <folder> | Check a ledger's front matter and look for secrets |
plainhub agent | Connect your Claude Code to the PlainHub AI panel (read-only, this folder only) |
plainhub agent --mailbox <owner/repo> | Also answer from your phone through a private repository only you can write to |
plainhub agent --forget | Forget all paired browsers |
Options
-r, --repo | owner/name | Repository |
-b, --branch | string | Git branch |
-l, --line | number | Jump to line |
-n | | Print URL only (don't open browser) |
--theme | dark/light | Editor theme |
--preview | on/off | Markdown preview |
--scroll | string | Scroll to heading in preview |
--sidebar | on/off | Show sidebar |
--fontSize | 10-32 | Font size |
--lineNumbers | on/off | Show line numbers |
--whitespace | on/off | Show whitespace |
--no-auth | | Open without saved token |
Examples
plainhub open docs/API.md -r owner/repo --preview on
plainhub open src/App.tsx -r owner/repo -l 42 --theme light
plainhub open README.md -r owner/repo -n
plainhub diff abc1234 -r owner/repo
plainhub diff abc1234 -r owner/repo --path src/main.js
MCP Server Tools
plainhub_open | Open a file or change editor settings |
plainhub_diff | Show commit diff in PlainHub |
plainhub_post | Add a message to a ledger thread |
plainhub_decide | Create a pending decision card |
plainhub_browse | Open repository file browser |
plainhub_auth | Save a GitHub PAT |
plainhub_auth_status | Check authentication status |
Ledger (shared notes for AI agents and people)
A ledger is a folder with .agents/threads/<thread>/NN-<role>.md (messages) and .agents/decisions/<id>.md (decision cards). Each file is Markdown with YAML front matter.
echo "All tests pass." | plainhub post --ledger . --thread gen-027 --role dev --verdict pass --summary "Fixed the save conflict"
plainhub decide --ledger . --id 2026-10-01-gen-027-release --summary "Ship gen-027" --body-file card.md
plainhub ledger check .
- Never overwrites an existing file (
post takes the next number, decide stops if the id exists)
- Refuses secret-looking values (GitHub tokens, API keys, private keys) without printing them
- Summary: one line, max 120 characters. Body: max 4KB
- Room language: write the summary and body in the language set by
.agents/room.md (type: room, language: ja — a BCP 47 tag; English if not set). post and decide print it after writing (CLI: on standard error), and the MCP tools say it in their descriptions
- MCP tools write only to the ledger set by the
PLAINHUB_LEDGER environment variable. Set PLAINHUB_ROLE to pin the role; owner cannot post from MCP
Authentication
PlainHub supports three authentication methods:
- gh CLI import (recommended):
plainhub auth --from-gh
- Manual PAT:
plainhub auth — opens GitHub token settings
- Web UI: Enter PAT directly in the browser
Tokens are saved to ~/.config/plainhub/token with 0600 permissions (owner-only read/write).
Security
- Tokens are stored locally with restrictive file permissions (
0600)
- URL fragments (
#token=...) are never sent to servers per HTTP spec
- Fragments are cleared from browser history immediately after use
- No intermediary servers — browser communicates directly with GitHub API
Links
License
MIT