Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Sillo

Sillo logo

Build serious Python backends with one coherent application model.

Sillo is an async Python web framework for building APIs, web applications, real-time systems, and business backends. It focuses on practical enterprise application work: routing, request validation, dependency injection, middleware, sessions, authentication helpers, records, background work, WebSockets, OpenAPI, testing, and operational structure.

Sillo is the open framework layer of a larger platform vision: a cohesive developer ecosystem for creating, operating, and scaling serious software without stitching together unrelated tools for every project.

Status

Sillo is preparing for its first alpha release: 0.0.1a1.

Use it for exploration, prototypes, early applications, and feedback. APIs may still change before a stable release.

Requirements

  • Python 3.10+
  • uv for project and dependency management

Installation

uv add sillo

For optional feature groups:

uv add "sillo[cli]"
uv add "sillo[templating]"
uv add "sillo[jwt]"
uv add "sillo[cache]"
uv add "sillo[record]"
uv add "sillo[graphql]"

For a full development setup:

uv add "sillo[all]"

Hello World

from sillo import silloApp

app = silloApp(title="My API")


@app.get("/")
async def home(request, response):
    return response.json({"message": "Hello from Sillo"})

Run it with an ASGI server:

uv add uvicorn
uv run uvicorn main:app --reload

Request Validation

Sillo validates request bodies with Pydantic through request_model.

from pydantic import BaseModel
from sillo import silloApp

app = silloApp()


class CreateUser(BaseModel):
    name: str
    email: str


@app.post("/users", request_model=CreateUser)
async def create_user(request, response, user: CreateUser):
    return response.json(user.model_dump(), status_code=201)

The validated model is also available as request.validated_data.

Dependency Injection

Use Depend to inject request-scoped dependencies into handlers.

from sillo import Depend, silloApp

app = silloApp()


async def get_current_user():
    return {"id": "user_1", "name": "Ada"}


@app.get("/me")
async def me(request, response, user=Depend(get_current_user)):
    return response.json(user)

When a dependency needs the current request:

from sillo import Depend


def auth_header(request=Depend(get_request=True)):
    return request.headers.get("Authorization")

Routing

from sillo import Router, silloApp

app = silloApp()
api = Router(prefix="/api")


@api.get("/users/{user_id:int}")
async def get_user(request, response, user_id: int):
    return response.json({"id": user_id})


app.mount_router(api)

What Sillo Provides

  • Async ASGI application core
  • HTTP routing, route groups, and mounted routers
  • Request and response helpers
  • Pydantic request validation
  • Dependency injection with nested dependencies
  • Query, header, and cookie parameter helpers
  • Middleware pipeline
  • CORS and CSRF support
  • Sessions and authentication utilities
  • API keys, JWT helpers, users, permissions, and guards
  • OpenAPI generation and interactive docs
  • File uploads, streaming responses, static files, and frontend fallback serving
  • WebSockets, consumers, channels, groups, events, and history helpers
  • Cache abstraction with memory and Redis support
  • Event system and background work primitives
  • Record layer for database-backed models, transactions, scopes, casting, and pagination
  • Mail service utilities
  • Test client utilities
  • CLI for running and inspecting applications

Platform Direction

Sillo Core is intended to become the technical foundation for a broader enterprise developer platform:

  • Miko: visual admin studio for records, workflows, and internal operations
  • Zoro: managed deployment for Sillo applications
  • Koda: server management and deployment automation for customer-controlled infrastructure
  • Nira: authentication, organisations, access control, and identity services
  • Piko: logs, queues, jobs, releases, health, and application monitoring
  • Template and integration marketplaces: reusable application foundations and verified integrations

The open-source framework should remain useful on its own. Commercial products should remove operational work, not lock normal application development behind a paywall.

Documentation

The documentation source lives in docs/docs.

Build it locally with:

cd docs/docs
bun run build

Testing

Run the core test suite with:

python3 -m pytest -q

Some optional integrations require their extras to be installed before their tests can run.

Release Principles

Sillo prioritizes:

  • clear APIs and useful error messages
  • strong defaults with replaceable internals
  • production-oriented documentation
  • compatibility, migration guidance, and honest release notes
  • security and reliability before broad platform expansion

License

BSD-3-Clause

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sillo_framework-0.0.1a12.tar.gz (3.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sillo_framework-0.0.1a12-py3-none-any.whl (838.8 kB view details)

Uploaded Python 3

File details

Details for the file sillo_framework-0.0.1a12.tar.gz.

File metadata

  • Download URL: sillo_framework-0.0.1a12.tar.gz
  • Upload date:
  • Size: 3.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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}

File hashes

Hashes for sillo_framework-0.0.1a12.tar.gz
Algorithm Hash digest
SHA256 e4c5f2e182a42a2c51b83316ad04ae4e6120f9b1ed76ea2bbb96a48df257a39b
MD5 c45ae0b39b00296b047fb6f312669ae7
BLAKE2b-256 7e727db129b1ac78a7d731059b16aa0122a7f2f4062fe75bafbc7ef737f0047b

See more details on using hashes here.

File details

Details for the file sillo_framework-0.0.1a12-py3-none-any.whl.

File metadata

  • Download URL: sillo_framework-0.0.1a12-py3-none-any.whl
  • Upload date:
  • Size: 838.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","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}

File hashes

Hashes for sillo_framework-0.0.1a12-py3-none-any.whl
Algorithm Hash digest
SHA256 e170d3e88afb71cfbfca32da063624eac1cd8a42e46de1962697f1cf84f13f03
MD5 eba5682c41eb3191e32e75d4fb8a778d
BLAKE2b-256 0ddc7028c0893d088e17b6fc0d58fcf08f10c6a9f0950e60fc8f922ab09bc741

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page