{"_id":"@solana-compass/cli","_rev":"12-4a193388ccbe9d0bdf50948bf1b83513","name":"@solana-compass/cli","dist-tags":{"latest":"0.3.5"},"versions":{"0.1.0":{"name":"@solana-compass/cli","version":"0.1.0","license":"MIT","_id":"@solana-compass/cli@0.1.0","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"42729c5905dedd267d5129327889b44d9246e828","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.1.0.tgz","fileCount":120,"integrity":"sha512-ASiZnEkmis/8SbayOEuYKgTKl7ndHgmG6w7mOERdALF8aD5nsi8c7cBCYkLl7qtBc+AKtL2JgsxnX+biZmiV5Q==","signatures":[{"sig":"MEUCIQCoLDtSX21JlLO5g0sXjPHJ+zcTXqmxB5vHg3c9uvQckgIgGa+XoaLzXUeKHBuzKsY5RUrOBZruacpEGDTFaRd453I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":445119},"type":"module","engines":{"node":">=20"},"gitHead":"0ecc40ab86726e7ccfef36ed5cbc00f359b982f4","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^2.1.0","better-sqlite3":"^11.0.0","@solana/web3.js":"^1.98.4","@solana-program/stake":"0.2.1","@solana-program/token":"^0.5.0","@solana-program/system":"^0.7.0","@kamino-finance/klend-sdk":"^7.3.19"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0_1771869062258_0.31659851336154476","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@solana-compass/cli","version":"0.2.0","license":"MIT","_id":"@solana-compass/cli@0.2.0","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"dc0d167df0941279d6d7183535716c4fc8ccc065","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.2.0.tgz","fileCount":120,"integrity":"sha512-HbZEdaMc2FkLTIySuQbAhTH++KIobrLG71348EnE7NGFEmdiwwPDWpNlE21EXZSL4fKA/qSSOSbWSrDUXxQ/Lg==","signatures":[{"sig":"MEUCIEtFivxQXzIDwaeYUmrJIXotO6WEfCnq8tpoHRIz/FFcAiEAniaON28CeB5MmrDjgDqctTC5s/u4GQsgR5K3lhgq+kU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":445161},"type":"module","engines":{"node":">=20"},"gitHead":"0ecc40ab86726e7ccfef36ed5cbc00f359b982f4","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^2.1.0","better-sqlite3":"^11.0.0","@solana/web3.js":"^1.98.4","@solana-program/stake":"0.2.1","@solana-program/token":"^0.5.0","@solana-program/system":"^0.7.0","@kamino-finance/klend-sdk":"^7.3.19"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.0_1771869862623_0.6790367236397301","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@solana-compass/cli","version":"0.2.1","license":"MIT","_id":"@solana-compass/cli@0.2.1","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"17e09a68aa15cdad561e04276115f5c5df450ebc","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.2.1.tgz","fileCount":129,"integrity":"sha512-CaZAUUqLrveOQ1sUMZ8KhWW/R/JiBr1LWrJXFkpSWHRNkpAEugfCSCX/1xdnw+pxuaEVTLx+DYHVIuro/LBmCA==","signatures":[{"sig":"MEUCIQD1ZWnmTgt3x3HXMh9u9V09P2ysIsa/5s0169U4oMSvywIgNaBG0FjdnvtZRejEYUQ2lWHW49E4hWjJr/6wk1ts3Kg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":473950},"type":"module","engines":{"node":">=20"},"gitHead":"4c4a2e1fd16d1b17d42b027b7df5ba588198d0c2","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^2.1.0","better-sqlite3":"^11.0.0","@solana/web3.js":"^1.98.4","@solana-program/stake":"0.2.1","@solana-program/token":"^0.5.0","@solana-program/system":"^0.7.0","@kamino-finance/klend-sdk":"^7.3.19"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.1_1771877957426_0.9264383589072354","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@solana-compass/cli","version":"0.2.2","license":"MIT","_id":"@solana-compass/cli@0.2.2","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"e8f94b81864ca0130c710cdb31e423ec86dc3b66","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.2.2.tgz","fileCount":130,"integrity":"sha512-+lpBfwGldT3NqJsEWsq+I6lkNUuIKrpeJAGPtdxCMODFDMKUq3HnZ6gZ8IRAsjsIngwDoQsP2dcwQYKw7CvA7A==","signatures":[{"sig":"MEUCIQD7P/+xMbkAhlnuEGseYH96q41xfgMWOZdxiI9Id+/qywIgdhuJRDR6bccXHL0lbh6Uzl5nYwGKoPS0gbqLU/2eMbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478039},"type":"module","engines":{"node":">=20"},"gitHead":"9b402ac285f9974f05e60d345c467c676f833bfd","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^2.1.0","better-sqlite3":"^11.0.0","@solana/web3.js":"^1.98.4","@solana-program/stake":"0.2.1","@solana-program/token":"^0.5.0","@solana-program/system":"^0.7.0","@kamino-finance/klend-sdk":"^7.3.19"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.2_1771879902986_0.8099881496238477","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@solana-compass/cli","version":"0.2.3","license":"MIT","_id":"@solana-compass/cli@0.2.3","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"f6843e44b6f2f537d45873a542a2d71fd8c95086","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.2.3.tgz","fileCount":130,"integrity":"sha512-PUhONo8VNto7NaWXaqpilTegAwGX5/m4rUf5Am4ovRHwwnZlvchSXOQN+oAPmGp8sNI4GjYxYM84/ydEhej7Sw==","signatures":[{"sig":"MEYCIQDodr5WbHXNjPNbDmYtBX7XVD6dWf5SvKwjnm1mvGUuHQIhAIzHjtE58tnV1loOtVpyEiinJcgiu1NBPIXYadDtAQyr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478277},"type":"module","engines":{"node":">=20"},"gitHead":"027dd87df7544925ad59ad6000e203b2b577b1b6","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^2.1.0","better-sqlite3":"^11.0.0","@solana/web3.js":"^1.98.4","@solana-program/stake":"0.2.1","@solana-program/token":"^0.5.0","@solana-program/system":"^0.7.0","@kamino-finance/klend-sdk":"^7.3.19"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.3_1771923020075_0.7336577125566277","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@solana-compass/cli","version":"0.2.4","license":"MIT","_id":"@solana-compass/cli@0.2.4","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"ffbca709705416ecf6e336a804275feb4b1f284d","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.2.4.tgz","fileCount":145,"integrity":"sha512-nJun1pEY7/j2kbK6J4RSCDMsCVZyo4WjhjQJayzNzz5bfVJfytSjoZCn7rsbD9zfltzwvq6cnZ83ew4/5BoTAg==","signatures":[{"sig":"MEUCIQDMkEAIVTmLfgOH/5IRzA2Pow65Yld5LCr4jZZtvtKYTwIgCxNhOUekqNPX7COIuMLFkcE7+wiekBNciZm//Vkt5wQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":522310},"type":"module","engines":{"node":">=20"},"gitHead":"b14e8dac22ed3bf44e58cc80798878c97764704a","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^2.1.0","better-sqlite3":"^11.0.0","@solana/web3.js":"^1.98.4","@solana-program/stake":"0.2.1","@solana-program/token":"^0.5.0","@solana-program/system":"^0.7.0","@kamino-finance/klend-sdk":"^7.3.19"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.4_1771932968599_0.7425118820114136","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@solana-compass/cli","version":"0.3.0","license":"MIT","_id":"@solana-compass/cli@0.3.0","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"b4d3b0d376ee931aa4859e73a880146db146d454","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.3.0.tgz","fileCount":262,"integrity":"sha512-DFTntMSb//0EpHNFhWYFHvis2GVFOfDyWVkjFMXk1I9ILNlr/ItDeCTv9ZMAMizGeWsYeLLfBDrMu0Wnm7oVug==","signatures":[{"sig":"MEUCIHYjcLXhPhGM0aFMcpInnzuMvpwhHKQ/hWxZCVLzt1HRAiEAyzb/Pe9/XEOp09lfiEkpBkW+KiJUHXAUBdUatiCwoOM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1167716},"type":"module","engines":{"node":">=20"},"gitHead":"f616f70d92a46dd5d4d24ba9ba05110bc5755c9a","scripts":{"dev":"tsx --tsconfig tsconfig.dev.json ./src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"npm run build:sdk && tsc","setup":"npm install && npm link","build:sdk":"cd sdk && tsc","publish:all":"npm run publish:sdk && npm publish --access public","publish:sdk":"cd sdk && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"workspaces":["sdk"],"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"bn.js":"^5.2.3","commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^3.0.0","better-sqlite3":"^11.0.0","@drift-labs/sdk":"^2.155.0","@solana/web3.js":"^1.98.4","@meteora-ag/dlmm":"^1.9.3","@coral-xyz/anchor":"^0.32.1","@orca-so/whirlpools":"^5.0.0","@solana-compass/sdk":"workspace:*","@solana-program/stake":"0.3.0","@solana-program/token":"^0.6.0","@meteora-ag/cp-amm-sdk":"^1.3.6","@solana-program/system":"^0.8.0","@kamino-finance/klend-sdk":"^7.3.19","@orca-so/whirlpools-client":"^5.0.0","@mrgnlabs/marginfi-client-v2":"^6.4.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/bn.js":"^5.2.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.3.0_1772482470516_0.6843282249298344","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@solana-compass/cli","version":"0.3.1","license":"MIT","_id":"@solana-compass/cli@0.3.1","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"feee514ac1f9fc29a4a34ceb94b5fcf05c0328fd","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.3.1.tgz","fileCount":262,"integrity":"sha512-bM85P0VNpcPZk4Rv0pNgtbk43hVWpGbyp8H8qgIYU/kfIE1oHaadIs18h9aON8pvl+55ex+8ddgLKmpnTxCJ2Q==","signatures":[{"sig":"MEUCIBbYfOt40I6CM+ZbQlRQS1oiBKsmPAlv7rADZ7+5EFhMAiEAzxQ4JvPIQqTF3ARjgcTZzy1ODjfmbb3xLeBe/b3nfao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1167711},"type":"module","engines":{"node":">=20"},"gitHead":"1114d4d483269b48102e5b651a8fea79440bcc43","scripts":{"dev":"tsx --tsconfig tsconfig.dev.json ./src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"npm run build:sdk && tsc","setup":"npm install && npm link","build:sdk":"cd sdk && tsc","publish:all":"npm run publish:sdk && npm publish --access public","publish:sdk":"cd sdk && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"workspaces":["sdk"],"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"bn.js":"^5.2.3","commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^3.0.0","better-sqlite3":"^11.0.0","@drift-labs/sdk":"^2.155.0","@solana/web3.js":"^1.98.4","@meteora-ag/dlmm":"^1.9.3","@coral-xyz/anchor":"^0.32.1","@orca-so/whirlpools":"^5.0.0","@solana-compass/sdk":"^0.3.1","@solana-program/stake":"0.3.0","@solana-program/token":"^0.6.0","@meteora-ag/cp-amm-sdk":"^1.3.6","@solana-program/system":"^0.8.0","@kamino-finance/klend-sdk":"^7.3.19","@orca-so/whirlpools-client":"^5.0.0","@mrgnlabs/marginfi-client-v2":"^6.4.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/bn.js":"^5.2.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.3.1_1772488022704_0.736036039466585","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@solana-compass/cli","version":"0.3.2","license":"MIT","_id":"@solana-compass/cli@0.3.2","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"9bc4c3460d0c1bca397a46a84085a307f0cb0897","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.3.2.tgz","fileCount":262,"integrity":"sha512-WTX4OyXWeUeifLbu9tnJHKApAlMTQcs4VTDrCNIv/l4hrMzxwKepREHSvq8N2jdHwHtuApQtmMODL/COwT68rA==","signatures":[{"sig":"MEQCIDtv5LpuXPTVlDMj3IpqcuJNj19X2bJqxEzktHpQ4Lv+AiBbitA/Bb9HaGRQt48UDXFDTkE7lnFh1z2nMwb+XRMzug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1176942},"type":"module","engines":{"node":">=20"},"gitHead":"c1f9408cc0361125cc3e1bd95895f7700520dd70","scripts":{"dev":"tsx --tsconfig tsconfig.dev.json ./src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"npm run build:sdk && tsc","setup":"npm install && npm link","build:sdk":"cd sdk && tsc","publish:all":"npm run publish:sdk && npm publish --access public","publish:sdk":"cd sdk && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"workspaces":["sdk"],"_npmVersion":"11.6.2","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"25.2.1","dependencies":{"bn.js":"^5.2.3","commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^3.0.0","better-sqlite3":"^11.0.0","@drift-labs/sdk":"^2.155.0","@solana/web3.js":"^1.98.4","@meteora-ag/dlmm":"^1.9.3","@coral-xyz/anchor":"^0.32.1","@orca-so/whirlpools":"^5.0.0","@solana-compass/sdk":"^0.3.1","@solana-program/stake":"0.3.0","@solana-program/token":"^0.6.0","@meteora-ag/cp-amm-sdk":"^1.3.6","@solana-program/system":"^0.8.0","@kamino-finance/klend-sdk":"^7.3.19","@orca-so/whirlpools-client":"^5.0.0","@mrgnlabs/marginfi-client-v2":"^6.4.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/bn.js":"^5.2.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.3.2_1772539929859_0.3028167888167401","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@solana-compass/cli","version":"0.3.3","license":"MIT","_id":"@solana-compass/cli@0.3.3","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"9593faef4516441dda1eca40d6a74c91f386bc08","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.3.3.tgz","fileCount":262,"integrity":"sha512-cYJTugQoJ3N90R/hJVrUAMdNP2+vdP0jlivLuDj3XIJv5cnvlxUaZXclYvkWiJoSDu1t8nOWCJGDBVXwU2/0CA==","signatures":[{"sig":"MEUCIE/IslCrm6Wk/GnOd+4CvzQqRLpcwcPUV/FS+3qMDJ5hAiEAwEtja+pt31tDBK3im/Qk0VZJkLUnUVY2a6byv/YHLXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1177489},"type":"module","engines":{"node":">=20"},"gitHead":"fcea6d2af5031868466c14c86679df56e5903571","scripts":{"dev":"tsx --tsconfig tsconfig.dev.json ./src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"npm run build:sdk && tsc","setup":"npm install && npm link","build:sdk":"cd sdk && tsc","publish:all":"npm run publish:sdk && npm publish --access public","publish:sdk":"cd sdk && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"overrides":{"@drift-labs/sdk":{"anchor-bankrun":{"solana-bankrun":"^0.3.0","@coral-xyz/anchor":"0.29.0"}},"@orca-so/whirlpools-client":{"@solana/kit":"$@solana/kit"},"@kamino-finance/kliquidity-sdk":{"@orca-so/whirlpools-client":{"@solana/kit":"$@solana/kit"}}},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"workspaces":["sdk"],"_npmVersion":"11.9.0","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"24.14.0","dependencies":{"bn.js":"^5.2.3","commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^3.0.0","better-sqlite3":"^12.6.2","@drift-labs/sdk":"2.155.0","@solana/web3.js":"^1.98.4","@meteora-ag/dlmm":"^1.9.3","@coral-xyz/anchor":"^0.32.1","@orca-so/whirlpools":"^5.0.0","@solana-compass/sdk":"^0.3.1","@solana-program/stake":"0.3.0","@solana-program/token":"^0.6.0","@meteora-ag/cp-amm-sdk":"^1.3.6","@solana-program/system":"^0.8.0","@kamino-finance/klend-sdk":"^7.3.19","@orca-so/whirlpools-client":"^5.0.0","@mrgnlabs/marginfi-client-v2":"^6.4.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/bn.js":"^5.2.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.3.3_1772643932991_0.08849030379125811","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@solana-compass/cli","version":"0.3.4","license":"MIT","_id":"@solana-compass/cli@0.3.4","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"homepage":"https://github.com/solanaguide/solana-cli#readme","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"bin":{"sol":"bin/sol.mjs"},"dist":{"shasum":"aba9b3fd3f55ebe82904f9884ecccfc3f322b4c2","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.3.4.tgz","fileCount":262,"integrity":"sha512-XXXOk/QUGml8qTilzeoBoVmn+3ZMGUJQnatiAAAqdFE4Womu8jhVvcBLjT08js8QOtSWjJAg1raD8qlIGxQPjg==","signatures":[{"sig":"MEQCIAXLNrq5GcO4hCXalpARHjbcjl/QT3ataYgTwRXAoc6ZAiAwjhNZsisAI/MvwBuRf5A34EZpoUPmWJkY7ZJ2KfNSaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1179308},"type":"module","engines":{"node":">=20"},"gitHead":"554f9e28df72b2482b6fee041b78f08cabba2377","scripts":{"dev":"tsx --tsconfig tsconfig.dev.json ./src/index.ts","test":"node --import tsx --test tests/**/*.test.ts","build":"npm run build:sdk && tsc","setup":"npm install && npm link","build:sdk":"cd sdk && tsc","publish:all":"npm run publish:sdk && npm publish --access public","publish:sdk":"cd sdk && npm publish --access public","prepublishOnly":"npm run build"},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"overrides":{"@drift-labs/sdk":{"anchor-bankrun":{"solana-bankrun":"^0.3.0","@coral-xyz/anchor":"0.29.0"}},"@orca-so/whirlpools-client":{"@solana/kit":"$@solana/kit"},"@kamino-finance/kliquidity-sdk":{"@orca-so/whirlpools-client":{"@solana/kit":"$@solana/kit"}}},"repository":{"url":"git+https://github.com/solanaguide/solana-cli.git","type":"git"},"workspaces":["sdk"],"_npmVersion":"11.9.0","description":"Solana CLI for Humans and LLM Agents","directories":{},"_nodeVersion":"24.14.0","dependencies":{"bn.js":"^5.2.3","commander":"^14.0.0","smol-toml":"^1.3.1","@solana/kit":"^3.0.0","better-sqlite3":"^12.6.2","@drift-labs/sdk":"2.155.0","@solana/web3.js":"^1.98.4","@meteora-ag/dlmm":"^1.9.3","@coral-xyz/anchor":"^0.32.1","@orca-so/whirlpools":"^5.0.0","@solana-compass/sdk":"^0.3.1","@solana-program/stake":"0.3.0","@solana-program/token":"^0.6.0","@meteora-ag/cp-amm-sdk":"^1.3.6","@solana-program/system":"^0.8.0","@kamino-finance/klend-sdk":"^7.3.19","@orca-so/whirlpools-client":"^5.0.0","@mrgnlabs/marginfi-client-v2":"^6.4.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","typescript":"^5.7.0","@types/node":"^22.0.0","@types/bn.js":"^5.2.0","@types/better-sqlite3":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.3.4_1772648036770_0.013651160894151415","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@solana-compass/cli","version":"0.3.5","description":"Solana CLI for Humans and LLM Agents","type":"module","workspaces":["sdk"],"bin":{"sol":"bin/sol.mjs"},"scripts":{"dev":"tsx --tsconfig tsconfig.dev.json ./src/index.ts","build:sdk":"cd sdk && tsc","build":"npm run build:sdk && tsc","prepublishOnly":"npm run build","setup":"npm install && npm link","publish:sdk":"cd sdk && npm publish --access public","publish:all":"npm run publish:sdk && npm publish --access public","test":"node --import tsx --test tests/**/*.test.ts"},"dependencies":{"@coral-xyz/anchor":"^0.32.1","@drift-labs/sdk":"2.155.0","@kamino-finance/klend-sdk":"^7.3.19","@meteora-ag/cp-amm-sdk":"^1.3.6","@meteora-ag/dlmm":"^1.9.3","@mrgnlabs/marginfi-client-v2":"^6.4.1","@orca-so/whirlpools":"^5.0.0","@orca-so/whirlpools-client":"^5.0.0","@solana-compass/sdk":"^0.3.1","@solana-program/stake":"0.3.0","@solana-program/system":"^0.8.0","@solana-program/token":"^0.6.0","@solana/kit":"^3.0.0","@solana/web3.js":"^1.98.4","better-sqlite3":"^12.6.2","bn.js":"^5.2.3","commander":"^14.0.0","smol-toml":"^1.3.1"},"devDependencies":{"@types/better-sqlite3":"^7.6.0","@types/bn.js":"^5.2.0","@types/node":"^22.0.0","tsx":"^4.19.0","typescript":"^5.7.0"},"engines":{"node":">=20"},"overrides":{"@orca-so/whirlpools-client":{"@solana/kit":"$@solana/kit"},"@drift-labs/sdk":{"anchor-bankrun":{"@coral-xyz/anchor":"0.29.0","solana-bankrun":"^0.3.0"}},"@kamino-finance/kliquidity-sdk":{"@orca-so/whirlpools-client":{"@solana/kit":"$@solana/kit"}}},"repository":{"type":"git","url":"git+https://github.com/solanaguide/solana-cli.git"},"license":"MIT","gitHead":"fd5a8d22e69a0115f7f8613268059d008caf670b","_id":"@solana-compass/cli@0.3.5","bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"homepage":"https://github.com/solanaguide/solana-cli#readme","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-AaWV7AEu73ZQQ8eRq2z+4VTWfxh6oKf0szTVdkjSU5UMcy4UB1pdo7YUd2Z4TNq024x81ssJS85bLnHPG5XUBg==","shasum":"eac56e361d0cc01fc400ad7c8ae1661636ebb94b","tarball":"https://registry.npmjs.org/@solana-compass/cli/-/cli-0.3.5.tgz","fileCount":262,"unpackedSize":1179582,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCVGs9BSN+UEncbpZK0Z2nTd7tKQOG9wIqJwgggs2IHLgIhAKNBlb7NNU4tUvXB2bFa/zl3TRxef9+kMcSU+rg3QYGf"}]},"_npmUser":{"name":"solanacompass","email":"jonny@solanacompass.com"},"directories":{},"maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.3.5_1773058646243_0.5824274608598177"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-23T17:51:02.167Z","modified":"2026-03-09T12:17:26.581Z","0.1.0":"2026-02-23T17:51:02.432Z","0.2.0":"2026-02-23T18:04:22.796Z","0.2.1":"2026-02-23T20:19:17.640Z","0.2.2":"2026-02-23T20:51:43.165Z","0.2.3":"2026-02-24T08:50:20.210Z","0.2.4":"2026-02-24T11:36:08.755Z","0.3.0":"2026-03-02T20:14:30.687Z","0.3.1":"2026-03-02T21:47:02.915Z","0.3.2":"2026-03-03T12:12:10.028Z","0.3.3":"2026-03-04T17:05:33.195Z","0.3.4":"2026-03-04T18:13:57.025Z","0.3.5":"2026-03-09T12:17:26.452Z"},"bugs":{"url":"https://github.com/solanaguide/solana-cli/issues"},"license":"MIT","homepage":"https://github.com/solanaguide/solana-cli#readme","repository":{"type":"git","url":"git+https://github.com/solanaguide/solana-cli.git"},"description":"Solana CLI for Humans and LLM Agents","maintainers":[{"name":"solanacompass","email":"jonny@solanacompass.com"}],"readme":"# sol — Solana for Humans and LLM Agents\n\nA command-line tool that lets you work with Solana the way you'd describe it out loud. Pay people, buy and sell tokens, stake, lend, and track your portfolio — instead of constructing transactions and managing program instructions, you say what you want. Keys live locally on disk. No API keys, no private key env vars.\n\n```bash\n# Set up\nsol wallet create --name \"ClawdBot\"\n\n# Transfer some SOL to the agent wallet, then:\n\n# Check balance\nsol wallet balance\n\n# Swap 50 USDC for BONK\nsol token swap 50 usdc bonk\n\n# Stake idle SOL\nsol stake new 10\n\n# Deposit USDC to earn yield (auto-picks best rate across protocols)\nsol lend deposit 100 usdc\n\n# See everything you hold\nsol portfolio\n\n# Snapshot for tracking over time\nsol portfolio snapshot --label \"post-rebalance\"\n```\n\n**Documentation:** [solanacompass.com/skills](https://solanacompass.com/skills) — complete guides on trading, staking, lending, prediction markets, agent security, and more.\n\n---\n\n## Install\n\n```bash\nnpm install -g @solana-compass/cli\n```\n\nOr run without installing:\n\n```bash\nnpx @solana-compass/cli@latest wallet list\n```\n\nRequires Node.js >= 20.\n\n### Install as an Agent Skill\n\nSol CLI is available as a discoverable skill for Claude Code and other LLM agents:\n\n```bash\n# Claude Code — add the marketplace, then install the plugin\n/plugin marketplace add solanaguide/solana-cli\n/plugin install solana-payments-wallets-trading@solanaguide-solana-cli\n\n# skills.sh\nnpx skills add solanaguide/solana-cli\n```\n\nOnce installed, the agent can use Sol commands directly when you ask it to send crypto, trade tokens, check balances, stake, lend, or track portfolio performance.\n\n### First-time setup\n\n```bash\nsol config set rpc.url https://api.mainnet-beta.solana.com\nsol wallet create\n```\n\nUse a dedicated RPC endpoint for production — the public one rate-limits aggressively. Helius, Triton, or QuickNode all offer free tiers.\n\n---\n\n## Commands\n\n### wallet — Create, import, and manage Solana keypairs\n\n```bash\nsol wallet create                             # New wallet, auto-named\nsol wallet create --name trading --count 3    # Batch-create 3 wallets\nsol wallet list                               # List all wallets with SOL balances\nsol wallet balance                            # Full token balances + USD values\nsol wallet balance trading                    # Balance for a specific wallet\n\nsol wallet import --solana-cli                # Import from ~/.config/solana/id.json\nsol wallet import ./keypair.json --name cold  # Import from file\nsol wallet export main                        # Show key file path\nsol wallet remove old-wallet                  # Remove from registry\n\nsol wallet set-default trading                 # Change the active wallet\nsol wallet label main --add trading           # Tag wallets for organization\nsol wallet history                            # Recent transaction activity\nsol wallet history --type swap --limit 5      # Filtered\n```\n\nWallets are stored locally as key files. The first wallet created becomes the default for all commands. Change it with `sol wallet set-default <name>`, or override per-command with `--wallet <name-or-address>`.\n\n### token — Prices, swaps, transfers, and account management\n\n```bash\nsol token browse trending                    # Discover trending tokens\nsol token browse top-traded --interval 24h   # Most traded over 24h\nsol token browse lst                         # Liquid staking tokens\n\nsol token price sol                           # Current SOL price\nsol token price sol usdc bonk                 # Multiple prices at once\nsol token info bonk                           # Token metadata (mint, decimals)\nsol token list                                # All tokens in your wallet\nsol token sync                                # Refresh token metadata cache\n\nsol token swap 50 usdc bonk                   # Swap via Jupiter\nsol token swap 1.5 sol usdc --slippage 100    # 1% slippage tolerance\nsol token swap 50 usdc bonk --quote-only      # Preview without executing\n\nsol token swap 5 usdc sol --wallet backup      # Swap from a specific wallet\nsol token send 2 sol GkX...abc                # Send SOL to an address\nsol token burn bonk --all                     # Burn all of a token\nsol token close --all --yes                   # Close empty accounts, reclaim rent\n```\n\nSwaps use Jupiter's aggregator — best price across all Solana DEXes, no API key needed. Every swap is logged with cost-basis prices for portfolio tracking.\n\n### Token resolution\n\nAnywhere a command takes a token, you can use a **symbol** (`sol`, `usdc`, `bonk`) or a **mint address** (`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`). Resolution works in three steps:\n\n1. **Hardcoded well-known list** — 15 major tokens (SOL, USDC, USDT, JUP, BONK, mSOL, jitoSOL, bSOL, ETH, wBTC, PYTH, JTO, WEN, RNDR, JLP) resolve instantly offline. These are immune to spoofing.\n\n2. **Local cache** — Previously resolved tokens are cached in SQLite with a 24-hour TTL. Populated by prior lookups and `sol token sync`.\n\n3. **Jupiter Token API** — If not cached, the CLI searches Jupiter's token database. Results are ranked by liquidity and trading volume, so `usdc` returns the real USDC — not a scam token with the same symbol. The result is cached for next time.\n\n**For unfamiliar tokens, verify before transacting:**\n\n```bash\nsol token info peng                           # Check the resolved mint address\nsol token swap 50 usdc EPjFW...1v --quote-only  # Use the mint address directly\n```\n\nUsing a mint address bypasses symbol search entirely — useful when you know exactly which token you want, or when dealing with tokens that share a ticker. Agents should prefer mint addresses for safety when operating autonomously.\n\n### stake — Native SOL staking with MEV compounding\n\n```bash\nsol stake new 10                              # Stake 10 SOL (default: Solana Compass)\nsol stake new 5 --validator DPm...xyz         # Stake with a specific validator\nsol stake list                                # All stake accounts + claimable MEV\nsol stake claim-mev                           # Compound MEV tips (re-stake)\nsol stake claim-mev --withdraw                # Withdraw MEV to wallet instead\nsol stake withdraw 7gK...abc                  # Smart withdraw (handles deactivation)\n```\n\nCreates a stake account, funds it, and delegates — all in a single transaction. The CLI handles the multi-step Solana staking process so you don't have to.\n\n### lend — Multi-protocol lending and borrowing\n\nAggregates rates across Kamino, MarginFi, Drift, Jupiter Lend, and Loopscale. Auto-picks the best rate, or use `--protocol` to target a specific one.\n\n```bash\nsol lend rates usdc                           # Compare rates across all protocols\nsol lend rates sol --protocol kamino          # Rates for a specific protocol\n\nsol lend deposit 100 usdc                     # Auto-picks best deposit rate\nsol lend deposit 5 sol --protocol marginfi    # Deposit into a specific protocol\nsol lend withdraw 50 usdc                     # Partial withdrawal\nsol lend withdraw max sol                     # Withdraw entire deposit\n\nsol lend borrow 500 usdc --collateral sol     # Borrow against collateral\nsol lend repay 250 usdc                       # Partial repay\nsol lend repay max usdc                       # Repay full outstanding debt\n\nsol lend positions                            # All deposits and borrows across protocols\n```\n\nPositions include real-time APY, USD values, and health factor monitoring. The CLI warns when health factor drops below 1.1. Without `--protocol`, deposits auto-select the highest-yielding protocol, and withdrawals/repays auto-detect which protocol holds the position.\n\n### lp — Multi-protocol liquidity provision\n\nProvide liquidity across Orca, Raydium, Meteora, and Kamino from a single interface. Browse pools, deposit with flexible price ranges, track positions with P&L and impermanent loss metrics, claim fees, and farm for extra rewards.\n\n```bash\nsol lp pools sol usdc                          # Browse SOL/USDC pools across protocols\nsol lp pools --sort apy --type clmm            # Highest APY concentrated pools\nsol lp info HJPj...abc                         # Detailed pool info\n\nsol lp deposit HJPj...abc 100 usdc             # Single-token deposit\nsol lp deposit HJPj...abc 5 sol 750 usdc       # Dual-token deposit\nsol lp deposit HJPj...abc 100 usdc --range 10  # CLMM: +/-10% price range\n\nsol lp positions                               # All positions with fees and range status\nsol lp claim 9xK...abc                         # Claim uncollected fees\nsol lp withdraw 9xK...abc                      # Full withdrawal + close position\nsol lp withdraw 9xK...abc --percent 50         # Partial withdrawal\n\nsol lp farm list                               # Staked positions and pending rewards\nsol lp farm stake 9xK...abc                    # Stake in farm for extra rewards\nsol lp farm harvest 9xK...abc                  # Claim farm rewards\n```\n\n### portfolio — Unified view across all positions\n\n```bash\nsol portfolio                                 # Everything: tokens, stakes, lending\nsol portfolio --wallet trading                # Single wallet view\n\nsol portfolio snapshot                        # Save current state\nsol portfolio snapshot --label \"pre-trade\"    # With a label\nsol portfolio history                         # List all snapshots\n\nsol portfolio compare                         # Diff vs latest snapshot\nsol portfolio compare 3                       # Diff vs snapshot #3\nsol portfolio pnl                             # P&L since first snapshot\nsol portfolio pnl --since 5                   # P&L since snapshot #5\n```\n\nThe portfolio aggregates tokens, staked SOL, lending positions, LP positions, open orders, and prediction market positions across all wallets. Snapshots enable tracking changes over time — useful for agents that need to measure the impact of their actions.\n\n### predict — Prediction markets via Jupiter\n\n```bash\nsol predict list                             # Browse all events by volume\nsol predict list crypto                      # Filter by category\nsol predict list sports --filter trending    # Trending sports events\nsol predict search \"solana\"                  # Search by keyword\n\nsol predict event POLY-89525                 # Event detail with all markets\nsol predict market POLY-701571               # Market prices + orderbook\n\nsol predict buy 5 yes POLY-701571            # Buy YES contracts with $5 USDC\nsol predict buy 10 no POLY-559652 --max-price 0.40  # Buy NO with price limit\nsol predict positions                        # All open positions with P&L\nsol predict sell <positionPubkey>             # Sell/close a position\nsol predict claim <positionPubkey>           # Claim winnings on resolved market\nsol predict history                          # Transaction history\n```\n\nMarkets are sourced from Polymarket and Kalshi via Jupiter's prediction market API. Categories include crypto, sports, politics, culture, economics, tech, finance, and more. Positions appear in `sol portfolio` with unrealized P&L, and claimable winnings are highlighted.\n\n### fetch — Pay-per-request APIs with x402\n\n```bash\nsol fetch https://api.example.com/data          # Auto-pays if server returns 402\nsol fetch https://api.example.com/data --dry-run # Show price without paying\nsol fetch https://api.example.com/data --max 0.05  # Spending cap in USDC\n\nsol fetch https://api.example.com/rpc \\\n  -X POST -d '{\"query\":\"...\"}' \\\n  -H \"Accept: application/json\"                 # POST with headers, like curl\n```\n\nWorks like `curl` but handles [x402](https://x402.org) payment flows automatically. If the server returns `402 Payment Required`, the CLI signs a USDC transfer, attaches it to the retry, and prints the response body to stdout. Payment info goes to stderr so piped output stays clean.\n\nSupports both x402 v1 (`X-PAYMENT`) and v2 (`PAYMENT-SIGNATURE`) protocols. The server provides the fee payer and submits the transaction — your wallet only partially signs.\n\n### config — Persistent settings and security\n\n```bash\nsol config set rpc.url https://my-rpc.com     # Set RPC endpoint\nsol config set api.jupiterApiKey YOUR_KEY     # Optional Jupiter API key\nsol config get rpc.url                         # Read a value\nsol config list                                # Show all settings\nsol config path                                # Config file location\nsol config status                              # Security posture overview\nsol config lock                                # Lock security settings\n```\n\nBy default, Sol uses Jupiter's lite API for zero-config operation. In the future it may be necessary to request a free API key from [portal.jup.ag](https://portal.jup.ag).\n\n### Other commands\n\n```bash\nsol network                                   # Epoch, TPS, inflation, staking APY\nsol tx 4xK9...abc                             # Look up a transaction by signature\n```\n\n---\n\n## Structured Output\n\nEvery command supports `--json` for structured output. For most use cases — including LLM agents — the default human-readable output is easier to work with. Use `--json` when you need to chain commands in automation pipelines or parse results programmatically.\n\n```json\n{\n  \"ok\": true,\n  \"data\": { ... },\n  \"meta\": { \"elapsed_ms\": 450 }\n}\n```\n\nIn JSON mode, confirmations are skipped automatically. Error codes are predictable `UPPER_SNAKE_CASE` identifiers (`SWAP_FAILED`, `LEND_DEPOSIT_FAILED`, etc.).\n\n---\n\n## Global Flags\n\n| Flag | Description |\n|------|-------------|\n| `--json` | Structured JSON output |\n| `--rpc <url>` | Override RPC endpoint |\n| `--verbose` | Show debug logging |\n\nMost commands also accept `--wallet <name-or-address>` to override the default wallet.\n\n## RPC Resolution\n\nThe CLI resolves an RPC endpoint in this order:\n\n1. `--rpc` flag\n2. `SOL_RPC_URL` environment variable\n3. `~/.sol/config.toml` → `rpc.url`\n4. Solana CLI config (`solana config get`)\n5. Public mainnet RPC (with warning)\n\n## Data Storage\n\nAll data lives in `~/.sol/`:\n\n| Path | Contents |\n|------|----------|\n| `config.toml` | Configuration (TOML) |\n| `data.db` | SQLite — wallets, token cache, transaction log, snapshots |\n| `wallets/*.json` | Keypair files (Solana CLI format, chmod 600) |\n\nThe transaction log is the source of truth for cost basis and P&L — every swap, transfer, deposit, and withdrawal is recorded with USD prices at the time of execution.\n\n---\n\n## Architecture\n\n- **Runtime**: Node.js (compiled from TypeScript)\n- **CLI framework**: commander.js\n- **Solana SDK**: `@solana/kit` v2\n- **Swaps**: Jupiter REST API (no SDK, no API key)\n- **Lending**: Kamino (`@kamino-finance/klend-sdk`), MarginFi (`@mrgnlabs/marginfi-client-v2`), Drift (`@drift-labs/sdk`), Jupiter Lend (REST), Loopscale (REST)\n- **Prices**: Jupiter Price API with CoinGecko fallback\n- **Database**: SQLite via `better-sqlite3` (WAL mode)\n- **Config**: TOML via `smol-toml`\n\n```\nsrc/\n  index.ts              # CLI entry point, global flags\n  commands/             # One file per command group\n  core/                 # Business logic (wallet-manager, swap-service, etc.)\n  db/                   # SQLite with migration runner\n  output/               # JSON envelope + table/portfolio renderers\n  utils/                # Solana helpers, token list, retry logic\n```\n\n## Security\n\n- Key files are plain JSON (Solana CLI compatible), stored with `chmod 600`\n- Private keys are never logged or printed to stdout\n- `wallet export` returns the file path, not the key contents\n- All transactions are logged to SQLite for audit\n- Swap commands show quote details before executing\n\nThe CLI provides three layers of protection for agent-driven workflows:\n\n1. **Permissions** — control which operations are allowed (swap, transfer, stake, etc.)\n2. **Transaction limits** — cap per-transaction and daily USD spend\n3. **Allowlists** — restrict which addresses and tokens can be used\n\n### Quick setup for agents\n\n```bash\n# Set permissions, limits, and allowlists\nsol config set permissions.canSwap true\nsol config set permissions.canTransfer false\nsol config set limits.maxTransactionUsd 500\nsol config set limits.maxDailyUsd 2000\nsol config set allowlist.tokens So11111111111111111111111111111111111111112,EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v,DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263\n\n# Review the full security posture\nsol config status\n\n# Lock — prevents agents from changing settings via CLI\nsol config lock\n```\n\nAfter locking, security settings can only be changed by a human editing `~/.sol/config.toml` directly. Use `sol config status` at any time to see permissions, limits, daily usage, allowlists, and warnings.\n\n### Transaction limits\n\n| Setting | Description |\n|---|---|\n| `limits.maxTransactionUsd` | Maximum USD value per transaction |\n| `limits.maxDailyUsd` | Maximum total USD in a rolling 24h window |\n\nLimits apply to swaps, sends, staking, deposits, borrows, DCA, and limit orders. They do not apply to withdrawals, MEV claims, or reads. Missing = no limit (backwards compatible).\n\n### Allowlists\n\n- **`allowlist.addresses`** — When set, `token send` is restricted to listed addresses plus your own wallets.\n- **`allowlist.tokens`** — When set, both input and output tokens must be in the list for swaps, DCA, and limit orders. Accepts symbols (`SOL`) or mint addresses.\n\n### Permissions\n\nRestrict which operations are available — useful for giving agents limited access (e.g. monitor-only, swap-but-no-transfer). Disabled commands are not registered at all, so they won't appear in `--help`.\n\nAll permissions default to `true` (omitted = permitted):\n\n| Permission | Gated subcommands |\n|---|---|\n| `canTransfer` | `token send` |\n| `canSwap` | `token swap`, `token close --all`, `token dca new/cancel`, `token limit new/cancel` |\n| `canStake` | `stake new` |\n| `canWithdrawStake` | `stake withdraw`, `stake claim-mev` |\n| `canLend` | `lend deposit`, `lp deposit`, `lp farm stake`, `lp create` |\n| `canWithdrawLend` | `lend withdraw`, `lp withdraw`, `lp claim`, `lp farm unstake/harvest` |\n| `canBorrow` | `lend borrow`, `lend repay` |\n| `canPredict` | `predict buy`, `predict sell`, `predict claim` |\n| `canFetch` | `fetch` (x402 payments) |\n| `canBurn` | `token burn`, `token close --burn` |\n| `canCreateWallet` | `wallet create`, `wallet import` |\n| `canRemoveWallet` | `wallet remove` |\n| `canExportWallet` | `wallet export` |\n\n### Threat model\n\nAn LLM agent using this tool cannot read the raw key material without explicitly opening the wallet files, which requires user approval in standard permission modes. Permissions, limits, and allowlists must all pass before the CLI will execute a transaction.\n\n**What this does not protect against:** These controls operate at the CLI and agent-permission level. They do not prevent other software on the same machine from reading the key files. Any tool, MCP server, plugin, or script running under the same OS user account can read `~/.sol/wallets/` directly. Do not grant agents read or write access to `~/.sol/`.\n\nKeep wallet balances appropriate to the risk: use dedicated wallets with limited funds for agent-driven workflows, and do not store large holdings in key files accessible to automated tooling.\n\n## Disclaimer\n\nThis software interacts with the Solana blockchain and can execute irreversible transactions involving real funds. You are solely responsible for your own transactions, wallet security, and any financial outcomes. The authors are not liable for any losses. Use at your own risk.\n\n## Tips\n\nToken swaps include a small tip (2–100 bps, typically under 10 bps) paid to the compassSOL reserve, which boosts staking yield for Solana Compass delegators. The rate scales with swap cost — liquid pairs like SOL/USDC pay the minimum.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}