Compare
glnc vs cast
Foundry's cast is the RPC primitive for developers writing contracts. It encodes calldata, signs messages, broadcasts transactions, and reads storage. It is the tool you reach for when you already know exactly which call you want to make.
glnc is the high-level inspector you reach for when you have an address or a hash and want a useful answer. Wallet balances across nine chains, transactions decoded with token movements, live gas everywhere. Different jobs, same PATH.
Quick recommendation
Use cast for low-level RPC calls, ABI encoding, signing, and dev workflows. Use glnc for wallet inspection, multi-chain balances, transaction decoding with token movements, and live gas. The two coexist; this is not a replacement.
Side by side
Feature coverage compared head to head. Both tools work on Ethereum and the major EVM L2s; what differs is the level of abstraction and the shape of the output.
| Feature | cast | glnc |
|---|---|---|
| Read wallet balance | RPC primitive: query token contracts manually, decode decimals, format yourself. | One command. Auto-detects chain. Token discovery and USD totals included. |
| Resolve ENS | cast lookup-address and cast resolve-name. | Automatic. Pass the .eth name; reverse lookup annotates addresses too. |
| Decode a transaction | Raw calldata via cast 4byte-decode and cast calldata-decode; receipts via cast receipt. | High-level English summary. Token movements walked out of receipt logs. Universal Router, Governor, Timelock, MultiSend, Safe. |
| Multi-chain | Per-call --rpc-url flag. Run once per chain. | Auto-detect from address format. EVM chains queried in parallel. |
| Live gas tracker | Not built in. Compose your own from eth_feeHistory. | glnc gas across nine chains with --watch; includes EVM percentile tiers, BTC mempool, Solana priority fees. |
| JSON output for shell pipelines | Per-command. Shapes vary. | Stable, versioned envelopes on every command. NDJSON under --watch. |
| Signing and broadcasting | Yes. Hardware wallets, keystores, hot keys. | No. Read-only by design. No key material ever touched. |
| Run a local devnet | Yes, via anvil (part of Foundry). | No. glnc reads mainnet (and a few testnets); does not host one. |
| Install | Install Foundry via curl -L foundry.paradigm.xyz | bash and foundryup. | brew install aryarahimi1/glnc/glnc. No build step, no Node, no Bun. |
When cast is the right tool
- Dev workflows. Calling a contract method during a refactor, eyeballing a storage slot, sanity-checking an event signature. The work cast is purpose-built for.
- Signing. Anything that involves a private key. glnc never touches one; cast does this well, including with hardware wallets.
- ABI work. Encoding, decoding, fetching interfaces, working with raw bytes. cast is the canonical tool and there is no reason to reinvent that piece.
When glnc is the right tool
- Inspecting any wallet across chains. One command, one set of credentials (none), per-chain breakdown with USD values. The Etherscan-tab moment.
- Pipeline-friendly monitoring. NDJSON watch mode into
jq, intocron, into Slack. A useful primitive for shell-native alerting without a SaaS layer. - Decoded transactions with token movements. When the question is "what did this transaction do" rather than "what bytes does this calldata contain."
Use both
The strict-superset move is to have both in your PATH. cast for the low-level work where you know what you want to call. glnc for the high-level work where you want to know what is going on. They interoperate trivially because both emit text and one of them emits JSON: pipe a glnc query through jq to get an address, then hand it to cast. Or use cast to send a transaction and glnc to read the resulting receipt with token movements already decoded. Neither tool is trying to be the other; both are better with the other installed.