GLAM Protocol Skill
GLAM provides programmable investment infrastructure on Solana: vaults with access control, DeFi integrations, and tokenization.
Quick Start
# Install CLI
npm install -g @glamsystems/glam-cli
# Configure (~/.config/glam/config.json)
cat > ~/.config/glam/config.json << 'EOF'
{
"keypair_path": "~/.config/solana/id.json",
"json_rpc_url": "https://api.mainnet-beta.solana.com"
}
EOF
# Create vault, set active, enable integrations, verify
glam-cli vault create ./vault-template.json
glam-cli vault set <VAULT_STATE_PUBKEY>
glam-cli integration enable JupiterSwap KaminoLend
glam-cli vault view
Critical: Integration Enablement
You MUST enable integrations BEFORE using them. This is the most common error.
Available: JupiterSwap, KaminoLend, KaminoVaults, KaminoFarms, SplToken, CCTP, GlamMint, Marinade (staging), StakePool (staging), SanctumSingle (staging), SanctumMulti (staging), StakeProgram (staging).
Staging integrations require --bypass-warning.
Workflows
Tokenized Vault Setup
glam-cli vault create ./tokenized-vault-template.json
glam-cli vault set <VAULT_STATE_PUBKEY>
glam-cli integration enable JupiterSwap KaminoLend
glam-cli manage price # Set initial NAV price
glam-cli jupiter set-max-slippage 100 # Configure swap policy
# Optional: delegate trading permissions (protocol-scoped)
glam-cli delegate grant <TRADER_PUBKEY> SwapAny --protocol JupiterSwap
# Optional: set timelock (24 hours)
glam-cli timelock set 86400
Kamino Lending
glam-cli integration enable KaminoLend
glam-cli kamino-lend init # Required once
glam-cli kamino-lend deposit \
7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF \
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v \
1000
Decision Tree
| Goal |
Integration |
Command |
| Swap tokens |
JupiterSwap |
jupiter swap |
| Lend for yield |
KaminoLend |
kamino-lend deposit |
| Stake SOL (liquid) |
Marinade (staging) |
marinade --bypass-warning stake |
| Stake SOL (LST) |
StakePool / SanctumSingle / SanctumMulti (staging) |
lst --bypass-warning stake <pool> <amount> |
| Stake SOL (native) |
StakeProgram (staging) |
stake --bypass-warning list / deactivate / withdraw |
| Kamino vaults |
KaminoVaults |
kamino-vaults deposit |
| Tokenized vault |
— |
vault create → manage price → investors invest subscribe |
| Manage share tokens |
— |
SDK only: client.mint.* (freeze, issue, burn, forceTransfer) |
| Bridge USDC |
CCTP |
cctp bridge-usdc <amount> <domain> <dest> (0=ETH, 1=AVAX, 2=OP, 3=ARB, 6=BASE, 7=POLYGON) |
| Timelock |
— |
timelock set <seconds> |
Common Errors
| Error |
Solution |
| "Signer is not authorized" |
Check vault view for owner; grant delegate if needed |
| "Integration not enabled" |
integration enable <NAME> |
| "Asset not in allowlist" |
vault allowlist-asset <MINT> |
| "User not initialized" |
kamino-lend init |
| "No route found" |
Try smaller amount; check token liquidity |
| "Slippage exceeded" |
Increase --slippage-bps or reduce amount |
| "Account is frozen" |
SDK: client.mint.setTokenAccountsStates() |
| "Missing jupiter_api_key" |
Add jupiter_api_key to config.json |
See troubleshooting for detailed solutions.
Common Mints
| Token |
Address |
| SOL |
So11111111111111111111111111111111111111112 |
| USDC |
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| USDT |
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB |
| mSOL |
mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So |
| jitoSOL |
J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn |
SDK Quick Start
import {
GlamClient,
WSOL,
USDC,
getProgramAndBitflagByProtocolName,
} from "@glamsystems/glam-sdk";
import { BN } from "@coral-xyz/anchor";
const client = new GlamClient({ wallet });
// Create vault
const { vaultPda } = await client.vault.create({
name: "My Vault",
assets: [WSOL, USDC],
});
// Enable Jupiter integration
const perms = getProgramAndBitflagByProtocolName();
const [program, bitflag] = perms["JupiterSwap"];
await client.access.enableProtocols(vaultPda, program, parseInt(bitflag, 2));
// Swap
await client.jupiterSwap.swap(vaultPda, {
inputMint: USDC,
outputMint: WSOL,
amount: new BN(100_000_000),
slippageBps: 50,
});
For advanced proxy instruction remapping (convert standard Solana instructions into GLAM-proxied instructions), see the ix-mapper SDK reference.
Reference
- CLI: vault, delegate, jupiter, kamino-lend, kamino-vaults, kamino-farms, staking, lst, invest, manage, transfer, advanced, alt
- SDK: client, integrations, ix-mapper, mint, multisig
- Other: concepts, examples, troubleshooting
- Docs: https://docs.glam.systems/
1---2name: glam3description: Solana vault management via GLAM Protocol. Triggers: glam, glam-cli, glam-sdk, vault create/manage, tokenized vault, share class, DeFi vault, treasury, asset management, access control, delegate permissions, Jupiter swap, Kamino lending/borrow/vaults/farms, staking (Marinade/native/SPL/Sanctum/LST), cross-chain USDC (CCTP), timelock, subscription/redemption, NAV pricing, token transfer. Supports CLI and TypeScript SDK.4---5
6# GLAM Protocol Skill
7
8GLAM provides programmable investment infrastructure on Solana: vaults with access control, DeFi integrations, and tokenization.
9
10## Quick Start
11
12```bash
13# Install CLI
14npm install -g @glamsystems/glam-cli
15
16# Configure (~/.config/glam/config.json)
17cat > ~/.config/glam/config.json << 'EOF'
18{
19 "keypair_path": "~/.config/solana/id.json",
20 "json_rpc_url": "https://api.mainnet-beta.solana.com"
21}
22EOF
23
24# Create vault, set active, enable integrations, verify
25glam-cli vault create ./vault-template.json
26glam-cli vault set <VAULT_STATE_PUBKEY>
27glam-cli integration enable JupiterSwap KaminoLend
28glam-cli vault view
29```
30
31## Critical: Integration Enablement
32
33**You MUST enable integrations BEFORE using them.** This is the most common error.
34
35Available: `JupiterSwap`, `KaminoLend`, `KaminoVaults`, `KaminoFarms`, `SplToken`, `CCTP`, `GlamMint`, `Marinade` (staging), `StakePool` (staging), `SanctumSingle` (staging), `SanctumMulti` (staging), `StakeProgram` (staging).
36
37Staging integrations require `--bypass-warning`.
38
39---
40
41## Workflows
42
43### Tokenized Vault Setup
44
45```bash
46glam-cli vault create ./tokenized-vault-template.json
47glam-cli vault set <VAULT_STATE_PUBKEY>
48glam-cli integration enable JupiterSwap KaminoLend
49glam-cli manage price # Set initial NAV price
50glam-cli jupiter set-max-slippage 100 # Configure swap policy
51
52# Optional: delegate trading permissions (protocol-scoped)
53glam-cli delegate grant <TRADER_PUBKEY> SwapAny --protocol JupiterSwap
54
55# Optional: set timelock (24 hours)
56glam-cli timelock set 86400
57```
58
59### Kamino Lending
60
61```bash
62glam-cli integration enable KaminoLend
63glam-cli kamino-lend init # Required once
64glam-cli kamino-lend deposit \
65 7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF \
66 EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v \
67 1000
68```
69
70---
71
72## Decision Tree
73
74| Goal | Integration | Command |
75|---------------------| -------------------- | ------------------------------------------------------------------------------------------- |
76| Swap tokens | `JupiterSwap` | `jupiter swap` |
77| Lend for yield | `KaminoLend` | `kamino-lend deposit` |
78| Stake SOL (liquid) | `Marinade` (staging) | `marinade --bypass-warning stake` |
79| Stake SOL (LST) | `StakePool` / `SanctumSingle` / `SanctumMulti` (staging) | `lst --bypass-warning stake <pool> <amount>` |
80| Stake SOL (native) | `StakeProgram` (staging) | `stake --bypass-warning list / deactivate / withdraw` |
81| Kamino vaults | `KaminoVaults` | `kamino-vaults deposit` |
82| Tokenized vault | — | `vault create` → `manage price` → investors `invest subscribe` |
83| Manage share tokens | — | SDK only: `client.mint.*` (freeze, issue, burn, forceTransfer) |
84| Bridge USDC | `CCTP` | `cctp bridge-usdc <amount> <domain> <dest>` (0=ETH, 1=AVAX, 2=OP, 3=ARB, 6=BASE, 7=POLYGON) |
85| Timelock | — | `timelock set <seconds>` |
86
87---
88
89## Common Errors
90
91| Error | Solution |
92| -------------------------- | ------------------------------------------------------ |
93| "Signer is not authorized" | Check `vault view` for owner; grant delegate if needed |
94| "Integration not enabled" | `integration enable <NAME>` |
95| "Asset not in allowlist" | `vault allowlist-asset <MINT>` |
96| "User not initialized" | `kamino-lend init` |
97| "No route found" | Try smaller amount; check token liquidity |
98| "Slippage exceeded" | Increase `--slippage-bps` or reduce amount |
99| "Account is frozen" | SDK: `client.mint.setTokenAccountsStates()` |
100| "Missing jupiter_api_key" | Add `jupiter_api_key` to config.json |
101
102> See [troubleshooting](./docs/troubleshooting.md) for detailed solutions.
103
104---
105
106## Common Mints
107
108| Token | Address |
109| ------- | ---------------------------------------------- |
110| SOL | `So11111111111111111111111111111111111111112` |
111| USDC | `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` |
112| USDT | `Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB` |
113| mSOL | `mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So` |
114| jitoSOL | `J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn` |
115
116---
117
118## SDK Quick Start
119
120```typescript
121import {
122 GlamClient,
123 WSOL,
124 USDC,
125 getProgramAndBitflagByProtocolName,
126} from "@glamsystems/glam-sdk";
127import { BN } from "@coral-xyz/anchor";
128
129const client = new GlamClient({ wallet });
130
131// Create vault
132const { vaultPda } = await client.vault.create({
133 name: "My Vault",
134 assets: [WSOL, USDC],
135});
136
137// Enable Jupiter integration
138const perms = getProgramAndBitflagByProtocolName();
139const [program, bitflag] = perms["JupiterSwap"];
140await client.access.enableProtocols(vaultPda, program, parseInt(bitflag, 2));
141
142// Swap
143await client.jupiterSwap.swap(vaultPda, {
144 inputMint: USDC,
145 outputMint: WSOL,
146 amount: new BN(100_000_000),
147 slippageBps: 50,
148});
149```
150
151For advanced proxy instruction remapping (convert standard Solana instructions into GLAM-proxied instructions), see the `ix-mapper` SDK reference.
152
153---
154
155## Reference
156
157- **CLI**: [vault](./resources/cli/vault.md), [delegate](./resources/cli/delegate.md), [jupiter](./resources/cli/jupiter.md), [kamino-lend](./resources/cli/kamino-lend.md), [kamino-vaults](./resources/cli/kamino-vaults.md), [kamino-farms](./resources/cli/kamino-farms.md), [staking](./resources/cli/staking.md), [lst](./resources/cli/lst.md), [invest](./resources/cli/invest.md), [manage](./resources/cli/manage.md), [transfer](./resources/cli/transfer.md), [advanced](./resources/cli/advanced.md), [alt](./resources/cli/alt.md)
158- **SDK**: [client](./resources/sdk/client.md), [integrations](./resources/sdk/integrations.md), [ix-mapper](./resources/sdk/ix-mapper.md), [mint](./resources/sdk/mint.md), [multisig](./resources/sdk/multisig.md)
159- **Other**: [concepts](./resources/concepts.md), [examples](./examples/EXAMPLES.md), [troubleshooting](./docs/troubleshooting.md)
160- **Docs**: https://docs.glam.systems/