Metadata-Version: 2.4
Name: roto-aws
Version: 0.0.1
License-File: LICENSE
Summary: An AWS wire-protocol compatible simulator written in Rust
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Issues, https://github.com/vivainio/roto/issues
Project-URL: Repository, https://github.com/vivainio/roto

# roto

An AWS simulator written in Rust: a from-scratch rewrite of [moto](https://github.com/getmoto/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](STATUS.md) for current coverage and [PLAN.md](PLAN.md) for the roadmap.

**Documentation:** [The roto book](https://vivainio.github.io/roto/) ([sources](docs/index.md)).

```sh
cargo run -p 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
```

## Documentation

```sh
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](docs/documentation.md) for details.

## Python package releases

The maturin package `roto-aws` installs the `roto-server` command. After the
first PyPI release, install it with `pip install roto-aws` or run
`uvx --from roto-aws roto-server --ephemeral`.

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`.

## License

MIT. See [LICENSE](LICENSE).

