Skip to main content

stk

stk

Async Python framework with batteries you actually need.
Auth, 2FA, WebAuthn, OAuth, WebSockets, admin dashboard, Vue 3 frontend. No build step, no third-party auth services. One codebase, you own everything. STK makes SaaS apps legible, changeable, testable, and operable by agents.

License: MIT Python 3.11+ uv

Docs · llms.txt · Tutorials


uvx --from stkit stk init myapp && cd myapp
uv run stk db upgrade       # database via Alembic
uv run stk install          # admin user
uv run stk run              # localhost:5000

Your app is its own package that composes stk, not a fork of it. Upgrading stk is a version bump.

Why stk

Most frameworks give you routing and leave the rest as homework. Auth alone eats weeks. Then you bolt on Clerk or Auth0, hand your users' credentials to a third party, and pay per-MAU for the privilege.

stk ships what actually matters:

You own your auth. Login, session management, TOTP 2FA (Google Authenticator, Authy, 1Password), WebAuthn passkeys (Touch ID, YubiKey), recovery codes, OAuth (Google, GitHub). Production code, not a tutorial. Your users' data stays on your server.

Async all the way down. Quart + async SQLAlchemy + aiosmtplib + native WebSockets. Not async bolted onto a sync framework. Real concurrency without threads, workers, or callback hell.

No JS build step. Vue 3 + Vuetify 4 loaded directly in the browser. No webpack, no vite, no node_modules, no npm. Delete your frontend toolchain. Still get a polished admin dashboard with data tables, dark mode, collapsible sidebar, 5000+ icons.

SQLite by default. Deploy anywhere. No managed database required. PostgreSQL when you need it, not when the framework demands it.

No Celery, no Redis (unless you want them). Background tasks run on asyncio. Session store works with cookies or Redis. Complexity is opt-in.

Built to be operated by agents. stk inspect reports routes, auth guards, models, and commands as JSON. stk verify and stk smoke are a real gate: lint, migration drift, and a real browser that fails on console errors and invisible text. The docs ship in the repo and the gate fails when they drift from the code.

Want payments? ReadyKit adds Stripe, multi-tenancy, and teams on top of stk.

What's included

  • Auth and security: Argon2id passwords (12 char minimum), TOTP 2FA, passkeys as first or second factor, recovery codes, Google and GitHub OAuth with PKCE and verified emails, session tracking by IP and device, account lockout, per-IP rate limits shared across workers, CSRF on every mutation. Public sign-up is off by default.
  • Admin dashboard: users, roles, and an activity audit log, with server-paginated tables and JSON APIs.
  • Real-time: authenticated, origin-checked WebSockets that push to a named user and close when the session ends.
  • Frontend: Vue 3 and Vuetify 4 with no build step, dark mode, collapsible sidebar, notifications, Tabler Icons.
  • Tooling: one CLI, stk: run, shell, new, db, doctor, verify, smoke, inspect, report, and user management.
  • Deploy: a one-command VPS script (Caddy, systemd, hardened OS) or Docker Compose with PostgreSQL, Redis, and Nginx.

Stack

Layer Tech
Runtime Python 3.11+, uv
Web Quart (async Flask)
ORM SQLAlchemy 2.0+ async
Database SQLite (default), PostgreSQL (optional)
Migrations Alembic
Auth quart-security (2FA, WebAuthn, OAuth)
Frontend Vue 3, Vuetify 4, Axios
Server Uvicorn (ASGI) behind Caddy or Nginx

Documentation

Everything else lives at docs.stk.dev, and in this repo at docs/src/content/docs/: quick start, build loop, models, frontend, authentication, configuration, CLI reference, deployment, and working with agents. Upgrade notes are in CHANGELOG.md; the production security contract is SECURITY.md.

License

MIT

Metadata

Release files for stkit 17.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for stkit 17.0.1
File Size Uploaded Provenance
stkit-17.0.1.tar.gz 1.6 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for stkit 17.0.1
File Interpreter ABI Platform
stkit-17.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 3.1 MB

Release files / stkit-17.0.1.tar.gz

Download URL stkit-17.0.1.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
172cc9dff7be6b9198c528e5c9898ff56169d2dc272493a16f5127d807a28ca9
BLAKE2b-256 checksum
How to use checksums
27813c2d3290834f0be896ebe15bad1ff60646044c7fba82ffc274e18514c6d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / stkit-17.0.1-py3-none-any.whl

Download URL stkit-17.0.1-py3-none-any.whl
Size 1.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
67ef27d119070da4394aa7757a948f77f9fa0f5349772b48ef0c1fda3a95400e
BLAKE2b-256 checksum
How to use checksums
b6a869b9d99e75a8e16ecfed2655cb734b01bbcb38e2f4ce908ff30243fae3cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for stkit 17.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page