Agents write code. The hard part is done.
Set up github.com/level09/readykit in this folder and follow its AGENTS.md.
Then build: a Projects page in each workspace, for Pro workspaces only.
Run checks.py when you're done and show me the result.
Auth, billing and multi-tenant workspaces, written and tested. Your agent builds the product on top.
Bill with Stripe.Chargebee.
Billing is where agent-written code fails quietly. ReadyKit's is already written and tested: retried and late webhooks, failed renewals, and unpaid workspaces sent to the billing portal.
Pick a provider in .env. Checkout and the customer portal work the same either way.
BILLING_PROVIDER=stripe
STRIPE_SECRET_KEY=your_secret_key
STRIPE_PRO_PRICE_ID=your_price_id
BILLING_PROVIDER=chargebee
CHARGEBEE_SITE=your-site
CHARGEBEE_API_KEY=your_api_key
What you start with.
Click through them in the live demo. It resets every hour.
What your agent runs.
-
Set up
It clones the repo and runs setup without prompts. Secrets are generated.
git clone \ https://github.com/level09/readykit cd readykit && ./setup.sh --yes -
Database
SQLite to start, or Postgres provisioned by Stripe Projects.
uv run flask create-db uv run flask install -
Billing
Give it a Stripe test key. It makes the Pro price and webhook secret.
uv run flask stripe-setup uv run flask stripe-listen -
Build
It follows AGENTS.md and runs
checks.pyafter each change.@app.get("/workspace/<int:workspace_id>/invoices/") @require_workspace_access("member") def invoices(workspace_id): invoices = Invoice.for_current_workspace() return render_template( "invoices.html", invoices=invoices )
The money paths are tested.
127 tests run in CI on Python 3.11 to 3.14, for Stripe and for Chargebee. Opt-in browser journeys drive checkout, cancellation and a failed renewal on a Stripe test clock.
Six of them, and the full result, from a run of v1.7.4 on 18 October 2026.
PASSED test_duplicate_is_acknowledged_without_processing
PASSED test_provider_failure_leaves_event_retryable
PASSED test_late_event_cannot_revoke_recovered_access
PASSED test_upgrade_with_unpaid_subscription_opens_portal
PASSED test_foreign_record_id_cannot_be_used_in_own_workspace
PASSED test_revoked_membership_blocks_existing_session
$ uv run pytest
119 passed, 8 skipped in 25.05s
Python 3.11+, uv and Git. Prefer containers? docker compose up --build.
Full setup guide
Already in the box.
AGENTS.md
One instruction file for every coding agent: the stack, the commands, the workspace rules and the checks to run before it says it is done.
Sign-in
Google and GitHub login, TOTP two-factor and passkeys, run by Flask-Security-Too inside your own app.
Workspaces
Every signup gets a personal workspace and goes straight to your app. Switching and team controls appear when they are needed.
Teams
Manage members, assign roles, and issue workspace API keys.
Activity log
Who did what, with user and workspace context, and an admin view to review it.
Admin screens
Vue and Vuetify screens for dashboards, users, profiles and settings, ready to restyle.
Background jobs
Redis and Celery wired in, with Alembic migrations as your schema grows.
Stack
Python, Flask, Vue 3 and Vuetify with no build step, SQLite or PostgreSQL, uv and Docker.
Questions.
More to ask? Join the discussion
Which coding agents does it work with?
Any agent that reads AGENTS.md, including Claude Code, Codex, Cursor and GitHub Copilot. The file covers the stack, the commands, the workspace rules and the checks to run before finishing.
Do I have to use an agent?
No. It is a regular Flask app with its conventions written down, and AGENTS.md reads just as well as a guide for people.
Can I sell what I build?
Yes. ReadyKit uses the MIT license, which permits commercial use and modification. Keep the copyright and license notice with copies of the software.
Can I switch billing providers later?
Before launch, yes: change BILLING_PROVIDER and add that provider’s keys and webhooks. After customers subscribe, moving them to the other provider is a data migration you do by hand.