{"_id":"@0xsingularity/cli","_rev":"11-9a00d7e91eead6e69813b3b9b36a8acc","name":"@0xsingularity/cli","dist-tags":{"latest":"0.4.1"},"versions":{"0.1.0":{"name":"@0xsingularity/cli","version":"0.1.0","keywords":["singularity","solana","svm","cli","sbpf"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.1.0","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"os":["linux","darwin"],"bin":{"sing":"bin/sing","singularity":"bin/singularity"},"dist":{"shasum":"7d2fbab6e3ae2114dac70613fd7cb631eea0a6c9","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.1.0.tgz","fileCount":4,"integrity":"sha512-t968wrHDxxI0BEf6vgONMfO6SiKRKYylwNZELj711d0voCzMWh3P/xX49z9lWCrIn/hWfufy5g//5Hd2agbZ3Q==","signatures":[{"sig":"MEUCIQC3APc0LXRdtlfnniE1CFluLLaVSIjZFOkDHPEIminr3wIgDQfD2DWnjOdCE8n+kThf58C4bVZmjfjZdZKTfZ1EXqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34852},"engines":{"node":">=18"},"scripts":{"lint":"shellcheck -S warning bin/singularity bin/sing tests/run-tests.sh","test":"./tests/run-tests.sh"},"_npmUser":{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"},"_npmVersion":"9.2.0","description":"Thin POSIX-shell wrapper around the stock solana CLI, preconfigured for the Singularity chain.","directories":{},"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0_1785608905069_0.4333541819825939","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@0xsingularity/cli","version":"0.2.0","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.2.0","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"f80198b3edaeec0e636e049ecfe66d98f8d5c991","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.2.0.tgz","fileCount":38,"integrity":"sha512-xHTve3IBoffF1TPcF4Moi04kZfq7GbWsC8U7o3plzZtPN4v4Szx9aBMqyCwGUSGsGHBdcLmfKi9576f4E/UZkg==","signatures":[{"sig":"MEQCIC8EEvv61jTDWMyM/6I7dVkmIMrtU/BarykW6tWlZ2jOAiBQLO1/9lZdkyDdYfzbwsR3GzyyqGmatFqQ1vEQ3Aq86g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":149104},"type":"module","engines":{"node":">=18"},"gitHead":"1886e7fd251bfb9a2a729e7f6ad49f27a7ff865b","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.0_1785615178440_0.49526607900162767","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@0xsingularity/cli","version":"0.2.1","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.2.1","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"1dc2045e8e53c0ff6d991ba3a9c0f4d5ece1d912","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.2.1.tgz","fileCount":38,"integrity":"sha512-cguaSe4PmwZ3WgyIcP8aa+qwD/+1BuDEqHQR7qCMM1ggEAi1GOS30ECWYKswAtHy2rPg81S0Wvqmp+kG3OtZBA==","signatures":[{"sig":"MEUCIGDJxh6MDC6QXVCdGzBwK+L9MC8nGiRBtJ/DtvSyTsJXAiEAg2ikufhKc+hsI2Dq4fpu1FqxJcj+xx/iUgE0y/ImhLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156924},"type":"module","engines":{"node":">=18"},"gitHead":"71cf28b057c29a5a0d6d5f1171454193f9a7737e","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.1_1785620096279_0.03979276788426933","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@0xsingularity/cli","version":"0.2.2","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.2.2","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"00b2f3594f4beac951316ae2ee3f188d315c0f6e","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.2.2.tgz","fileCount":38,"integrity":"sha512-OTQV0H/tC6comqx39U21mkFGJZBkl878RwsjKDD0SyK1hPDerxq7NXfKK11PV+jI+7+2Fn6PEGTv7WYtG3CNeA==","signatures":[{"sig":"MEQCIEIPJpl+UZTPlpLPJCjT5vajBqg6bKLWL8MW4NYH/FuSAiAvOeNIsKzMJXZ0amUqKaQZFbmhciGr3REkCk1AzSUyvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158242},"type":"module","engines":{"node":">=18"},"gitHead":"1ea7408473953db17cb31b60292310578ac734d1","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.2_1785625745286_0.6753628584173286","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@0xsingularity/cli","version":"0.2.3","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.2.3","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"af016ec707a88eec4cd6e98fcb23d5b6aef9f965","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.2.3.tgz","fileCount":38,"integrity":"sha512-Vp5BDhIWyLcG2kJzPKKxEHUinR27L+5DqTyN9mgOOBSMdrahmikVpHSUE/CYneSGRd3doYBNbbf3CUzqDGLn2A==","signatures":[{"sig":"MEUCIChH71YulrUSUlFz66s4F98cYUnjYsIQ4/X7ZqE925usAiEA0gxUqWLWtFCgDEYeYCP+QLwLDW/bjICtF/m2wJxsKNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162034},"type":"module","engines":{"node":">=18"},"gitHead":"ab86f8e005c480865f6c63724a39d679197a543d","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.3_1785626546190_0.22127119473713552","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@0xsingularity/cli","version":"0.2.4","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.2.4","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"b5888ed197517e114ebdeef0e57736b9267b6456","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.2.4.tgz","fileCount":38,"integrity":"sha512-UbvSMIP9Occi/DWRiHexuzVu9qziUkeilMRvkRsMW22v2tSFEacg62eDMLsBMzMkJhoZoCwQsdb9iz3AUVwYnQ==","signatures":[{"sig":"MEQCIH6EUjwQYf61nzoGuZ2R/Y5qA6pmVXS7/Gkxk7W+0jCZAiBg0/CvWP8M2yWtuBH6B7DXqjQ7+a9Zx3dd4h/ltNoULw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162836},"type":"module","engines":{"node":">=18"},"gitHead":"2abfafec9355184b88e4e4bd0003469dad7b6145","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.4_1785628419765_0.8027798307330762","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@0xsingularity/cli","version":"0.2.5","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.2.5","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"4b1c2bb61b1da8a4d9dcb87117093eb29dba8760","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.2.5.tgz","fileCount":41,"integrity":"sha512-xxDHkGxCPwiRBhMz+HbyquoftfQPUpuaXQzoEIneJ7Q1d+voDeF1ZSNysClJb7dDsRdiYl0f0YXoUZ8SqbRBog==","signatures":[{"sig":"MEQCIGoxnHCW4U3gW2Y6onX1TNqibOYEqj/2iOJx2srVswPRAiBgxMmLsQnFcOjjxcjIP0D9rzxWoGybeteJ7AjS1Eg30g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181253},"type":"module","engines":{"node":">=18"},"gitHead":"34bcc1454e13da62c03ccc4be8af680e90ad704e","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.5_1785629511538_0.7631490344520293","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@0xsingularity/cli","version":"0.2.6","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.2.6","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"5820c968672a5bbc55b9041b1c024560bcb65730","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.2.6.tgz","fileCount":41,"integrity":"sha512-vQNwzlZhOQRnL8G4pzQ8f+6yU8X+Z/C0iChnbDJRhqW4dfnkoaxhVYHWSrVtKxGP1uth1EBrkDgvXMnRLFUhww==","signatures":[{"sig":"MEUCIFw2mkN/+MlL+EdXkJ2hOrO6eds6LyLO4JXGvxN/e6zHAiEA7lkbj5GpPB+ErJ228TPUveRlFnqEtHN5SaEcKm7S9/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":184469},"type":"module","engines":{"node":">=18"},"gitHead":"0df513fb3557009a25c8f597f951a446c25462b2","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.2.6_1786658510680_0.803960480208548","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@0xsingularity/cli","version":"0.3.0","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.3.0","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"6fdf6c9ada023a906bd82187ba917a03fe52a918","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.3.0.tgz","fileCount":50,"integrity":"sha512-jszyO2E4eJhQ51M7ahFHf2rdaEF2yswdMEiCIuLCYw7KMu4iYTOKjFd/StA+Swi0sqBI5to3AEAIH5coWeO0tw==","signatures":[{"sig":"MEUCIQCANvzWnLoKuTe9b8EkwKeYsWAGZoSeEJ78MotPdFVdlQIgK9cL/RyjbqWpHiwNOr6tdFkwdlWmy9RO/itO5jRrkgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":311634},"type":"module","engines":{"node":">=18"},"gitHead":"b0a6a3212b8cb2a865dd607b872f05b63105f1d2","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.3.0_1786834789204_0.6896170168449856","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@0xsingularity/cli","version":"0.4.0","keywords":["singularity","sing","cli","tui","ink","blockchain"],"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","_id":"@0xsingularity/cli@0.4.0","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"a1083b8a806a71a3649d301d7d3fd4df940417cc","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.4.0.tgz","fileCount":51,"integrity":"sha512-jGNu0CmN4n/tZpFyrSe1uoVC/FthIzAzZWxhmm0EHkmI5FytxA+V75PatwSa6+psXRVGUAjPqAoOy5N1PMd9ZQ==","signatures":[{"sig":"MEYCIQCmseHzL7c/ej2wXd/XwZ9UmjXKVVhJwWNWv3avskDGDgIhAKurrEbpZ3keundq2RQz/TYT4XodFPaA6Z3YPVVNZ48I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC4Ta1E62IM+nk8CFtOcQliOXiBKxr0s4bQk9/rHXEkdwIgcQmmK3KTYwDg6985TcbhtjFNLKwDRkzUQJ9JYO/MrII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320659},"type":"module","engines":{"node":">=18"},"gitHead":"d1b35fb21ffde79b7c068c809e87f2a5e6009d88","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"},"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"9.2.0","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.4.0_1789164244413_0.35023690402390306","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"_id":"@0xsingularity/cli@0.4.1","bin":{"sing":"dist/cli.js","singularity":"dist/cli.js"},"dist":{"shasum":"2a0745fa5a3cd5da7cbf9020687400e2da3ea015","tarball":"https://registry.npmjs.org/@0xsingularity/cli/-/cli-0.4.1.tgz","fileCount":55,"integrity":"sha512-+mEYlOG0Lna2O6993dAEiS4cgUMBueJ8wAVof66qRRql3r1xaGr/kcPE7A/A/TdbqWuqrVdvPXTyrPoLo00GDQ==","signatures":[{"sig":"MEQCICZqOo9PfTgQcw65m/acxRrf3TefI+rNbVsVRUTXUGJ0AiAGNL2pbgrx5GbtJ2k8FY2cFn1PPHiTYiZCHLjYgRQLNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFRpa2tyQbgS/0kKE1UW33N8jseoC+rP/xXGREX5v67sAiAexCuW1hWVQ5VIekxEAaLh3iT/MLGrOP8LWqvXr5XGyw=="}],"unpackedSize":410543},"name":"@0xsingularity/cli","type":"module","author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"engines":{"node":">=18"},"gitHead":"f8f3f5ecea66eadd0553bf3d7845924ada288cd8","license":"MIT","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json && node scripts/postbuild.mjs","clean":"rm -rf dist","start":"npm run build && node dist/cli.js","typecheck":"tsc -p tsconfig.json --noEmit","prepublishOnly":"npm run build"},"version":"0.4.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4cd797a7-551e-4408-98e5-0ab34bb9721f"}},"keywords":["singularity","sing","cli","tui","ink","blockchain"],"overrides":{"jayson":{"uuid":"^11.1.0"}},"_npmVersion":"12.0.2","description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","directories":{},"maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"ink":"^6.0.1","react":"^19.1.0","@solana/web3.js":"^1.98.0","@0xsingularity/web3.js":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.6","typescript":"^5.6.0","@types/node":"^20.0.0","@types/react":"^19.1.0","ink-testing-library":"^4.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.4.1_1789419782064_0.696178983060936"}}},"time":{"created":"2026-08-01T18:28:24.901Z","modified":"2026-09-14T21:03:02.304Z","0.1.0":"2026-08-01T18:28:25.222Z","0.2.0":"2026-08-01T20:12:58.583Z","0.2.1":"2026-08-01T21:34:56.399Z","0.2.2":"2026-08-01T23:09:05.429Z","0.2.3":"2026-08-01T23:22:26.318Z","0.2.4":"2026-08-01T23:53:39.939Z","0.2.5":"2026-08-02T00:11:51.689Z","0.2.6":"2026-08-13T22:01:50.832Z","0.3.0":"2026-08-15T22:59:49.367Z","0.4.0":"2026-09-11T22:04:04.502Z","0.4.1":"2026-09-14T21:03:02.147Z"},"author":{"name":"bajpainaman","email":"naman@entropytoorder.xyz"},"license":"MIT","keywords":["singularity","sing","cli","tui","ink","blockchain"],"description":"The Singularity command line app. A guided terminal experience for wallets, funds, transfers and program deploys on the Singularity chain.","maintainers":[{"name":"singularitywastaken","email":"namanbajpai23@gmail.com"}],"readme":"# `@0xsingularity/cli`\n\nThe Singularity command line app — a guided terminal experience for the\n**Singularity** chain.\n\n> [!WARNING]\n> **Support ceiling (2026-08-29):** This README describes CLI and repository\n> behavior, not a live public service. The audit used base\n> `bc7b834de9bf22aa35d0294f3dd16212c72d7500`. Current remediation is an\n> unreleased candidate with no published or deployed SHA. The last public-edge audit\n> found the configured endpoint unavailable. Public reads and SVM\n> transfer/deploy are **PREVIEW**. EVM, WASM, and Move writes are **DISABLED**.\n> UTH identity and supply work remain incomplete. Agents, A2A, MCP, and\n> validator joining are **TARGET**. Historical finality, latency, faucet, and\n> rate-limit observations are not current release evidence. See the\n> [capability matrix](../../docs/capability-matrix.md).\n\n```\n                                      .····::::::::·····\n                           .          .···::::--:::::···.\n                    .··················:::--------:::····\n                 .·····::::--=++*+=--:-=*oo*++===---::···\n              ..····::::--=+#@@@o+-····:=o@@@@o*+=--::···\n             .·····:::--=+o@@@%*-·.     ·-*@@@@%*+=-::··.\n\n    ▄▀▀▀▀ ▀▀█▀▀ █▄  █ ▄▀▀▀▄ █   █ █     ▄▀▀▀▄ █▀▀▀▄ ▀▀█▀▀ ▀▀█▀▀ █   █\n    ▀▄▄▄    █   █ █ █ █  ▄▄ █   █ █     █▄▄▄█ █▄▄▄▀   █     █    ▀▄▀\n    ▄▄▄▄▀ ▄▄█▄▄ █  ▀█ ▀▄▄▄▀ ▀▄▄▄▀ █▄▄▄▄ █   █ █  ▀▄ ▄▄█▄▄   █     █\n\n         .············.. .·:----:::····::::-==:··\n         ..········..      ·:=o%%%%#####%%%#*-:··..\n         ...····..         .·:=o@@@@@@@@@@%*=-:·······...............\n          .......           ··:-=*o%@@@#o*+=--:::················....\n           ....             .··::-==++++===---:::::··············...\n                             .··:::----==-----::::::·············..\n\n  entropy to order   ·   v0.3.0\n```\n\nThat is **one frame** of many. It fills the whole terminal, and the eye moves.\n\n```bash\nnpm install -g @0xsingularity/cli\nsingularity\n```\n\nNode.js 18 or later is the only install prerequisite. The CLI retains a\nhistorical endpoint default, but the last audit found it unavailable. Use\n`--endpoint` with an operator-provided endpoint for controlled testing.\n\n## What you see on launch\n\nRun `singularity`. Three things happen, in order.\n\n**1. The eye turns.** The Singularity gravity well fills the whole terminal and\nspins, sixty frames a second. The core stays dark. The ring around it burns\nwhite. Spiral arms sweep out of the ring and fade into the dark.\n\n**2. The wordmark resolves.** After about a second and a half the letters of\nSINGULARITY appear out of the dark core. The field opens around them. The\ntagline and the version settle underneath.\n\n**3. Setup begins.** The intro hands over to the guided screens.\n\nPress any key to skip to the end of that.\n\n### Why it looks like this\n\nThe field is not decoration invented for a terminal. `well()` — the gravity\nwell, with its void core at radius 0.12, its glowing ring at 0.30, and arms\ndriven by time — is ported straight from the Singularity ASCII art engine. The\nterminal and the marketing surfaces draw the same shape from the same maths,\ndown to the density ramp.\n\nIt is monochrome, because the brand is. Bright white is the signal register.\nDepth comes from ASCII density, never from hue. Sparse glyphs sit back in gray,\ndense glyphs burn white.\n\n### When it does not animate\n\n`NO_COLOR`, `SINGULARITY_NO_ANIMATION`, and any output that is not a terminal\nall get one static frame of the eye with the wordmark already resolved, and no\ntimer at all. The intro can never spin against a log file, and it can never\nhold a pipe open.\n\n## What you get\n\nRun `singularity` with no arguments and it opens the guided app.\n\n**On a fresh machine** it creates a wallet, asks you to back it up, and tries\nthe SVM preview faucet when the configured endpoint is reachable. Then it opens\nthe main menu.\n\n**On a machine that already has a wallet** it opens straight to the main menu,\nwith your address and the configured endpoint's balance response at the top.\nThe read can fail when that endpoint is unavailable.\n\n```\n ◆ SINGULARITY  ·  Main menu  ·  25aHPB…b3PM\n\n ╭──────────────────────────────────────────────────────────────╮\n │                                                              │\n │  Your address                                                │\n │  25aHPBn9kToSxe7fKSj5rnwTdMjnFFGBjH13ThfQb3PM                │\n │                                                              │\n │  Balance   2 SING                                            │\n │                                                              │\n │  ──────────────────────────────────────────────────────────  │\n │                                                              │\n │  ▸ Balance                                                   │\n │    Fund                                                      │\n │    Send                                                      │\n │    Look up an account                                        │\n │    Chain stats                                               │\n │    Recent transaction                                        │\n │    Deploy a program                                          │\n │    Run a node                                                │\n │    Settings                                                  │\n │    Quit                                                      │\n │                                                              │\n │  What you hold right now.                                    │\n │                                                              │\n ╰──────────────────────────────────────────────────────────────╯\n ↑ ↓  move      enter  select      esc  quit\n```\n\nArrow keys move, enter selects, escape goes back.\n\nFund, Send, and Deploy are SVM technical-preview actions. Do not treat their\npresence in the menu as public availability.\n\n## Scripting\n\nGive it a subcommand and it runs that command, prints the result, and exits.\nNo screen, no prompt, no terminal required.\n\n```bash\nsingularity wallet new\nsingularity fund 2\nsingularity balance\nsingularity transfer <TO> 1.5\nsingularity account <ADDRESS>\nsingularity stats\nsingularity tx <SIGNATURE>\nsingularity check-program target/deploy/my_program.so\nsingularity deploy target/deploy/my_program.so --yes\nsingularity node init --mode replica --disk /mnt/nvme1 --runtime-manifest <URL>\nsingularity node start --service\nsingularity doctor\n```\n\nEvery command exits non-zero on failure and writes the reason to stderr.\n`deploy wasm`, `deploy move`, and `move execute` are intentionally **disabled**\nin this release. They exit before reading a module, loading a wallet, opening an\nRPC session, building a transaction, signing it, or submitting it.\n`validator join`, `validator leave`, `agent register`, and `mcp invoke` are\n**TARGET** writes and also fail before those operations.\n\n| Option | Effect |\n|---|---|\n| `--endpoint <URL>` | use another endpoint for this run |\n| `--url <URL>` | the same, spelled the way RPC tools spell it |\n| `--wallet <FILE>` | use another wallet file for this run |\n| `--force`, `-f` | overwrite something that already exists |\n| `--yes`, `-y` | answer every confirmation with yes |\n| `--runtime-manifest <URL>` | `node init`: the runtime release manifest (or set `SINGULARITY_RUNTIME_MANIFEST`) |\n\n### The whole RPC surface\n\nThe node serves 289 JSON-RPC methods across 13 namespaces, and every one of\nthem is reachable from the command line. `rpc` calls any method by its wire\nname; each namespace group calls that namespace's methods by a friendlier\nkebab-case name. The lists come from the SDK's RPC manifest, which mirrors the\nnode's dispatch tables.\n\n```bash\nsingularity rpc eto_getStats                        # any method, wire name\nsingularity rpc eth_getBalance 0xabc… latest\nsingularity evm get-balance 0xabc… latest           # same call, friendly name\nsingularity evm block-number\nsingularity move-rpc move-view '{\"function\":\"0x1::coin::balance\"}'\nsingularity wasm wasm-query <CONTRACT> '{\"balance\":{}}'\nsingularity onebook get-order <ORDER_ID>\nsingularity hilsa chain-catalog\nsingularity agent-rpc a2a-list-cards\nsingularity explorer get-stats\nsingularity admin validator-set\nsingularity evm list                                # every method in a namespace\n```\n\nThe namespaces are `svm`, `evm`, `explorer`, `wasm`, `move`, `admin`, `hilsa`,\n`cil` (deprecated `eto_cil*` aliases), `token`, `onebook`, `workflow`,\n`crossvm`, and `agent`. The `move` and `agent` groups run as `move-rpc` and\n`agent-rpc`, because `move` and `agent` are already commands. A parameter is read as JSON when it parses as JSON —\nnumbers, booleans, arrays, objects — and as a string when it does not, so\naddresses need no quoting. Results print as pretty JSON, one object per run,\nso the output pipes straight into `jq`.\n\nTo change the endpoint or the wallet file for every run, open **Settings** in\nthe app. It saves them to `~/.config/singularity/settings.json`.\n\n### Offline Bombil codecs\n\nEncode or inspect the versioned prototype formats without a wallet, settings\nfile or RPC connection:\n\n```bash\nsingularity bombil encode lifecycle-profile '{\"version\":1,\"watchSlots\":2,\"maximumFillCapacity\":64,\"controlCapacity\":1,\"maximumFillsPerCommand\":4}'\nsingularity bombil decode lifecycle-profile 0200000040010401\nsingularity bombil encode lifecycle-command '{\"kind\":\"reserve\",\"account\":1,\"nonce\":\"0\",\"fillCapacity\":2}'\nsingularity bombil help\n```\n\n`encode <SCHEMA> <JSON>` prints lowercase hex and `decode <SCHEMA> <HEX>` prints\nJSON. Supply JSON as one quoted argument. Hex must have an even number of digits,\nwith no `0x` prefix or whitespace. Uppercase input hex is accepted; output is\nlowercase. Unknown or duplicate JSON fields, extra arguments, invalid integer\nranges and noncanonical wire fields fail with a nonzero exit code.\n\n| Schema | JSON fields |\n|---|---|\n| `lifecycle-profile` | `version`, `watchSlots`, `maximumFillCapacity`, `controlCapacity`, `maximumFillsPerCommand` |\n| `lifecycle-command` | `kind`, `account`, `nonce`, plus the operation fields below |\n| `registered-svm` | base58 `program`, `version`, base58 `tradeGrant`, `inputHex` (0–4096 bytes) |\n| `request-record` | Decode only: canonical BRQ1 owner-request accounting record |\n| `conversion-request` | Decode only: canonical 96-byte BLM1 conversion request |\n| `representation-record` | Decode only: canonical 96-byte BRP1 accounting record |\n\nEvery u64 (`nonce`, `token`, `sequence`, registered program `version`) must be a\ndecimal **string**, such as `\"18446744073709551615\"`; signs, leading zeroes and\nexponents are rejected. Other integers, including lifecycle profile `version`,\nare JSON numbers. Lifecycle operation fields are:\n\n| `kind` | Additional fields |\n|---|---|\n| `reserve` | `fillCapacity` |\n| `ackFill` | `token`, `cursor`, `sequence`, `fillIndex` |\n| `ackControl` | `token`, `sequence` |\n| `replenish` | `token`, `fillCapacity` |\n| `retire` | `token` |\n\nThese commands call the SDK's canonical BLC1/profile/BSG1 codecs. They do not\nreserve capacity, authorize an acknowledgement, sign or submit a transaction,\ndeploy code or activate an instance. BSG1 requires an explicitly installed\nregistered SVM adapter; native configuration and authority checks still apply.\n\n### Owner-request records\n\n```bash\nsingularity bombil decode request-record \"$RECORD_HEX\"\nsingularity bombil request inspect \"$RECORD_ADDRESS\" --endpoint \"$RPC_URL\"\n```\n\nOffline decoding checks the exact BRQ1 version-1 layout: 252 header bytes plus\n0–1024 returned bytes. It rejects reserved bytes, inconsistent lengths, zero\nidentities, invalid height/deadline/retention order, and compute usage above its\nlimit. `request-record` cannot be encoded through the CLI.\n\n`request inspect` uses the existing endpoint settings and standard\n`getAccountInfo` read. It does not load a wallet or send a transaction. It checks\nthe OneBook account owner, non-executable metadata, and the canonical PDA derived\nfrom the record's chain domain, instance, owner and request ID. Missing accounts,\nforeign accounts and RPC errors produce a nonzero exit code.\n\nBoth forms print JSON: u64 fields are decimal strings, `owner` is base58, and\nbyte fields use lowercase `*Hex` values. A returned terminal includes `outputHex`;\na reverted terminal includes its numeric `code`, exact Rust accounting `name`\nand raw `financialReason` byte. Only code 9 (`FinancialRejected`) permits a nonzero\nreason. These local codes are separate from the guest error ABI.\n\n`computeUsed` records actual consumed compute, including failed execution; this\nrecord does not itself charge fees. `retainUntil` is a retention bound, not a\npromise of pruning. BRQ1 contains no replay flag. RPC inspection labels the result\n`rpc-account` and retains the server's `rpcSlot`; neither offline bytes nor this\nordinary account response independently proves QMDB durability. The command does\nnot activate a Bombil request submission route.\n\n## What a transaction costs\n\nRepository execution charges these technical-preview fees to the signing\nwallet:\n\n| Charge | Amount |\n|---|---|\n| Per signature | 5,000 lamports (0.000005 SING) |\n| Per compute unit consumed | 1 lamport |\n\nA repository test prices a plain transfer at 5,450 lamports (one signature,\n450 compute units). This is not a current public fee quote.\n\nThe app never guesses the fee. Before it sends anything it asks the chain:\n`getFeeForMessage` for the signature term and `simulateTransaction` for the\ncompute units (`getFeeForMessage` alone omits them). Then it checks your\nbalance against amount + fee and refuses with one sentence when you are short,\ninstead of letting the chain bounce the transaction. A simulation error stops\nthe send too, with the program logs, because the node runs the same preflight\non `sendTransaction`.\n\n## Your wallet\n\nOne file, at `~/.config/singularity/id.json`, written with owner-only\npermissions.\n\n**That file is the only copy of your key.** The app says so in a screen you\ncannot skip past without acknowledging it. Nobody can restore it for you.\n\n`@0xsingularity/web3.js` reads and writes the same file, so a wallet created\nhere works in a script and the other way round.\n\n## SVM deployment technical preview\n\n`singularity deploy <file.so>` runs three gates, in order:\n\n1. **The program check.** This is the most valuable thing in the package. See\n   below.\n2. **The build tools.** Missing tools are installed once, on your confirmation,\n   into `~/.config/singularity/toolchain`. Nothing outside that directory\n   changes and no shell profile is edited.\n3. **The deploy**, driven through those managed tools over plain RPC.\n\nUse this workflow only on a controlled endpoint whose tested SHA is known. The\nlast audited public endpoint was unavailable, and SVM deployment is not LIVE.\n\n### The program check\n\nThe loader accepts ELF `e_flags` of `0x0` (SBPF v1) or the legacy `0x20`\nmarker. It **rejects** the plain version encodings (`1`, `2`, `3`) that\ncurrent build tools emit by default.\n\nPrior end-to-end evidence found that a program built with default settings\ndeployed and then did not execute. The deploy reported no error. This is\nhistorical private evidence, not proof of a current public deploy.\n\n```bash\nsingularity check-program target/deploy/my_program.so\n```\n\nThe check runs automatically before every deploy and aborts before anything\nreaches the chain. This is chain issue **#763**.\n\nBuild so the program carries `e_flags` `0x0`:\n\n```bash\ncargo build-sbf --arch v0\n```\n\n`--arch v0` writes `0x0`. The other arch values (`v1`/`v2`/`v3`) write\n`0x1`/`0x2`/`0x3`, which the chain rejects. (Older toolchains spelled this\n`--arch sbfv1`; current `cargo build-sbf` rejects that and wants `--arch v0`.)\n\n## Disabled WASM and Move workflows\n\nThe public CLI does not currently support these workflows:\n\n```text\nsingularity deploy wasm <FILE>       DISABLED\nsingularity deploy move <FILE>       DISABLED\nsingularity move execute ...         DISABLED\n```\n\nEach command exits non-zero with an explicit disabled message. It does so\nbefore reading the supplied file, loading a wallet, opening an RPC session, or\nbuilding, signing, or submitting a transaction. Low-level envelope helpers in\nthe SDK are not a promise that a production CLI route is available.\n\n`singularity deploy <FILE.so>` is an SVM technical preview. EVM contract\ndeployment is disabled. Ethereum tooling is not a write alternative. Do not\nautomate any disabled command until the capability matrix records deployed\npositive and negative evidence.\n\n## Running a node\n\n**Run a node** in the main menu, or `singularity node …` from a script, sets a\nSingularity node up on this machine and runs it. There are three kinds:\n\n| Kind | What it is | What it needs |\n|---|---|---|\n| **Consensus node** (`--mode consensus`) | PREVIEW node software for the fixed private committee. Public validator joining is TARGET | Linux x86_64 and an NVIDIA GPU with CUDA 12+ |\n| **Non-consensus node** (`--mode replica`) | Follows the chain and serves RPC. Never executes, never votes. | Linux x86_64. No GPU, no stake. |\n| **CPU-only node** (`--mode cpu`) | A non-consensus node whose runtime is **compiled here**, CPU-only. The indexer profile. | Rust and git. Any Linux. |\n\n```bash\nsingularity node init --mode consensus --disk /mnt/nvme1 --p2p-addr 203.0.113.7:19100 \\\n    --runtime-manifest https://<release-host>/manifest.json\nsingularity node start --service          # run it as a system service\nsingularity node status                   # height, service, identity, registry status\nsingularity validator status              # experimental registry read\n```\n\nRun `singularity node init` with no `--mode` (or pick **Run a node** in the\napp) and it asks: what kind, which disk for the data, which disk for the logs,\nand — for a consensus node — the public address peers dial.\n\n### Where the data goes\n\nA node writes constantly. `singularity node disks` shows every mounted\nfilesystem with its free space, filesystem type and whether it is an SSD.\n`--disk MOUNT` keeps the chain data in `MOUNT/singularity/<network>/data` and\nthe logs in `MOUNT/singularity/<network>/logs` (owner-only directories);\n`--data-dir` and `--log-dir` name exact places, and the guided setup asks for\nthe data disk and the log disk separately so a runaway log never starves the\nstate store. Setup warns when the data would land on the boot disk, on a\nspinning disk, or on a disk with less than 500 GB free.\n\nEverything else the node owns lives in `~/.config/singularity/node`: the\nruntime, the config, the key, the environment file and the systemd unit.\n\n### When there is no Linux\n\nThe runtime is a Linux x86_64 program. `singularity node env` looks at the\nmachine and says how a node would run on it:\n\n- **Linux** — directly. `--isolate` puts it in an LXC container (or Docker if\n  LXC is missing) with the chosen data and log disks passed through.\n- **Windows** — in a WSL 2 distribution named `singularity-node`; `node env`\n  prints the `wsl --install …` commands, and Docker is the fallback.\n- **macOS** — in Docker Desktop. A Mac has no NVIDIA GPU, so only replica and\n  CPU-only nodes run there.\n\n`node start` drives the container once it exists.\n\n### The runtime\n\nConsensus and replica nodes download a released runtime named by a signed\nmanifest; the tarball and the genesis file are checked against their published\nSHA-256 before anything is unpacked. **The manifest URL is required**: pass\n`--runtime-manifest <URL>` or set `SINGULARITY_RUNTIME_MANIFEST`. There is no\nbuilt-in default — the host this app used to name has no DNS record, so a\ndefault would only turn a missing setting into a confusing network error, and\n`node init` now says exactly which flag to pass instead. The CPU-only node\nclones the source (or uses `SINGULARITY_SOURCE_DIR`, a developer's checkout)\nand runs `cargo build --release --no-default-features`.\n\nNo public release manifest is established by this README. The operator must\nprovide one and verify its resulting runtime SHA against release evidence.\n\n### Settings that must match the fleet\n\n`node init` writes the consensus-relevant epoch length into\n`~/.config/singularity/node/config/node.env`, marked `# Must match the fleet.`:\n\n| Variable | Default | Why it must match |\n|---|---|---|\n| `SVM_SLOTS_PER_EPOCH` | the manifest network's `slots_per_epoch`, else `432000` | release consensus accepts only `432000`; shorter schedules are fresh debug-testnet overrides |\n\nRelease consensus pins the value to `432000`. Coordination cannot authorize\nanother value. The CLI fallback matches that release pin. A release node with\nan incompatible manifest fails at startup. Short schedules are valid only for\nfresh debug testnets.\n\nProtocol v8 has no Hilsa activation setting. Observer/CILS ingestion is part of\nthe protocol, while durable interop roots, proofs, attestations, mint/burn,\noutbox, and bridge value are safety-paused. The CLI therefore does not emit the\nlegacy `ETO_CIL_ENABLED` or `ETO_CIL_MINT_ENABLED` variables. Adding either by\nhand does not enable those capabilities.\n\n### The consensus key\n\nOne 32-byte file, `~/.config/singularity/node/keys/consensus.key`, owner-only,\nwritten once. **It is the only copy of the validator's identity.** `node\nstatus` prints the public keys derived from it; the secret is never printed.\n`validator join` and `validator leave` are **TARGET** and disabled. They fail\nbefore reading this key, loading a wallet, opening a session, building a\ntransaction, signing, or submitting. `validator status` retains an experimental\nread of `eto_validatorStatus` and `eto_validatorSet`. It does not make joining\npublicly available.\n\n## Other things worth knowing\n\n- **The token is SING.** Every amount this app prints is in SING.\n- **Prior private runs observed one-hop, sub-second finality.** No current\n  public deployed-SHA artifact proves it.\n- **SVM preview deploys use plain RPC.** This is repository behavior, not a\n  current public service claim.\n- **Preview fee rules** are 5,000 lamports per signature plus 1 per compute\n  unit. See *What a transaction costs*.\n- **Repository caps** are 1 MiB per transaction, 65,535 bytes per instruction,\n  100 addresses per multiple-account call, and 256 calls per batch.\n\n## Develop\n\nThe CLI depends on `@0xsingularity/web3.js` **by path** in this repository\n(`file:../singularity-web3`), so build the library before you install the\nCLI — `npm install` here takes the library's `dist/` as it is on disk:\n\n```bash\n(cd ../singularity-web3 && npm install && npm run build)\nnpm install\nnpm run typecheck\nnpm test          # 513 tests, none of them touch the network\nnpm run build\n```\n\nRebuilt the library? Run `npm install` here again to pick the new `dist/`\nup. Publishing swaps the path for a registry range; see `../RELEASING.md`.\n\nThe logic lives in plain TypeScript modules under `src/core` and\n`src/commands`. The screens under `src/ui` are presentation only, built with\n[ink](https://github.com/vadimdemedes/ink). That split is why the wallet, the\namounts, the faucet errors, the program check and the deploy path are all\ncovered by tests that need neither a terminal nor a network. Focused command\ntests also prove that disabled WASM, Move, validator, Agent, and MCP write\nroutes never reach their wallet, session, build, or submission layers.\n\n## Licence\n\nMIT.\n\n### Local representation backing\n\n```bash\nsingularity bombil decode conversion-request \"$BLM1_HEX\"\nsingularity bombil decode representation-record \"$BRP1_HEX\"\nsingularity bombil conversion inspect \"$BINDING_JSON\" --endpoint \"$RPC_URL\"\n```\n\nBLM1 is a retained-call request, not a binding record or authority. BRP1 records\nlast reconciled accounting and the expected policy's fingerprint. Both formats\nare exactly 96 bytes and support decoding only. Amounts, nonces, accounted\ncollateral, retirement and U256 surplus print as exact decimal strings; all\namounts are raw base units. EVM addresses/hashes print as lowercase hex and SPL\npublic keys as base58.\n\nSupply the expected deployment policy as one flat JSON object with these exact\nfields. The CLI does not discover or attest an approved policy:\n\n| Fields | JSON values |\n|---|---|\n| `chainDomainHex`, `instanceIdHex`, `vaultSha256Hex`, `tokenKeccak256Hex`, `tokenBalanceMappingSlotHex` | 32-byte hex, without `0x` |\n| `vaultHex`, `tokenHex`, `routeHex` | Distinct nonzero 20-byte hex addresses |\n| `administrator`, `mint` | Nonzero canonical base58 public keys |\n| `evmChainId` | Nonzero canonical decimal u64 string |\n| `decimals` | Integer number from 0 to 255 |\n\nInspection uses existing endpoint configuration and one standard\n`getMultipleAccounts` response, without loading a wallet or sending a\ntransaction. It derives the singleton record PDA from instance/mint, checks the\nOneBook-owned non-executable BRP1 row and complete binding fingerprint, then\nchecks classic SPL mint metadata/authority, ERC-20 collateral and vault storage,\nand actual vault/token code pins. Wrong owners, malformed rows, missing backing,\npolicy mismatches and RPC errors fail with a nonzero exit code.\n\nOutput is tagged `observation: \"rpc-accounts\"` and `policy: \"supplied-binding\"`.\nIt includes derived addresses, `rpcSlot`, recorded accounting, current\n`mintSupply`, `actualCollateral`, and three explicit `checks`. A successful read\ncan contain false checks; it does not certify healthy backing. Impossible\nretirement/surplus differences are `null`. `lastReconciledSupply` is separate\nfrom current supply: direct SPL burns can increase `observedRetiredLocked` and\n`pendingRetirement` without granting credit. `retiredLockedFloor` cannot be\nreduced or recovered by the v1 adapter. Recorded `unallocatedSurplus` and current\n`observedUnallocatedSurplus` remain U256 values; donations are not redemption\ncredit.\n\nThe shared RPC slot is not an independent atomic/durable snapshot, deployment\nattestation or conversion authorization. This tooling does not activate the\ninactive dispatcher or implement funding transactions.\n","readmeFilename":"README.md"}