Plain
The full-stack Python framework designed for humans and agents.
Get started
mkdir my-app && cd my-app && claude "$(curl -sSf https://plainframework.com/start.md)"
Also works with Codex, Amp, OpenCode, or your agent of choice.
Why Plain?
Explicit, typed, and predictable. What's good for humans is good for agents.
Here's what Plain code looks like:
# app/users/models.py from plain import postgres from plain . postgres import types from plain . passwords . models import PasswordField @ postgres . register_model class User ( postgres . Model ): email : str = types . EmailField () password : str = PasswordField () display_name : str = types . CharField ( max_length = 100 ) is_admin : bool = types . BooleanField ( default = False ) created_at : datetime = types . DateTimeField ( auto_now_add = True ) query : postgres . QuerySet [ User ] = postgres . QuerySet () model_options = postgres . Options ( constraints = [ postgres . UniqueConstraint ( fields = [ "email" ], name = "unique_email" ), ], )
Views are class-based:
... continue reading