Glam
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.From its SKILL.md
npx -y skills add sendaifun/skills --skill glamAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- reads credentialsReads from 2 credential sources: `~/.config/solana/id.json` and 1 more.
- runs commandsInstructs the agent to run 8 commands, including `npm install -g @glamsystems/glam-cli` and 7 more.
SKILL.md
7.2 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
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/
What ships with it: 22 files
104.7 KB alongside SKILL.md
docs/
- troubleshooting.md4.8 KB
examples/
- EXAMPLES.md10.9 KB
resources/
- cli/advanced.md4.1 KB
- cli/alt.md1.6 KB
- cli/delegate.md3.6 KB
- cli/invest.md1.8 KB
- cli/jupiter.md2.8 KB
- cli/kamino-farms.md2.1 KB
- cli/kamino-lend.md3.4 KB
- cli/kamino-vaults.md2.3 KB
- cli/lst.md2.8 KB
- cli/manage.md2.9 KB
- cli/staking.md3.8 KB
- cli/transfer.md1.9 KB
- cli/vault.md8.0 KB
- concepts.md6.9 KB
- sdk/client.md10.3 KB
- sdk/integrations.md9.7 KB
- sdk/ix-mapper.md3.9 KB
- sdk/mint.md2.8 KB
- sdk/multisig.md3.3 KB
- evaluations.json10.7 KB
Gives 0 of the 12 instructions most pricing monetisation skills give in ~1.8k tokens
Counted across 324 of the 339 authors here whose files we hold, read 2026-09-06
- Read product marketing context before asking questionsin 39 of 324, across 16 files
- Demonstrate paid feature value with previewsin 21 of 324, across 8 files
- Choose a value metric that scales with customer valuein 21 of 324, across 14 files
- Verify webhook signatures on every eventin 19 of 324
- Send trial expiration warnings earlyin 16 of 324, across 6 files
- Minimize steps from paywall to paymentin 15 of 324, across 5 files
- Price between next best alternative and perceived valuein 15 of 324, across 7 files
- Grandfather existing customers when raising pricesin 14 of 324, across 10 files
- Understand upgrade context, product model, and user journey firstin 14 of 324, across 5 files
- Show paywalls only after users experience valuein 13 of 324, across 6 files
- Include an escape hatch on every paywallin 12 of 324, across 4 files
- A/B test paywall variationsin 11 of 324, across 3 files
Said here and by no other author read
- Enable integrations before using them
- Install the CLI globally with npm
- Configure keypair and RPC URL before use
- Create vaults from a template file
- Set the active vault before operating
- Verify setup with vault view
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.