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:

npx @evergreen-stellar/cli@0.1.1 scan <contract-id>

For repeated use, or in a script where you want the version pinned in one place:

npm install -D @evergreen-stellar/cli@0.1.1

Node 24 is required and declared in the package. The binary is named evergreen.

Two commands

CommandWhat 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 evergreen scan Read a contract’s entries: every flag, and what each one changes.