You opened the laptop to ship a feature. Three hours later you’re rolling back a migration nobody asked for, re-pinning the package the LLM “helpfully” downgraded, and explaining (again) why dropping the users table is not a reasonable bug fix.
marpy is a Python-first AI coding IDE and development platform with rails on the parts that actually hurt — your database, your dependencies, your deploy. Same speed. None of the 4am cleanup.
Every AI tool can write a Flask route. The difference is what happens when your assistant gets cornered and decides the cleanest fix is something stupid. marpy intercepts the moves that hurt and quietly does the right thing instead.
Schema changes go through versioned Alembic migrations with pre/post hooks. DROP and destructive ALTER on prod are blocked at the gate. Out-of-band DDL gets rewritten as a reviewable migration file.
Every pip install is intercepted. marpy resolves the current PyPI version and indexes the package’s real docs in the background, so the assistant writes against the API your runtime actually has — not the one it half-remembers from training.
The project terminal is shell-wrapped to the project root, so a stray rm -rf can’t reach outside. Secrets live in a managed vault and are injected as env vars at runtime, never written to files the LLM can read.
Most AI coding platforms were built for frontend workflows first. Python got added later, and it shows.
You can duct-tape Python into v0, Replit, or Lovable. It’ll look fine in the demo. Then one day the LLM gets cornered by a schema error and decides the cleanest fix is to drop your database and start fresh.
| The challenge | JS-first bolt-ons (v0/Replit) | The marpy standard |
|---|---|---|
| Database migrations | LLM hits a schema conflict, drops every table, starts over. You find out when users can’t log in. | Alembic migrations, version-controlled and guarded. DROP TABLE in production gets blocked at the gate. |
| Data persistence | Data lives in the container. Container restarts, data’s gone. | Managed MariaDB with backups and point-in-time recovery. |
| Deployments | Vibe-based “git push and pray” with no audit trail. | Date-based tags like 202603061430 that trigger containerized builds and leave a readable history. |
| Secrets management | Hardcoded keys in repos for bots, scripts, and ex-employees to discover. | Managed secrets that never live in git and are injected at runtime. |
| Python as a citizen | Second-class runtime bolted under a JS-centric control plane. | Python-native stack where Flask, FastAPI, and Django are first-class. |
Four steps. No séance required.
You start in a browser IDE that is Python-first: virtualenvs, proper dependencies, real logs, not a toy REPL. Break things fast, fix them faster, and keep your local machine out of dependency hell.
LLM copilots love a clean slate. Hit a gnarly migration and their default move is to wipe everything and try again. marpy provisions managed MariaDB with versioned migrations and guardrails, so “drop all tables” is simply not an option.
Forget the v1.2.7 fiction. marpy uses date-based tags like 202603061430 to trigger containerized builds and deployments. When someone asks what’s in production, you pull the deploy log—not a memory.
Like Vercel, but for your Python backend instead of another React landing page. We host your app, keep the processes healthy, and handle SSL, routing, and boring platform plumbing, so you can go ship something.
Deploy log
These aren’t checkbox features. They’re the defaults we wish every platform had enforced on us five years ago.
Python is the core runtime, not an afterthought. We built marpy for Flask, FastAPI, and Django apps, not as a JS-centric control plane with a Python bolt-on.
Everything is utf8mb4. Someone will sign up as 🚀🚀🚀, and your admin panel will either handle it gracefully or start throwing 500s at 2am. We prefer the first option.
Images and PDFs don’t belong in your database. Store a blob in MariaDB and your backup balloons, your restore time triples, and your DBA starts drinking earlier. marpy routes blobs to S3-style object storage and keeps your database fast.
All timestamps in UTC, always. The alternative is a daylight-saving bug where one hour of November 1st happens twice, every year, until someone files a ticket.
Structured logs, metrics, and alerts that tell you when the system is on fire—instead of waiting for a customer to email support.
Use LLMs to scaffold code, not to freelance as your DBA. marpy keeps AI-generated changes fenced behind versioned migrations and deployment workflows.
Answered without the usual runaround.
No. Vibe-coding is letting an LLM both implement and judge your backend, then deploying whatever it wrote. marpy is built with an opinionated stack and a Python-first LLM IDE.
Containers are designed to be disposable. Keeping production data there is like storing your grandmother’s jewelry in a cardboard box on the sidewalk and hoping it doesn’t rain. marpy insists on managed databases with backups and point-in-time recovery.
Yes. Let v0 do what it’s good at—fast frontends and experiments. Point your API calls at marpy and let it handle the Python runtime, MariaDB connections, migrations, and back-end deployments.
It’s containers and normal Python. That’s it. If we ever get acqui-hired by a company whose logo has a cloud in it, don’t fret. You can deploy the same containers elsewhere. Your app isn’t glued to anything proprietary.
If you’re happy with local-only scripts, your entire backend is a couple of serverless functions behind a JS framework, or you don't appreciate the elegant simplicty of Python you probably don’t need marpy.
Stop polishing the toolchain. Get your Python app into production, learn something from real users.
Already have an account? Log in