Glam
a public marketplace of all solana-related skills for agents to learn from!
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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
7.2 KB, 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/