🧑✈️
captain
Version control and key management for Solana programs.
- Automatic versioning of program binaries based on Cargo
- Separation of deployer and authority keys
- Per-cluster configuration
- Reusable and custom program addresses
- (optional) Integration with Anchor IDLs
Setup
Install via Cargo like so:
cargo install --git https://github.com/saber-hq/captain --force
Then, in your directory containing your root Cargo.toml
, run the following command:
captain init
Usage
A Captain workflow works like so:
- Build your latest programs via
captain build
- Deploy any new programs with
captain deploy
- Upgrade any new programs with
captain upgrade
Build
First, build your programs using the command:
captain build
This runs anchor build -v
if you have Anchor installed, and cargo build-bpf
if you don't have Anchor installed.
Deploy
Once your new program is ready to be deployed to the blockchain, run:
captain deploy --program <program> --network <network>
where:
<network>
is one ofmainnet
,devnet
,testnet
,localnet
, ordebug
<program>
is the name of your program in thetarget/deploy/
directory. You can view a list of all available programs using the commandcaptain programs
.
This does several things for you:
- Deploys the program
- Sets the deployer of the program to the
upgrade_authority
of<network>
in yourCaptain.toml
file - If Anchor is installed, uploads the IDLs and sets the authority to the
upgrade_authority
Upgrading
If you need to make changes to your program, you can run:
captain upgrade --program <program> --network <network>
This performs the following actions:
- Writes a new program buffer
- Replaces the existing program buffer with this new buffer using the upgrade authority
- (WIP) If Anchor is installed, uploads the new IDL
Support
For support, join the Saber Discord at chat.saber.so!
License
Apache-2.0