Smyth
Smyth is a tool designed to enhance your AWS Lambda development experience by mocking an AWS Lambda environment on your local machine. It is a pure Python tool that allows for easy customization and state persistence, making your Lambda development more efficient and developer-friendly.
Features
- Pure Python: Entirely written in Python, allowing flexibility to tailor it to your specific requirements.
- Customizability: Modify both the
eventandcontextdata structures as needed. - State Persistence: Simulates both cold and warm starts, retaining state across invocations, mimicking actual AWS Lambda behavior.
- Efficiency: Streamlined and efficient, relying solely on Python for code execution.
- Inspired by Serverless Framework: Designed with insights from the Serverless framework, effectively managing serverless applications.
- Developer-Friendly: Integrates seamlessly with common development tools and practices, such as PDB, iPDB, VSCode debugging, and .env file support.
Installation
Install Smyth as a development dependency using Poetry or pip:
Poetry
poetry add --group dev smyth
pip
pip install smyth
Define the following settings in your Lambda project's pyproject.toml file:
[tool.smyth]
host = "0.0.0.0"
port = 8080
[tool.smyth.handlers.saleor_handler]
handler_path = "my_project.handlers.saleor.handler.saleor_http_handler"
url_path = "/saleor/{path:path}"
Run Smyth with:
python -m smyth
Working with Docker
Assuming you have this already installed by Poetry you can use the Dockerfile.example and docker-compose.example.yml files from this repository to get started.
Working with VS Code
To utilize the VS Code debugger with the Smyth tool, you can set up your launch.json configuration file as follows. This setup will enable you to debug your Lambda functions directly within VS Code, providing a seamless development experience.
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Module",
"type": "debugpy",
"request": "launch",
"module": "smyth",
"args": ["run"],
}
]
}
Caveats
The combination of Uvicorn reload process and HTTP server process with what is being done with the Lambda processes is tricky. If a Lambda process is doing something and the HTTP server is killed in the wrong moment it's likely going to bork your terminal. This is not solved yet. It's best to use in a Docker container or have the ability to kill -9 {PID of the Uvicorn reload process} at hand.
Name
This name blends "Smith" (as in a blacksmith, someone who works in a forge) with "Py" for Python, altering the spelling to "Smyth". Blacksmiths are craftsmen who work with metal in a forge, shaping it into desired forms. Similarly, "Smyth" suggests a tool that helps developers craft and shape their serverless projects with the precision and skill of a smith, but in the realm of Python programming. This name retains the essence of craftsmanship and transformation inherent in a forge while being associated with Python.
Crafted with ❤️ by Mirumee Software hello@mirumee.com
Release files for smyth 0.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| smyth-0.7.1.tar.gz | 45.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| smyth-0.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.7 kB
Release files / smyth-0.7.1.tar.gz
| Download URL | smyth-0.7.1.tar.gz |
|---|---|
| Size | 45.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6cd052221a9cb05b6df9ceedd0e2dc9bd407479cf01c6a2965641e266eece778
|
|
BLAKE2b-256 checksum How to use checksums |
8be92837d02c2a76b6905b84ce89ca092cf9ea93be053b019bdcd1a93b599037
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 24, 2026.
Transparency logRelease files / smyth-0.7.1-py3-none-any.whl
| Download URL | smyth-0.7.1-py3-none-any.whl |
|---|---|
| Size | 20.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
85575e71a2e76e0c2cdd4f3810c29be04fd7f23555eefcef931b0867d95b98da
|
|
BLAKE2b-256 checksum How to use checksums |
8b25ae0a489d5ff58178d26b93ab6593271ff4b2d73f43456784efa406662879
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 24, 2026.
Transparency log