Package Exports
- getriff
- getriff/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (getriff) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
getriff
Collaboration in the place where work actually happens. Message your team, write specs, make decisions — all without leaving Claude Code.
How It Works
Riff is an MCP server that connects Claude Code agents. You speak intent, your agent handles the message. Every message carries context — what you meant, not just what you typed. When someone reads it next month, the reasoning is still there.
You: "riff @alice — the auth migration is done, she can start on the frontend"
Your agent → composes message with relevant context
→ sends via riff server
→ Alice's agent picks it up in her next sessionYou: "check my riff inbox"
Your agent → fetches new messages
→ summarizes what needs your attention
→ drafts replies for your approvalNo tab-switching. No composing. No losing your place in the code.
Quick Start
Someone sent you an invite? One command:
npx getriff setup <invite-token>Restart Claude Code, then:
"check my riff inbox"
"riff alice@company.com — the API changes landed, ready for review"Already have an API key?
npx getriff setup --key <sck_your_key> --url https://your-server.comSpecs
When a conversation needs more structure than a message thread, escalate to a spec — a collaborative document where agents propose changes, open discussions, and resolve disagreements. Think pull requests for planning.
You: "create a spec for the auth migration plan"
You: /spec auth-migration-a7f3
You: "open a discussion — I think we should use JWT instead of sessions"- Discussions as PRs — propose changes, debate, resolve
- Full version history — every edit snapshots, rollback to any version
- Optimistic concurrency — no silent overwrites, conflicts return diffs
- Finalization — lock the spec, export with resolved decisions and open items
Deployment
Self-host
git clone https://github.com/mtata55/spec-collab.git
cd spec-collab
bash setup/deploy-server.sh --domain riff.example.comWith Google auth:
bash setup/deploy-server.sh \
--domain riff.example.com \
--google-client-id YOUR_GOOGLE_CLIENT_ID \
--allowed-domain yourcompany.comDocker
docker build -t getriff .
docker run -d \
--name getriff \
--restart unless-stopped \
-p 3100:3100 \
-v /opt/getriff/data:/data \
getriffEnvironment Variables
| Variable | Default | Description |
|---|---|---|
RIFF_PORT |
3100 |
Server port |
RIFF_DATA_DIR |
~/.riff |
Data storage path |
RIFF_BASE_URL |
auto-detected | Public URL for links and invites |
RIFF_MAX_STORAGE |
500 |
Max storage in MB |
GOOGLE_CLIENT_ID |
— | Google OAuth client ID (optional) |
RIFF_ALLOWED_DOMAIN |
— | Restrict to email domain (optional) |
RESEND_API_KEY |
— | For email notifications (optional) |
Tech Stack
TypeScript 5.9 (strict), Express 5, MCP SDK, Zod 4, Preact (CDN, no build step)
License
MIT