# Tevm Node > A lightweight, unopinionated, powerful EVM node that runs in the browser ## Docs - [@tevm/actions](/reference/actions): Action handlers for the Tevm client, covering standard Ethereum JSON-RPC, Anvil-compatible test methods, debug/tracing, and Tevm-specific calls. - [@tevm/address](/reference/address): Utilities for Ethereum addresses. Wraps the ZEVM-compatible `EthjsAddress` primitive with a Tevm-style API and returns EIP-55 checksummed strings. - [@tevm/block](/reference/block): Block, block-header, and RLP/JSON-RPC serialization utilities. Includes Verkle/EIP-6800 payload types only; Tevm does not execute Verkle witnesses. - [@tevm/blockchain](/reference/blockchain): Tevm's block and chain-state implementation. Manages local blocks, fork-backed lookup, canonical heads, iterator heads, and chain validation using Tevm block types and ZEVM-compatible primitives. - [Bundler Plugins](/reference/bundler-plugins): Tevm bundler plugins enable direct Solidity imports in TypeScript/JavaScript, compiling them into type-safe Tevm Contract instances at build time. - [Tevm Contract Bundler](/reference/bundler): Import Solidity files directly into TypeScript with type safety and IDE integration. - [Built-in chain presets](/reference/chain-presets): `@tevm/common` exports ready-to-use EVM chain configurations with chain IDs, hardfork histories, and RPC metadata. Reach for a preset when creating a Tevm client for a known network instead of assembling `Common` options by hand. - [@tevm/common](/reference/common): Chain-specific configuration. Combines viem chain definitions with a ZEVM-backed `Common` instance the VM uses for hardfork, EIP, consensus, and gas-parameter lookups. Includes custom crypto hooks such as KZG for blob transaction testing. - [Solidity contract type generator](/reference/contract-type-generator): `tevm-gen` compiles matching Solidity files and writes adjacent TypeScript contract modules. Reach for it when build tooling cannot transform `.sol` imports directly or when generated modules must be checked into a package. - [@tevm/contract](/reference/contract): Type-safe contract interactions, deployments, events, and pre-built ERC20/ERC721 contracts. - [@tevm/decorators](/reference/decorators): Action decorators for extending Tevm clients: EIP-1193 providers, Ethereum JSON-RPC methods, and Tevm-specific actions. - [@tevm/evm](/reference/evm): Tevm's low-level EVM facade. Backed by `@evmts/zevm/evm` and wrapped with Tevm-specific defaults for state, blockchain, precompiles, predeploys, logging, profiling, and unlimited-contract-size testing. - [Package Reference Documentation](/reference): [@tevm/actions](/reference/actions) - Core action handlers for interacting with the EVM - [Memory Client](/reference/memory-client): Install the rc.151 client through the main package: - [@tevm/node API Reference](/reference/node): Full API on GitHub: [packages/node/docs/globals.md](https://github.com/evmts/tevm/tree/main/packages/node/docs/globals.md). - [@tevm/receipt-manager](/reference/receipt-manager): ZEVM-backed transaction receipt storage and lookup. Powers Tevm's `eth_getTransactionReceipt`, `eth_getBlockReceipts`, `eth_getLogs`, filter, and subscription flows. - [@tevm/rlp API Reference](/reference/rlp): ZEVM-backed Recursive Length Prefix encoding utilities through Tevm's package namespace. - [@tevm/state](/reference/state): State management for Tevm. Handles account state (balance, nonce, code, storage), state transitions/checkpoints, caching, persistence, and forked chain state. - [Reusable EVM test fixtures](/reference/test-fixtures): `@tevm/test-utils` packages compiled test contracts and shared fork transports used throughout the Tevm test suite. Reach for it when a test needs deterministic bytecode and ABI fixtures without maintaining another Solidity compilation step. - [@tevm/trie API Reference](/reference/trie): ZEVM-backed Merkle Patricia Trie utilities through Tevm's package namespace. - [@tevm/tx](/reference/tx): Tevm's transaction facade backed by `@evmts/zevm/tx`. Exports typed Ethereum transaction constructors, helpers, type guards, and Tevm's impersonated transaction helper. - [@tevm/txpool](/reference/txpool): Transaction pool facade backed by `@evmts/zevm/txpool`. Adds Tevm-specific fee classification for fee-market-shaped transactions, including EIP-7702 and impersonated transactions. - [Utilities & Addresses](/reference/utils): Lightweight utility functions and classes built on [`tevm/utils`](https://github.com/evmts/tevm/tree/main/packages/utils), [`@evmts/zevm`](https://github.com/evmts/zevm), and [`viem`](https://viem.sh). - [@tevm/utils](/reference/utils): `InvalidAddressError` - bytes/string can't parse as a 20-byte address. - [Virtual Machine](/reference/vm): `@tevm/vm` coordinates the EVM, state manager, blockchain, block building, and transaction execution. Most applications should use `createMemoryClient`; direct VM access is intended for runtime integrations. - [tevm call](/reference/cli/call): `tevm call` runs this operation: Execute a raw EVM call against a contract or address. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm compile](/reference/cli/compile): `tevm compile` runs this operation: Compile Solidity smart contracts to bytecode and ABI. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm contract](/reference/cli/contract): `tevm contract` runs this operation: Call a contract function with ABI and arguments. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm action create-access-list](/reference/cli/create-access-list): `tevm action create-access-list` runs this operation: Create an EIP-2930 access list. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm create-block-filter](/reference/cli/create-block-filter): `tevm create-block-filter` runs this operation: Create a filter to detect new blocks. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm create-contract-event-filter](/reference/cli/create-contract-event-filter): `tevm create-contract-event-filter` runs this operation: Create a filter for decoded contract events. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm create-event-filter](/reference/cli/create-event-filter): `tevm create-event-filter` runs this operation: Create a filter for blockchain logs. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm deploy](/reference/cli/deploy): `tevm deploy` runs this operation: Deploy bytecode into a local EVM or fork. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm dump-state](/reference/cli/dump-state): `tevm dump-state` runs this operation: Dump local EVM state to JSON. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm estimate-fees-per-gas](/reference/cli/estimate-fees-per-gas): `tevm estimate-fees-per-gas` runs this operation: Estimate EIP-1559 gas fees. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm estimate-gas](/reference/cli/estimate-gas): `tevm estimate-gas` runs this operation: Estimate transaction gas. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-account](/reference/cli/get-account): `tevm get-account` runs this operation: Get local account balance, nonce, code, and storage metadata. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm action get-balance](/reference/cli/get-balance): `tevm action get-balance` runs this operation: Get an account Ether balance. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-block-number](/reference/cli/get-block-number): `tevm get-block-number` runs this operation: Get the current block number. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-block](/reference/cli/get-block): `tevm get-block` runs this operation: Get a block by number, hash, or tag. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-bytecode](/reference/cli/get-bytecode): `tevm get-bytecode` runs this operation: Get deployed bytecode at an address. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-chain-id](/reference/cli/get-chain-id): `tevm get-chain-id` runs this operation: Get the chain ID. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-ens-address](/reference/cli/get-ens-address): `tevm get-ens-address` runs this operation: Resolve an ENS name to an address. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-ens-name](/reference/cli/get-ens-name): `tevm get-ens-name` runs this operation: Reverse-resolve an address to an ENS name. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-ens-text](/reference/cli/get-ens-text): `tevm get-ens-text` runs this operation: Get an ENS text record. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-gas-price](/reference/cli/get-gas-price): `tevm get-gas-price` runs this operation: Get the current gas price. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-storage-at](/reference/cli/get-storage-at): `tevm get-storage-at` runs this operation: Read a raw contract storage slot. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm get-transaction](/reference/cli/get-transaction): `tevm get-transaction` runs this operation: Get a transaction by hash. Reach for it when you need the operation from a terminal, CI job, or shell script. - [Tevm CLI](/reference/cli): The Tevm CLI exposes rc.151 node actions, contract tools, state controls, and Solidity compilation as shell commands. Reach for it when a one-off command or script is more direct than creating a JavaScript client. - [tevm load-state](/reference/cli/load-state): `tevm load-state` runs this operation: Load saved state into the local EVM. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm mine](/reference/cli/mine): `tevm mine` runs this operation: Mine blocks in the local EVM. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm multicall](/reference/cli/multicall): `tevm multicall` runs this operation: Read several contracts in one request. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm read-contract](/reference/cli/read-contract): `tevm read-contract` runs this operation: Read a decoded contract function. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm action send-raw-transaction](/reference/cli/send-raw-transaction): `tevm action send-raw-transaction` runs this operation: Send a signed raw transaction. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm serve](/reference/cli/serve): `tevm serve` runs this operation: Start a persistent TEVM JSON-RPC server. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm set-account](/reference/cli/set-account): `tevm set-account` runs this operation: Mutate a local account balance, nonce, code, or storage. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm set-code](/reference/cli/set-code): `tevm set-code` runs this operation: Set bytecode at an address in local state. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm set-nonce](/reference/cli/set-nonce): `tevm set-nonce` runs this operation: Set an account nonce in local state. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm set-storage-at](/reference/cli/set-storage-at): `tevm set-storage-at` runs this operation: Set a contract storage slot in local state. Reach for it when you need the operation from a terminal, CI job, or shell script. - [tevm action simulate-calls](/reference/cli/simulate-calls): `tevm action simulate-calls` runs this operation: Simulate a bundle of calls without committing state. Reach for it when you need the operation from a terminal, CI job, or shell script. - [Tevm Contract Bundler](/reference/bundler): Import Solidity files directly into TypeScript with type safety and IDE integration. - [Bundler Internals](/reference/bundler/internals): The public plugin packages share a base bundler. Host-specific plugins adapt file loading and module resolution, while the shared pipeline owns Solidity resolution, compilation, cache keys, and contract-module generation. - [Bundler Methods and Exports](/reference/bundler/methods): For application builds, use one of the plugin exports: - [Bundler Overview](/reference/bundler/overview): The Tevm bundler turns a Solidity import into a typed JavaScript module during a normal application build. - [Bundler Troubleshooting](/reference/bundler/troubleshooting): Solidity imports show red underlines or no auto-completion. - [Tevm Architecture Overview](/introduction/architecture-overview): Tevm is an Ethereum execution node embedded in JavaScript. The batteries-included `MemoryClient` presents a viem-compatible API, while a `TevmNode` owns the EVM, state, blockchain, transaction pool, receipts, mining policy, and optional fork connection underneath it. - [Why Run An Ethereum Node in JavaScript?](/introduction/why-run-ethereum-in-js): You know what would make solving all these problems trivially easy? If we just were able to use Foundry in the browser - [Bundler Quickstart](/getting-started/bundler): Tevm bundler plugins compile `.sol` imports at build time and generate modules containing ABI, bytecode, and type-safe contract helpers. - [Getting Started with Ethers.js](/getting-started/ethers): Tevm's primary client surface is viem-compatible. Ethers v6 can use the same in-memory node through its EIP-1193 provider interface. - [Getting Started](/getting-started/overview): These docs target `tevm@1.0.0-rc.151`. - [Community](/getting-started/testimonials): Here's what developers and industry leaders are saying about Tevm. - [Getting Started with Viem](/getting-started/viem): `createMemoryClient` is a viem client backed by an in-process Tevm node. It includes viem public, wallet, and Anvil-compatible test actions plus Tevm-specific actions. - [Building a Debugger UI](/examples/debugger-ui): This Svelte example runs a real EVM call in the browser and renders its opcode, stack, gas, and trace data. It uses the public `MemoryClient` call API from `tevm@1.0.0-rc.151`; it does not depend on internal VM event emitters. - [Using with Ethers.js v6](/examples/ethers): Tevm works with Ethers.js through Tevm's EIP-1193 provider interface. Use Tevm for local chain control, state setup, and mining; use ethers for providers, wallets, and contract instances. - [Forking Mainnet Example](/examples/forking-mainnet): Set `MAINNET_RPC_URL` to a mainnet RPC endpoint before running these examples. - [Local Testing](/examples/local-testing): Tevm runs a deterministic Ethereum chain in the same process as your test runner. The examples below use the viem-compatible `MemoryClient`, which is the recommended testing surface in `tevm@1.0.0-rc.151`. - [Using with Viem](/examples/viem): Tevm integrates with [viem](https://viem.sh) as a local Ethereum environment with viem's familiar API surface. - [Creating a MemoryClient](/core/create-tevm-node): `createMemoryClient` bootstraps a complete Ethereum execution environment in JavaScript. - [Forking](/core/forking): A Tevm fork reads historical chain data from an upstream EIP-1193 transport and stores local changes in an in-memory overlay. It does not copy the entire remote chain and never writes upstream. - [Managing State](/core/managing-state): Tevm exposes state management via two layers: a low-level `StateManager` and a high-level viem-style client API. - [Mining Modes](/core/mining-modes): Mining controls when pending transactions become part of the canonical chain. `tevm@1.0.0-rc.151` supports manual, automatic, and interval mining. - [Runtime Model and ZEVM](/core/runtime-model): Tevm and [ZEVM](https://zevm.sh/docs) share execution primitives but are different products with different public interfaces. - [TevmNode Interface](/core/tevm-node-interface): `TevmNode` owns Tevm's stateful runtime. Most applications should use `createMemoryClient`; use the node directly when building decorators, servers, or execution tooling. - [Account Management](/api/account-management): Two actions manage account state: `getAccountHandler` and `setAccountHandler`. - [EVM Events](/api/evm-events): Tevm call actions accept callbacks for live execution inspection. They are useful for debuggers, tracers, profilers, and test assertions. - [JSON-RPC Support](/api/json-rpc): Tevm Node provides [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193)-compatible [JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/) support for integration with Ethereum libraries and tools. - [Tevm Node Methods](/api/methods): Reference for the main API methods on a Tevm Node instance: EVM interaction, state management, execution control. - [Package Reference](/api/packages): Tevm Node is modular. These docs target the `1.0.0-rc.151` package set. - [Call API](/api/tevm-call): The Call API covers ~90% of use cases (with mining) and provides an EVM call interface with extensive configuration. - [VM & Submodules](/api/vm-and-submodules): [Tevm Node](https://github.com/evmts/tevm) is built from submodules usable together as an in-memory Ethereum node or independently. High-level APIs (`createMemoryClient`, viem actions, JSON-RPC) sit on top of these. - [Custom Precompiles](/advanced/custom-precompiles): Tevm lets you register JavaScript functions as EVM precompiles at fixed addresses — useful for crypto, oracles, complex math, bridges, custom data structures, and test helpers. - [Performance Profiler](/advanced/performance-profiler): Tevm provides two inspection levels: - [Receipts & Logs](/advanced/receipts-and-logs): Tevm Node manages transaction receipts and event logs through the ReceiptsManager and filter system — enabling event listening, status tracking, and log filtering. - [Transaction Pool](/advanced/txpool): The TxPool manages pending transactions before block inclusion. Tevm's facade is backed by `@evmts/zevm/txpool` and adds Tevm-specific fee handling for modern fee-market transactions.