eth-brownie
A Python framework for Ethereum smart contract deployment, testing and interaction.
Decision gist · record as of 2026-08-14
Yes-with-conditions. Brownie is stable, well-documented, and suitable for Ethereum smart contract development if you are maintaining an existing project or learning EVM development. However, the project's stated lack of active maintenance and explicit recommendation to migrate to Ape Framework means new projects should strongly consider Ape instead. Install only if you have a specific reason to use Brownie (legacy codebase, team familiarity, or learning purposes) and are comfortable with infrequent updates.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or greater, plus an external Ethereum node (hardhat or ganache) running locally or accessible via RPC for contract deployment and testing.
- Medium install friction with 83 runtime dependencies across multiple compiled and pure-Python packages.
- The project is actively maintained (last commit 2026-08-05, release 54 days ago) and supports Python 3.10–3.14 with prebuilt wheels for major platforms.
License · maintenance · safety
MIT (permissive) — Licensed under MIT (permissive), allowing commercial and private use with minimal restrictions. No notable licensing constraints for typical development or deployment scenarios.
last release 2026-06-21 (54 days) · last repo commit 2026-08-05 · 2,723 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 98,035 downloads/mo, #13,113 on PyPI
Alternatives
Verify before relying
pip install eth-brownie
from brownie import project
p = project.load('.')
contract = p.MyContract.deploy()- Current adoption and active user base given the stated lack of active maintenance and recommendation to migrate to Ape Framework.
- Stability and compatibility of the 83 runtime dependencies in real-world projects, especially after upstream upgrades.
- Whether the medium install friction and dependency count create practical maintenance burden for new projects.
What it is and what it does
Brownie is a Python-based framework for writing, testing, and deploying smart contracts on Ethereum and EVM-compatible networks. It provides full support for Solidity (≥0.4.22) and Vyper (≥0.1.0-beta.16) contracts, integrating with pytest for unit and integration testing, hypothesis for property-based testing, and offering built-in debugging tools with Python-style tracebacks and custom error reporting. The framework includes a console for interactive project exploration and trace-based coverage evaluation.
The package depends on 83 runtime libraries spanning Ethereum utilities (eth-account, eth-abi, eth-keys), async networking (aiohttp, aiohappyeyeballs), and cryptographic primitives (ckzg, eip712). Installation is straightforward via pip or pipx, though the large dependency tree creates medium friction. Critically, the project description states Brownie is no longer actively maintained and recommends Ape Framework as an alternative for new work.
Use it for
- Write and test Solidity or Vyper smart contracts locally using pytest before deploying to mainnet or testnet.
- Debug contract interactions with Python-style tracebacks and custom error messages during development.
- Run property-based tests on contract logic using hypothesis to find edge cases and invariant violations.
- Deploy and interact with contracts programmatically via a Python console or script without manual RPC calls.
- Measure test coverage of smart contracts using trace-based analysis integrated into the test suite.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes-with-conditions.
Brownie is stable, well-documented, and suitable for Ethereum smart contract development if you are maintaining an existing project or learning EVM development. However, the project's stated lack of active maintenance and explicit recommendation to migrate to Ape Framework means new projects should strongly consider Ape instead. Install only if you have a specific reason to use Brownie (legacy codebase, team familiarity, or learning purposes) and are comfortable with infrequent updates.
Install
eth-brownie on PyPI
Before you install
Medium install friction with 83 runtime dependencies across multiple compiled and pure-Python packages. The project is actively maintained (last commit 2026-08-05, release 54 days ago) and supports Python 3.10–3.14 with prebuilt wheels for major platforms. However, the description explicitly states Brownie is no longer actively maintained and recommends Ape Framework as an alternative.
Requires Python 3.10 or greater, plus an external Ethereum node (hardhat or ganache) running locally or accessible via RPC for contract deployment and testing.
License in practice
Licensed under MIT (permissive), allowing commercial and private use with minimal restrictions. No notable licensing constraints for typical development or deployment scenarios.
Quickstart
pip install eth-brownie
from brownie import project
p = project.load('.')
contract = p.MyContract.deploy()
Verify before relying
- Current adoption and active user base given the stated lack of active maintenance and recommendation to migrate to Ape Framework.
- Stability and compatibility of the 83 runtime dependencies in real-world projects, especially after upstream upgrades.
- Whether the medium install friction and dependency count create practical maintenance burden for new projects.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release <4,>=3.10 |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 83 packagesaiohappyeyeballsaiohttpaiosignalannotated-typesasttokensasync-timeoutattrsbitarraycbor2cchecksumcertificharset-normalizerckzgcoloramacytoolzeip712eth-abieth-accounteth-eventeth-hasheth-keyfileeth-keyseth-pydantic-typeseth-rlpeth-typingeth-utilsexceptiongroupexecnetfaster-eth-abifaster-eth-utils |
| Maintenance | Actively maintained 54 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 98,035 / month, #13,113 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Software Development :: Build Tools |
Evidence: eth_brownie-1.22.2-cp310-cp310-macosx_11_0_arm64.whl; eth_brownie-1.22.2-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; eth_brownie-1.22.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; eth_brownie-1.22.2-cp310-cp310-musllinux_1_2_x86_64.whl; eth_brownie-1.22.2-cp310-cp310-win32.whl; eth_brownie-1.22.2-cp310-cp310-win_amd64.whl; eth_brownie-1.22.2-cp311-cp311-macosx_11_0_arm64.whl; eth_brownie-1.22.2-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; eth_brownie-1.22.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; eth_brownie-1.22.2-cp311-cp311-musllinux_1_2_x86_64.whl; eth_brownie-1.22.2-cp311-cp311-win32.whl; eth_brownie-1.22.2-cp311-cp311-win_amd64.whl; eth_brownie-1.22.2-cp312-cp312-macosx_11_0_arm64.whl; eth_brownie-1.22.2-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl; eth_brownie-1.22.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; eth_brownie-1.22.2-cp312-cp312-musllinux_1_2_x86_64.whl; eth_brownie-1.22.2-cp312-cp312-win32.whl; eth_brownie-1.22.2-cp312-cp312-win_amd64.whl; eth_brownie-1.22.2-cp313-cp313-macosx_11_0_arm64.whl; eth_brownie-1.22.2-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “ethereum smart contract framework”
- eth-brownieBrownie is a Python framework for developing, testing, and deploying…
- crytic-compileCrytic-compile abstracts smart contract compilation across multiple…
- vyperVyper is a Python-like programming language for writing smart…
Give your agent the search over MCP, or paste the wish link into any chat.
More Build Tools packages
Provides reusable utilities for Python packaging interoperability, including version handling, specifiers, markers, requirements, tags, and metadata parsing according to standards like PEP 440 and PEP 425.
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
pip is the standard installer for Python packages, enabling you to download and install packages from the Python Package Index and other indexes into your Python environment.
Hatchling is a standards-compliant Python build backend that handles packaging, metadata, and distribution of Python projects when configured in a project's pyproject.toml file.
Generates Python gRPC service stubs and message classes from Protocol Buffer definitions, enabling developers to build gRPC clients and servers.
pre-commit is a framework for installing and running git hooks written in any language before commits are made, automating code quality and validation checks across multi-language projects.
Install it if your team needs consistent, automated validation at commit time.
See also crytic-compile · slither-analyzer · vyper · web3 · py-evm · eth-retry · mythril · eth-typing · eth-tester · clvm