Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

stelviodev/stelvio

Open more actions menu

Repository files navigation

Stelvio

PyPI Python Version License

Ship Python to AWS in minutes, not days.

Documentation - Stelvio Manifesto - Roadmap

Stelvio is an open-source framework that lets you build and deploy modern AWS applications using pure Python. Forget YAML, complex configuration, or learning new DSLs.

With the stlv CLI, you focus on your code, and Stelvio handles the infrastructure.

stlv intro video

Why Stelvio?

  • 🐍 Pure Python: Define your infrastructure with standard Python code. Use your favorite IDE, linter, and type checker.
  • 🧠 Smart Defaults: We handle the complex IAM roles, networking, and configuration so you don't have to.
  • 🔗 Automatic Permissions: Simply pass resources to your functions. Stelvio automatically configures permissions and environment variables.
  • Live Dev Mode: Run stlv dev to sync your code changes instantly. No waiting for deployments.
  • 🔧 Full Control: Logic and infrastructure in one place, with escape hatches to the underlying Pulumi resources.
  • 📖 Open Source: Built by developers for developers. Apache 2.0 licensed.

Example

Define your infrastructure and application logic in one file. Stelvio handles the wiring.

from stelvio.aws.api_gateway import Api
from stelvio.aws.cron import Cron
from stelvio.aws.dynamo_db import DynamoTable


@app.run
def run() -> None:

    todos = DynamoTable(
        "todos-table",
        fields={
            "user": "string",
            "date": "string"
        },
        sort_key="date",
        partition_key="user"
    )

    cleanup = Cron(
        "cleanup-cron",
        "rate(1 minute)",
        handler="api/handlers.cleanup",
        links=[todos]
    )

    api = Api("stlv-demo-api")
    api.route("GET", "/hello", handler="api/handlers.hello_world")
    api.route("POST", "/todos", handler="api/handlers.post_todo", links=[todos])
    api.route("GET", "/todos/{user}", handler="api/handlers.list_todos", links=[todos])

Supported Components

Stelvio provides high-level components for the most common AWS services:

Give it a try

Open in GitHub Codespaces

Quick Start

You can get up and running in less than 2 minutes.

# 1. Create a new project
uv init my-todo-api && cd my-todo-api

# 2. Add Stelvio
uv add stelvio

# 3. Initialize project structure
uv run stlv init

# 4. Deploy to AWS
uv run stlv deploy

See the Quick Start Guide for a full walkthrough.

Community & Contributing

Stelvio is open source and we welcome contributions!

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.