Self-custodial, open-source & community-owned Solana wallet
Salmon Wallet
Self-custodial, open-source & community-owned Solana wallet
Salmon is a self-custodial wallet focused on transparency, resiliency, and a friendly user experience across devices. What started as a fork of Sollet evolved into a ground-up rewrite powered by React, React Native, and a browser-extension layer that keeps private keys on the client at all times. The project earned a Serum Foundation grant after being showcased at the Solana Riptide hackathon and continues to be maintained in the open.
Open-source code keeps the community empowered to audit, extend, and secure their own assets. We invite everyone to explore the codebase, submit improvements, and help us deliver a sustainable wallet ecosystem for the Solana network.
Quick Start
- Clone this repository and install dependencies:
yarn install
- (iOS only) Install native pods:
cd ios && pod install
- Configure environment variables as needed (see below).
- Pick a target (web, native, or extension) and use the scripts listed in the next sections.
Environment configuration
Environment templates live at the repository root (env.local.json, env.develop.json, env.main.json, env.prod.json). Use them to define RPC endpoints, feature flags, and other runtime settings. Set the REACTAPPSALMON_ENV variable or copy the appropriate file into env.local.json before launching the app.
Run the web client
- Development mode:
yarn start:web
This boots the CRA development server on port 3006 (overridable through PORT). Hot-reload is enabled and lint errors display in the console.
- Alternate environments:
yarn start:web:local
yarn start:web:main
yarn start:web:prod
Each command sets REACTAPPSALMON_ENV to target the desired cluster.
Browser extension builds
- Build both Chrome/Brave and Firefox packages:
yarn build:extension
Artifacts are written to:
- Chromium-based browsers: build-extension/
- Firefox: build-extension-mozilla/
- Individual targets are available through
yarn build:extension:chromeandyarn build:extension:mozilla. Use the accompanyingupload:bundle:*scripts to sync bundles to the Salmon S3 buckets when releasing.
Additional scripts
- Web production builds:
yarn build,yarn build:main,yarn build:prod - Test suites:
yarn test(web) andyarn test:native(React Native) - Linting:
yarn lint/yarn lint:fix - Serverless deployment helpers:
yarn serverless:deploy[:stage]andyarn serverless:remove[:stage]
package.json for the complete script catalog.
Project structure
src/– shared React components, hooks, screens, and Solana integration logic.extension/– background scripts, content scripts, and manifests used by the browser extension.android/,ios/– native project scaffolding managed by React Native.assets/,public/– static assets consumed across platforms.
Contributing
Contributions of all kinds are welcome—bug fixes, features, documentation, or localization updates. Please read CONTRIBUTION-AGREEMENT.md before submitting a pull request. Issues and feature requests help us prioritize work; feel free to open one if you discover a problem or have an idea to discuss.
Security
If you discover a vulnerability or have a security concern, please avoid filing a public issue. Instead, reach out to the maintainers directly so we can coordinate a responsible disclosure and patch timeline.
License
Salmon Wallet is released under the GNU GPL v3.0.