roto
An AWS simulator written in Rust: a from-scratch rewrite of moto's server mode. One static binary, AWS wire-protocol compatible, persistent by default (SQLite + real-filesystem S3).
Status: under active development. See STATUS.md for current coverage and PLAN.md for the roadmap.
Documentation: The roto book (sources).
uv tool install roto-aws
roto-server --port 5070 # persistent: ./roto-data ; add --ephemeral for in-memory
aws --endpoint-url http://localhost:5070 sts get-caller-identity
scripts/run-moto-tests.sh test_sts # moto's own tests, run against roto
Lambda functions can execute local commands or POST events to an HTTP API. Configure bindings
with --lambda-executors; see the runnable example and contracts.
S3 bucket notifications invoke those same executors.
Documentation
python3 -m venv .venv-docs
.venv-docs/bin/python -m pip install -r requirements-docs.txt
.venv-docs/bin/zensical serve
GitHub Actions builds the book on pull requests and deploys main to GitHub Pages.
Set the repository's Pages source to GitHub Actions. See
the documentation guide for details.
Python package releases
Install with uv tool install roto-aws; the package provides the roto-server
command. Upgrade with uv tool upgrade roto-aws. For development from source,
run cargo run -p roto-server -- --port 5070.
Push a Cargo-compatible version tag such as v0.0.1 to trigger
.github/workflows/release.yml. The shared workflow sets the workspace version
from the tag, builds Linux x64/ARM64, Windows x64, macOS Intel/ARM64 wheels and a
source distribution, then the local publishing job uploads them to PyPI.
The shared components are pinned to a commit in vivainio/actions.
Before the first release, create the GitHub environment pypi and configure a
PyPI Trusted Publisher (or pending publisher for a new project) with:
- Project:
roto-aws - Owner:
vivainio - Repository:
roto - Workflow filename:
release.yml - Environment:
pypi
Release tags should point to commits that pass the existing CI checks.
Build locally with uvx maturin build --release --locked --out dist or
uvx maturin sdist --out dist.
To retry uploading already-built distributions, run the release workflow
manually and provide the original release run ID in artifact-run-id. This
skips rebuilding and publishes that run's artifacts. Verify the chosen run
belongs to the release you intend to publish.
License
MIT. See LICENSE.
Metadata
Release files for roto-aws 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| roto_aws-0.0.2.tar.gz | 417.4 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| roto_aws-0.0.2-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| roto_aws-0.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| roto_aws-0.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| roto_aws-0.0.2-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| roto_aws-0.0.2-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 33.9 MB
Release files / roto_aws-0.0.2.tar.gz
| Download URL | roto_aws-0.0.2.tar.gz |
|---|---|
| Size | 417.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0c53b709b5385af7d28b503c74c3db1a7a034e10e57edf382a521c1f07d395c
|
|
BLAKE2b-256 checksum How to use checksums |
aacd4a86841b3d96dce298fc4854d0e19628355e59deeaa4a27dc2b51fd47bf6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / roto_aws-0.0.2-py3-none-win_amd64.whl
| Download URL | roto_aws-0.0.2-py3-none-win_amd64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4054d24b80bbd2ea7d6ad34b43e54e428152bd8ca1a6a97d152982941000ab16
|
|
BLAKE2b-256 checksum How to use checksums |
852610359f5a2fc0bbafa095bed4755085c5187e8c46b6f7db9b2a4a370f5e16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / roto_aws-0.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | roto_aws-0.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
e9e67adb96aec9a9267ac6bea6028183f2755e880c9e2c8baa9e55d3cdd70434
|
|
BLAKE2b-256 checksum How to use checksums |
6dfcc1abf4d22308bff2c482c609c6f4745beec8a71702f41b1d9c62f1769327
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / roto_aws-0.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | roto_aws-0.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
e2e52f2980a1d56c9a18bb2feb5efe5bdb108458d6b70c83232f275d428066f4
|
|
BLAKE2b-256 checksum How to use checksums |
cdf08d62d81d8d77d616612b99f5ed86226033a289e9ba0a448ea6da0bc5d734
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / roto_aws-0.0.2-py3-none-macosx_11_0_arm64.whl
| Download URL | roto_aws-0.0.2-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.5 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
283f36e833d2f044c32f08b7c00548933c054d5c3f5281fe4c60014269f6622f
|
|
BLAKE2b-256 checksum How to use checksums |
96e5836cc112db5301a0fe40cc8402fefb59194f4fd6db30137ce9dbf28fe4d6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / roto_aws-0.0.2-py3-none-macosx_10_12_x86_64.whl
| Download URL | roto_aws-0.0.2-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ad325247a5396313886339478a8d4529b1050ff9d93506035607ff62ff0cc35f
|
|
BLAKE2b-256 checksum How to use checksums |
ac578e4df7e8a03a7dbea2efa12720b714844be640704bda64a8601b966936fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|