Skip to content

Install Sillo with uv and get an async Python application running, with routing, validation and the middleware stack in place from the first command.

One command puts the framework in place: routing, validation, dependency injection, the response builder, and the middleware stack. The heavier pieces (the ORM, JWT, templating, Redis) are optional extras you add when the product needs them, so the dependency tree stays proportional to what you build.

  • Python 3.10 or newer
  • Basic familiarity with async / await
Terminal window
python --version

Nothing else. These guides are written against uv, but every command below has a Poetry and a venv plus pip equivalent, so none of it depends on having uv. To install it:

Terminal window
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Terminal window
uv init my-sillo-app
cd my-sillo-app
uv add sillo-framework

You get a pyproject.toml, a .venv, and an exact uv.lock.

Confirm it worked:

Terminal window
uv run sillo --version # uv
poetry run sillo --version # Poetry
sillo --version # venv + pip, with the environment activated

Sillo is ASGI-based, so it needs a server. uvicorn is the usual choice:

Terminal window
uv add uvicorn

Create main.py:

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

Run it:

Terminal window
uvicorn main:app --reload

Open:

http://127.0.0.1:8000

You should see:

{"message": "Hello from Sillo"}

Sillo ships optional extras for integrations that need additional dependencies. Add them only when your project needs them.

Terminal window
uv add "sillo-framework[templating]"
uv add "sillo-framework[jwt]"
uv add "sillo-framework[cache]"
uv add "sillo-framework[record]"
uv add "sillo-framework[graphql]"
uv add "sillo-framework[all]" # everything

Install it into whatever the project already uses:

Terminal window
uv add sillo-framework # uv
poetry add sillo-framework # Poetry
pip install sillo-framework # venv + pip

Sillo does not care which. It is an ordinary package with a standard pyproject.toml, so it installs the same way anything else does. In a directory that has no pyproject.toml yet, run uv init or poetry init first.

The application class was renamed from silloApp to SilloApp. Classes in Python are CapWords, and the old spelling made app = silloApp() read like a function call at every entry point.

The migration is one find-and-replace:

from sillo import SilloApp
app = SilloApp(title="Projects API")

Nothing else in the constructor changed: every argument, and every method on the returned application, is the same. The only other visible difference is that str(app) now reads <SilloApp: title>, which matters if you assert on dev-server output or log lines.

Recommended, not required, and recommended strongly. It resolves and installs an order of magnitude faster than pip, produces a lockfile without a separate tool, installs the Python interpreter itself when you need a version you do not have, and runs commands inside the environment without an activate step to forget.

Poetry gives you the lockfile and the dependency groups but not the speed or the interpreter management. venv and pip give you neither, in exchange for needing nothing installed.

If your team already has a workflow, keep it. Nothing in Sillo reads a lockfile or shells out to a package manager, so the choice is yours alone.

Continue with the Introduction if you want the framework overview, or go directly to Routing to start building endpoints.