This document explains how to rebrand this project if you fork and deploy it.
Riverrun was developed by the original Perpetual Protocol team under the product name PERP GO. After Perpetual Protocol was transferred to a new team, this project was not included in the transfer. The original team has decided to open source the codebase.
This codebase is licensed under CC BY 4.0 (Creative Commons Attribution 4.0 International).
However, the "PERP" and "PERP GO" brand names have been transferred to a new team. If you fork this repository and deploy it, you must not use the PERP brand (including "PERP GO", "Perpetual Protocol", or any similar naming).
If you want to deploy your own version of this app, you'll need to update the following brand-related content:
| File | Content | Description |
|---|---|---|
app.config.ts |
PERP GO, PERP GO (Dev), PERP GO (Preview) |
App display name |
app.config.ts |
com.perpetualprotocol.riverrun.* |
Bundle ID / Package name |
app.json |
"slug": "riverrun" |
Expo slug |
app.json |
"scheme": "riverrun" |
Deep link URL scheme |
app.json |
"owner": "perpetual-protocol" |
Expo account owner |
package.json |
"name": "riverrun" |
NPM package name |
| File | Content | Description |
|---|---|---|
infra/reown/appKitConfig.ts |
name: 'PERP GO' |
WalletConnect display name |
infra/reown/appKitConfig.ts |
url: 'https://go.perp.com' |
App website URL |
infra/reown/appKitConfig.ts |
icons: [...] |
App icon URL |
infra/reown/appKitConfig.ts |
native: 'riverrun://' |
Deep link scheme |
app.config.ts |
https://api.go.perp.com |
Backend API URL |
app-internal/components/settings/ExportWalletModal.tsx |
https://go-export.perp.com |
Wallet export URL |
| File | Content | Description |
|---|---|---|
contexts/agent/constants.ts |
DEFAULT_AGENT_NAME = 'PERP GO Agent' |
Trading agent display name |
You'll need to create new accounts for these services:
| Service | Files | What to Update |
|---|---|---|
| Expo/EAS | app.json |
projectId, updates.url, owner |
| Sentry | app.json |
sentryDsn, organization, project |
| Intercom | app.json |
appId, androidApiKey, iosApiKey (or remove if not needed) |
| Reown | Environment | EXPO_PUBLIC_REOWN_PROJECT_ID |
| Segment | Environment | SEGMENT_WRITE_KEY (or remove if not needed) |
| File | Description |
|---|---|
app-internal/assets/images/icon.png |
Main app icon |
app-internal/assets/images/splash-icon.png |
Splash screen icon |
app-internal/assets/images/favicon.png |
Web favicon |
app-internal/assets/images/android-icon-foreground.png |
Android adaptive icon (foreground) |
app-internal/assets/images/android-icon-background.png |
Android adaptive icon (background) |
app-internal/assets/images/android-icon-monochrome.png |
Android monochrome icon |
app-internal/assets/images/perp-go-logo-color.svg |
Brand logo SVG |
| File | Content |
|---|---|
app.json |
NSMicrophoneUsageDescription mentions "PERP GO" |
| File | Content | Description |
|---|---|---|
contexts/agent/adapters/agentPkStore.ts |
riverrun-agent-pk- |
Storage key prefix |
Update or remove references to "Riverrun", "PERP GO", or "Perpetual Protocol" in:
README.mddocs/ui-direction/about.mddocs/versioning.mddocs/hexagonal-architecture-guide.md- Other markdown files in
docs/
To find all brand references in the codebase:
# Search for PERP GO
grep -r -i "perp go" --include="*.ts" --include="*.tsx" --include="*.json" --include="*.md" . | grep -v node_modules
# Search for perp.com URLs
grep -r "perp\.com" --include="*.ts" --include="*.tsx" --include="*.json" . | grep -v node_modules
# Search for perpetualprotocol
grep -r "perpetualprotocol" --include="*.ts" --include="*.tsx" --include="*.json" . | grep -v node_modules
# Search for riverrun
grep -r "riverrun" --include="*.ts" --include="*.tsx" --include="*.json" --include="*.md" . | grep -v node_modules | grep -v ".git"This app references a backend API (api.go.perp.com) which is only used for push notifications (device registration/unregistration). The backend is not included in this repository.
Good news: The backend is completely optional. All core features (trading, wallet, deposits, withdrawals) work without it. If you skip the backend setup:
- Push notifications will be disabled
- Everything else works normally
If you want push notifications, you can build your own backend. See infra/backend/ for the simple API interface (just 3 endpoints: register, unregister, status).
If you have questions about rebranding or the codebase, feel free to open an issue on this repository.