Skip to content
LogoLogo

How this repo relates to Tevm

The split

Tevm used to be a single monorepo, evmts/tevm-monorepo, containing both the EVM library packages and the app-shaped tools built on top of them. The app-shaped tools were extracted into evmts/tevm-cli — this repository — with their Git history intact.

The split follows one line: libraries stay in the monorepo, applications live here. A library is consumed by import; an application ships a binary and a user interface. @tevm/cli ships the tevm binary and an Ink terminal UI. tevm-run ships the tevm-run binary. Neither is something you would depend on from application code.

The practical benefit is release cadence. This repository consumes the core Tevm packages as ordinary published npm dependencies, so the CLI can cut a release without waiting on the monorepo, and vice versa.

What lives where

RepositoryContainsDocs
evmts/tevm-monorepotevm, @tevm/node, @tevm/actions, @tevm/memory-client, @tevm/state, the bundler plugins, and the rest of the core library packages.tevm.sh, node.tevm.sh
evmts/tevm-cli@tevm/cli (the tevm binary) and tevm-run.cli.tevm.sh — this site

What this repo depends on

@tevm/cli is a thin, ergonomic shell over the core packages. Nearly every command maps onto a Tevm action:

CLI commandUnderlying package
tevm call, tevm contract, tevm deploy, tevm mine@tevm/actions
tevm get-account, tevm set-account, tevm dump-state, tevm load-state@tevm/actions state actions
tevm serve@tevm/memory-client plus the Tevm HTTP server
tevm compile, tevm sol@tevm/base-bundler, @tevm/bundler-cache, solc
tevm get-ens-*, tevm multicall, tevm read-contractviem against the session's fork

tevm-run depends on @tevm/bun-plugin, which is what lets a script import a .sol file directly.

This means the semantics of a CLI command are the semantics of the underlying action. When a reference page here is thin on the behaviour of, say, tevmCall, the authoritative description is in the Tevm Node docs.

Versioning

@tevm/cli and tevm-run are versioned together in this repository and currently track the Tevm 1.0 release candidates (1.0.0-rc.151 at the time of writing). Changesets drive version bumps: merging to main opens or updates a release pull request, and merging that pull request publishes both packages to npm with provenance.

The core Tevm packages this repository consumes are on their own 1.0.0-next.* line and move independently. Pin exact versions in CI.

Choosing a tool

  • A one-off query or a shell script@tevm/cli. See Getting started.
  • A TypeScript program that imports Soliditytevm-run. See Scripting with tevm-run.
  • An application, a test suite, or a browser bundle → the tevm library directly. See node.tevm.sh.
  • An HTTP JSON-RPC endpoint for another tooltevm serve.