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.
- 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 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 REACT_APP_SALMON_ENV variable or copy the appropriate file into env.local.json before launching the app.
-
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
REACT_APP_SALMON_ENVto target the desired cluster.
-
Build both Chrome/Brave and Firefox packages:
yarn build:extension
Artifacts are written to:
- Chromium-based browsers:
build-extension/ - Firefox:
build-extension-mozilla/
- Chromium-based browsers:
-
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.
- 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]
Refer to package.json for the complete script catalog.
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.
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.
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.
Salmon Wallet is released under the GNU GPL v3.0.