Command line
Install and conventions
Two commands. One reads, one writes, and the one that writes does nothing until you say so twice.
Install
There is nothing to install for a one-off scan — npx fetches and runs it:
For repeated use, or in a script where you want the version pinned in one place:
Node 24 is required and declared in the package. The binary is named evergreen.
Two commands
| Command | What it does |
|---|---|
| scan | Reads a contract’s entries and reports what expires first, what it would cost, and what it could not determine. Never writes. Reference |
| extend | Builds and simulates a TTL extension. Submits only with an explicit flag, a named secret variable and a fee cap. Reference |
Conventions both commands keep
Ledgers are the truth
Every remaining lifetime is reported in ledgers. Dates appear beside them as estimates at five seconds per ledger and always carry a ~.
Scope is declared, never guessed
Scanning reads the keys it is given; it cannot enumerate a contract’s storage. So a clean exit means “everything I was asked to check is healthy”, never “this contract is fully healthy”. Coverage is printed with every scan, and --require-declared-scope turns an undeclared scope into a failure rather than a footnote.
A secret is never an argument
extend --submit takes the name of an exported environment variable, not its value. There is no .env auto-loading, and diagnostics never echo file contents or credentials.
Testnet only
The network passphrase is compared rather than a label trusted. There is no mainnet path in this tool, and adding one is not a configuration change.
Next