{"id":29248513,"url":"https://github.com/polareth/savvy","last_synced_at":"2026-03-14T22:38:59.643Z","repository":{"id":221609441,"uuid":"752342556","full_name":"polareth/savvy","owner":"polareth","description":"An interface for the EVM in the browser, to simulate and visualize your onchain activity.","archived":false,"fork":false,"pushed_at":"2025-11-21T19:01:05.000Z","size":1083,"stargazers_count":27,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-21T21:04:55.350Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://svvy.sh","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/polareth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-03T17:07:25.000Z","updated_at":"2025-11-21T19:01:09.000Z","dependencies_parsed_at":"2024-02-09T01:17:59.269Z","dependency_job_id":"a69571a9-231b-4bf6-8902-33e7e4d026af","html_url":"https://github.com/polareth/savvy","commit_stats":{"total_commits":102,"total_committers":1,"mean_commits":102.0,"dds":0.0,"last_synced_commit":"e39ded55dbee863f2477373bf27ecf74ebbc15df"},"previous_names":["0xpolarzero/savvy","polareth/savvy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/polareth/savvy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polareth%2Fsavvy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polareth%2Fsavvy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polareth%2Fsavvy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polareth%2Fsavvy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/polareth","download_url":"https://codeload.github.com/polareth/savvy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/polareth%2Fsavvy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30520753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-14T19:51:21.629Z","status":"ssl_error","status_checked_at":"2026-03-14T19:51:12.959Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-04T00:08:05.984Z","updated_at":"2026-03-14T22:38:59.628Z","avatar_url":"https://github.com/polareth.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# savvy\n\n**An interface for the EVM in the browser, to simulate and visualize your onchain activity, especially the costs associated with it.**\n\n_A more comprehensive/readable version is available [in the documentation](https://docs.svvy.polareth.org)._\n\n## Table of contents\n\n- [Overview](#overview)\n- [About the project](#about-the-project)\n  - [Progress](#progress)\n  - [How to use](#how-to-use)\n- [Architecture](#architecture)\n- [Getting started](#getting-started)\n- [Acknowledgments](#acknowledgments)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Overview\n\n**Think ~ Etherscan + Remix + Foundry**.\n\nBasically, it's a way to interact with a forked EVM chain, in a local-first environment, with a comprehensive set of actions/hacks/utilities exposed by Tevm—which is doing all the heavy lifting.\n\nThe state of each chain is the initial fork + all the local transactions, which are displayed in the history with all the details (data, errors, logs, inputs...).\n\nAnd also, and that's one of the main points of savvy, details on the gas usage of each transaction (fee, L1 submission fee if relevant...).\n\nYou can think of it as a way of simulating a set of transactions, and visualizing the results, without having to actually send them to the network.\n\nWith no setup (wallet, signatures, etc.), in the browser, from any account (impersonation), with any amount of native tokens.\n\n**This is a WIP, and Tevm is still under heavy development; you _will_ encounter bugs and unhandled errors. Please report them if you have the time!**\n\n## About the project\n\n### Progress\n\n| status    | idea                                                                                                                                                                                                  |\n| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| available | run transactions in a simulated environment and remember activity on each chain                                                                                                                       |\n| available | mock network condition/congestion                                                                                                                                                                     |\n| available | estimate gas fees on EVM L1s, Polygon and OP-stack L2s                                                                                                                                                |\n| available | aggregate total fees, include/exclude transactions                                                                                                                                                    |\n| todo      | provide helpers to generate mock data and quickly estimate costs for selected optimized solutions (e.g. GasliteDrop)                                                                                  |\n| todo      | run a tx on multiple chains and provide a comparative estimation of gas spent on each                                                                                                                 |\n| todo      | support Arbitrum orbit for gas fee on L1 submission                                                                                                                                                   |\n| todo      | paste a contract in a browser editor, deploy it and use it just like a regular forked contract                                                                                                        |\n| todo      | run ast on a pasted contract and provide inline recommendations to optimize both dependencies (e.g. OZ -\u003e Solady) and known inefficient patterns                                                      |\n| todo      | provide selected secure and optimized contracts to deploy in a click with mock data + estimate costs (e.g. Gaslite core, Solady libs)                                                                 |\n| todo      | provide a rpc to publish tests to the Tevm forked chain and keep the state (already possible in the opposite way; fork a local Hardhat node to which tests can be published)                          |\n| todo      | wallet/social login to save transactions (sync with local storage)                                                                                                                                    |\n| todo      | separate between two versions: advanced (intended for devs/experienced users) and \"onboarding\" for non-crypto natives, with detailed explanations, guidance and examples                              |\n| todo      | impersonate a smart account (see Rhinestone, ERC7579); with utilities to follow the flow, add modules, etc                                                                                            |\n| todo      | use savvy as a browser \"extension\"/wallet; basically override the injected provider with the impersonated caller, and override the chain with a fresh fork—think of it as a \"sandbox\" mode for a DApp |\n| todo      | extended account page, with more data to track across calls, e.g. tokens; show traces of the account's activity                                                                                       |\n| todo      | share results so anyone can open them in savvy with the configuration and re-run the transactions                                                                                                     |\n\nAnd a lot of other possibilities, although not prioritized because there are already great tools for most of these. Like:\n\n- replicate transactions locally (given their hash + chain);\n- debug transactions by exploring state change;\n- copy a set of local transactions to get the multicall data and execute them on mainnet.\n\nAnd any other ideas you might have (please share them).\n\n### How to use\n\n- **Search**\n  - Select a chain and paste the address of a contract, or click `Try with an example`.\n  - Click `Fork chain` to fork the chain again at the latest block.\n- **Caller**\n  - Enter an address to impersonate during calls; you can click `owner` to impersonate the owner of the contract if it found an appropriate method.\n  - Toggle `skip balance` to [ignore or not the native tokens balance](https://tevm.sh/reference/tevm/actions-types/type-aliases/basecallparams/#skipbalance) during calls.\n- **Low-level call**\n  - Call the current account with an arbitrary amount of native tokens and/or arbitrary encoded data.\n- **Contract interface**\n  - The ABI is displayed inside a table you can navigate through; fill the inputs if relevant, and click `Call` to send a transaction.\n  - Read methods are highlighted when they were found with certitude.\n- **Local transactions**\n  - The history of transactions displayed is the one recorded by the client for the selected chain, since the last fork.\n  - You can navigate through the history, click ↓ to see more details (data, errors, logs, inputs...), and click on an address to search for it.\n\n## Architecture\n\n```ml\napp - \"Main entry points for pages, layout and routing\"\n├── (api) - \"Serverless functions\"\n│   └── abi - \"Get the ABI of a contract (WhatsABI)\"\n│   └── token-price - \"Get the price of a native token (CoinMarketCap)\"\n├── address\n│   └── [account] - \"Account page (whenever an address is searched)\"\ncomponents - \"Everything related to the UI\"\n├── common - \"Recurrent components across the app\"\n├── config - \"Independent config-related components (e.g. theme, analytics)\"\n├── core - \"Components related to the main logic/purpose of the app\"\n├── layouts - \"Layouts for the app used across all pages\"\n├── templates - \"Generic templates for better consistency\"\n├── ui - \"shadcn/ui components\"\nlib - \"Libraries, utilities and state management\"\n├─ constants - \"Constants for the site, default config, providers, starting points\"\n├─ hooks - \"Custom hooks (n.b. we're mostly using stores for state management)\"\n├─ store - \"State management (providers, config, transactions, etc.)\"\n├─ tevm - \"Tevm clients, calls and utilities\"\n├─ types - \"Type definitions that are used across multiple files\"\n├─ ... - \"Other libraries and utilities (e.g. WhatsABI, local storage, gas estimation)\"\nstyles - \"Global styles, theme, and tailwind classes\"\n```\n\n## Getting started\n\nThis is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app), using [shadcn/ui](https://ui.shadcn.com/) components and design, as well as the overall project's organization. It is intended for use with the Next.js (13+) [App Router](https://nextjs.org/docs/app).\n\nThe minimal steps to get started are:\n\n1. Clone the repository and navigate to this directory\n   ```bash\n   git clone git@github.com:0xpolarzero/savvy.git \u0026\u0026 cd savvy\n   ```\n2. Install the dependencies (preferably with [pnpm](https://pnpm.io))\n   ```bash\n   pnpm install\n   ```\n3. Copy the `.env.local.example` file to `.env.local` and fill in the required environment variables\n   ```bash\n   cp .env.local.example .env.local\n   # Then edit .env.local\n   # ALCHEMY_API_KEY\n   # COINMARKETCAP_API_KEY\n   # ETHERSCAN_API_KEY\n   # ARBISCAN_API_KEY\n   # BASESCAN_API_KEY\n   # OPTIMISTIC_ETHERSCAN_API_KEY\n   # POLYGONSCAN_API_KEY\n   ```\n\nWe're using Alchemy for better modularity [when creating providers](./src/lib/constants/providers.ts#L49) and [Tevm clients](./src/lib/tevm/client.ts#L42), but you can replace it with any other provider, and update the way urls are created in the two aforementioned files.\n\n4. Run the development server\n\n```bash\npnpm dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\n---\n\nFor any other considerations, please refer to the respective documentation for each package:\n\n- [Next.js](https://nextjs.org/docs)\n- [shadcn/ui](https://ui.shadcn.com/docs)\n- [Tevm](https://tevm.sh/learn/reference)\n- [WhatsABI](https://github.com/shazow/whatsabi)\n\n## Acknowledgments\n\nYou will find references to any code or ideas that were used in the project directly in the code, but here are some of the main ones:\n\n- [shadcn/ui](https://ui.shadcn.com/): components, design, code/application structure and best practices\n- [fiveoutofnine](https://www.fiveoutofnine.com/): inspiration, best practices, organization\n\nObviously, huge thanks and gratitude to [Will Cory](https://twitter.com/FUCORY) for the incredible work on [Tevm](https://tevm.sh/), and for the countless advice, explanations and feedback. To the maintainers and core contributors at [Wevm](https://github.com/wevm) for [Viem](https://viem.sh/), [Vocs](https://vocs.dev/) (used for the documentation), etc. To [Shazow](https://twitter.com/shazow) as well for [[WhatsABI](https://github.com/shazow/whatsabi)], and to all open-source contributors maintaining the libraries and tools we're using.\n\n## License\n\nSee [License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolareth%2Fsavvy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpolareth%2Fsavvy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpolareth%2Fsavvy/lists"}