stk/
agent-operable · python

The agent-operable
SaaS framework
for Python.

stk is a lean Python SaaS framework built for the new AI cost curve. Generation is cheap now; verification, security, judgment, and product taste are the bottleneck. stk gives agents a secure app surface to build on, then makes that surface easier to inspect, verify, review, and ship.

idea → scoped plan → inspect → verify → ship.
stk obsidian robotic greyhound
~/stk
# clone, set up, run — under a minute
$ git clone https://github.com/level09/stk.git && cd stk
$ ./setup.sh
$ uv run quart create-db && uv run quart run
→ running on localhost:5000 ✓
// agent-operable

Built for the new
cost curve.

AI made scaffolding, refactoring, and documentation cheap. It did not make security, review, or product judgment cheap. stk is shaped around that shifted center of gravity.

01

Price the AI curve correctly

stk assumes ideas, scaffolds, refactors, and docs are cheaper than before. It optimizes the expensive part: turning output into a secure, reviewed app you can trust.

idea
→ scoped plan
→ app surface
→ inspect · verify · review · ship
02

Small commands, real boundaries

The agent should not infer everything from random files. stk exposes boring, inspectable facts about the app and a verification gate before you trust the result.

$ uv run quart inspect routes --json
$ uv run quart verify
$ uv run quart report
03

No JavaScript build step

The frontend runs on Vue 3, loaded directly in the browser. There's no separate JavaScript build to install or maintain, so the agent edits plain HTML templates instead of wrestling a toolchain.

# no build, no install step
templates/index.html  → Vue 3 from a CDN
04

The hard parts are already built

User accounts, the admin dashboard, the async database layer, realtime, and migrations already exist and are tested, so the agent spends its time on your product instead of rebuilding the basics.

auth · admin · async-db · realtime
migrations · sessions · rbac · audit-log
// fewer parts to trust

Less to install. Less to break. Less to secure.

1
language to review

Your dependencies are Python only — one list to read, pin, and update, instead of two stacks to keep current.

0
outside services for sign-in

User accounts and passwords stay in your own database. No third party holds them, and there's no per-user fee to log people in.

0
JavaScript build tools

Because the frontend runs in the browser, it doesn't pull in the hundreds of small packages a typical web build depends on.

// in the box

Everything a SaaS needs, already wired.

Own your auth

Registration, login, recovery, and server-side sessions, plus TOTP 2FA, WebAuthn passkeys (Touch ID, YubiKey), OAuth with account linking, recovery codes, account lockout, and rate limiting.

2FA · TOTP WebAuthn OAuth PBKDF2-SHA512

Async all the way down

Quart, async SQLAlchemy, aiosmtplib, and native WebSockets. Real concurrency, not async bolted onto a sync core.

Admin dashboard

User CRUD, role-based access, an activity audit log, paginated tables with a JSON API, and realtime updates over WebSocket.

SQLite → Postgres

SQLite by default so you deploy anywhere. Drop in PostgreSQL when you need it. Alembic migrations included.

No-build UI

Vue 3 + Vuetify 3 in the browser with 7,000+ MDI icons. Edit a template, refresh, done.

// quick start

Running in under a minute.

Five commands, zero configuration. Need the full stack? docker compose up brings PostgreSQL, Redis, and Nginx with it.

setup.sh
# 1 — clone
$ git clone https://github.com/level09/stk.git && cd stk
# 2 — deps + secure .env
$ ./setup.sh
# 3 — database + admin user
$ uv run quart create-db && uv run quart install
# 4 — launch
$ uv run quart run
→ running on localhost:5000 ✓
// deploy

Ship it three ways.

Ignite

One command to a fresh VPS with automatic SSL via Caddy.

./ignite deploy
Docker

Full stack in containers: PostgreSQL, Redis, and Nginx, production-ready.

docker compose up -d
Manual

Plain ASGI: Uvicorn behind Nginx or Caddy, managed by systemd.

uvicorn run:app
// need payments?

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

readykit.dev →