Alternative

Open source AI app builders vs closed platforms: the lock-in fight is about output, not the IDE.

If you searched this, you probably want a clean recommendation: pick the open source one. There almost isn't one. Lovable, Bolt, v0, Replit Agent, Cursor, Base44, Emergent, and mk0r are all closed-source IDEs. So is the AI app builder you were probably about to recommend in the reply guys thread. The real question, the one indie hackers actually pay for getting wrong, is whether the code that comes out the other end is yours in any meaningful sense. Here's how to evaluate that, and where mk0r sits, including where it doesn't win.

M
Matthew Diakonov
9 min read

Direct answer, verified 2026-05-13

Open source is not the answer to AI app builder lock-in in 2026, because almost every shipping product in the category is closed-source (mk0r included; github.com/m13v/appmaker returns 404 unauthenticated). What protects you is portable output: a stack you already know, file-level extraction, and the ability to run the code without the platform. mk0r generates standard Vite + React + TypeScript + Tailwind v4 projects (defined in src/core/vm-scripts.ts:1782-1796) and exposes a REST API at /api/projects/[id]/files with a CLI wrapper (mk0r cp, mk0r cat) for pulling any file out of the sandbox to your laptop.

The category is closed. Stop looking for the open one.

I checked. The AI app builders an indie hacker would actually consider in 2026 are almost entirely closed-source IDEs. Lovable, Bolt, v0, Replit Agent, Cursor Agent, Base44, Emergent, Framer AI, Softr, Glide, and Bubble all run their IDE as a hosted closed-source service. Some have public repos for SDKs or model wrappers. None of them ship the actual product you use as a forkable codebase you can run locally. There is bolt.diy as a community fork of an earlier Bolt prototype, and a fistful of MIT-licensed CLI scaffolders that generate React from a prompt, but those are hobby projects, not products you can rely on to keep your data and credits.

mk0r is in the same bucket. The repository at github.com/m13v/appmaker is private as of 2026-05-13, and there is no LICENSE file. The team has talked about opening the in-VM scripts and the CLI under MIT eventually, but neither has happened yet. Anyone telling you mk0r is open source today is wrong, including a previous version of one of our own pages that referenced an MIT LICENSE that never existed. We fixed that page; we're writing this one to set the record straight on the broader question too.

The category being closed isn't a moral failing. It's a consequence of what these products actually have to do: provision real sandboxes, broker LLM credits, sign deploys, hold customer data. None of that is free, so the IDE itself stays behind a paywall and a private repo. Pretending otherwise on a comparison page is a tell that the writer hasn't actually shipped a category product.

The lock-in fight that actually matters

If "open source the IDE" isn't real for this category, then what is? Three concrete tests, in order of how often they bite an indie hacker who is six weeks into a project they want to keep.

Stack familiarity

The generated app is React 19 + TypeScript + Vite 7 + Tailwind v4. Identical layout to `npm create vite@latest --template react-ts`. If you have written a React component this decade, you can read the output.

File extraction

The mk0r CLI ships `mk0r cp <projectId>:/app/<file> ./local` for any file in the sandbox, and `mk0r cat` for inline reads. No proprietary archive. The server endpoint is `src/app/api/projects/[id]/files/route.ts`, base64 over JSON; you can call it directly with curl + a personal API key.

Hosting independence

There is nothing mk0r-specific to run the app. Deploy to Vercel, Cloudflare Pages, Netlify, Cloud Run, S3 + CloudFront, or an old Linode. The HMR bridge is the only mk0r artifact, and the project runs fine if you delete it.

These three are the dimensions every indie hacker should be checking before they commit. Most comparison articles list "has GitHub export" as one bullet and move on. That misses the more important question: when you export, what do you get? A custom DSL that compiles into the platform's runtime is technically "exportable" and practically a trap. A vanilla Vite project is just a Vite project.

On the second test, every popular AI builder claims it. Few actually pass it cleanly. GitHub sync, when it works, is the smoothest version: a real commit history on a repo you own. When it doesn't work, you discover that the platform only syncs published builds, not the editing checkpoints, or that the secrets are not in the repo, or that the integration packages are pinned to versions the platform hosts. The mk0r answer is a CLI that reads any file in the live sandbox by absolute path, not a syncing daemon. Less elegant, harder to lose data through.

The boring stack is the feature

The scaffold mk0r writes into every fresh sandbox is in src/core/vm-scripts.ts. The relevant chunk lives at lines 1782 to 1796 and reads like this: a vite.config.ts with @vitejs/plugin-react and @tailwindcss/vite, host bound to 0.0.0.0, port 5173, allowedHosts true, HMR on the WSS port. That is the exact configuration npm create vite@latest --template react-ts produces for you on the command line, with the Tailwind plugin added.

The only mk0r-specific file in the scaffold is src/mk0r-bridge.ts, a thirty-line module that posts HMR lifecycle events to window.parent so the iframe preview can skip a hard reload when Vite repainted in place. Delete it and the app runs identically; only the preview reload speed in the hosted dashboard changes. Nothing about your code depends on it.

This is deliberate. Other AI app builders win short-term by piling on platform-bound integrations (their auth, their DB client, their forms package). It demos better in a Loom video. It locks the codebase into the platform's runtime. mk0r's bet is that you would rather inherit a boring Vite project that runs anywhere than a platform-flavored one with smoother integrations. If the bet is wrong for your use case, Lovable + Supabase or Base44 are concrete alternatives, and you should switch.

30 lines

The Vite scaffold mk0r writes into every sandbox is the verbatim output of `npm create vite@latest --template react-ts` plus the @tailwindcss/vite plugin and a 30-line HMR bridge. Defined in src/core/vm-scripts.ts:1782-1796 and visible in any active sandbox under /app.

github.com/m13v/appmaker (private), verified locally on 2026-05-13

Getting your code out, in seven commands

The portability story is a small REST API at /api/projects/[id]/files, plus the mk0rCLI that wraps it. Personal API keys live at mk0r.com/account/api-keys (one-click create, shown once). You can talk to the API with curl alone, or use the CLI wrapper for ergonomics. The whole "move my code somewhere else" loop is the same shape as scp from a remote box. Read the project list, cat the relevant files, cp the trees you want to keep, install locally.

Pulling an mk0r project to your laptop

That last block is the entire portability story for mk0r. There is no proprietary archive, no platform-only build step, no "export to ZIP" button that returns a different file tree than the live sandbox. The files on your laptop after mk0r cp are byte-for-byte the files the in-VM Vite dev server was serving. The server-side handler is src/app/api/projects/[id]/files/route.ts, which streams base64 over JSON with a 1.5 MB cap per inline read.

From there: any Vite host. Vercel via vercel deploy. Cloudflare Pages with the static output. Cloud Run with a static-site Dockerfile. Netlify drag-and-drop. An old Linode with nginx. None of those require mk0r to be alive when your users visit.

The honest comparison

A grid that gives Lovable credit where it is due. Lovable is what most people land on if they want managed convenience and are happy with a platform relationship. On the dimensions that matter for "own your output," mk0r and Lovable are both viable choices, with different bets.

FeatureClosed AI builders (Lovable, Bolt, et al.)mk0r
IDE source code public on GitHubNo (closed repo)No (closed repo, honest about it)
Generated app stackVaries; sometimes a custom DSL or platform-bound componentsVite + React + TS + Tailwind v4 (vanilla `npm create vite@latest`)
Can read every file in the projectOften only the published bundle; some offer GitHub syncYes, via `mk0r cp` / `mk0r cat` on npm CLI
Runs on your laptop without the platformDepends; closed-runtime tools fail hereYes, `npm install && npm run dev` is enough
Custom-domain deploy without the platformOften requires their hosting tierYes; pull files, deploy to Vercel / Cloudflare / Cloud Run / S3
Signup before the first buildRequired by mostAnonymous Firebase auth, six turns before sign-in
Programmatic API accessMixed; some have it, some do notREST API + CLI wrapper, personal API keys at mk0r.com/account/api-keys

Verified against public docs and product behavior on 2026-05-13. Closed-platform behaviors generalize across most of the category; check the specific tool you are evaluating.

Counterargument: why GitHub sync is still a real edge for Lovable

The honest version of this page admits where the closed-IDE-with-portable-output framing has a weak spot. Lovable's native GitHub sync is genuinely smoother than mk0r's "run cp in a shell" story. If you are the kind of indie hacker who wants every edit to flow into a real Git history without thinking about it, Lovable wins on that ergonomic axis today. mk0r's answer is "script it," which is a different tradeoff (you control the commit cadence, but you have to set it up).

Two reasons to still prefer mk0r's approach. First, file-level access via mk0r cat <projectId>:/app/<any-path>is a superset of GitHub sync. You can read non-tracked files, secrets, build artifacts, log files, anything in the sandbox. Lovable's sync only sees what they decide to put in your repo. Second, the files you pull are the same files the live preview is running. There is no "published build" layer between your editor and the artifact. When Lovable's sync misses an edit (it has, ask anyone who has used it past the first hour), you discover the gap in production.

So: if GitHub sync is your day-one must-have, take Lovable. If you want raw file access to the actual sandbox and are fine running a sync script you wrote in twenty minutes, take mk0r. Either is defensible; the wrong answer is the AI app builder whose "export" only ships a published bundle.

Where mk0r's closed-IDE side still locks you in

Three places this framing breaks. Naming them so you can decide before you spend the next month inside.

  • The hosted preview URL. https://<vmId>.mk0r.com proxies to the in-VM Vite dev server. It is great for sharing a phone link to a friend mid-build. It is not a deploy target. If your sandbox sleeps or your subscription lapses, the URL stops responding. The fix is to pull files and deploy them somewhere stable. That is a real workflow, not a one-click button.
  • Custom-domain deploys. Today the deploy-to-custom-domain path in src/app/api/publish/route.ts is a manual notification: it sends an email to the team behind the product, gated behind mk0r Pro. Self-serve domain deploys are not live yet. If you need an automated deploy pipeline from inside the IDE, mk0r is not the right tool today.
  • Native GitHub sync. As above. The CLI gives you a sync primitive; there is no "connect to GitHub" toggle in the dashboard. If the difference matters to you, that is a real con and Lovable is the cleaner pick.

Want to see the file extraction live?

Twenty minutes with the team. We open a fresh project on mk0r.com, build something, then pull every file to a laptop with the CLI in real time. You can ask everything closed-source you want about the IDE.

The take, in one paragraph

If you are an indie hacker afraid of AI app builder lock-in, stop looking for the open-source IDE. There almost isn't one. Pick the closed-source tool that is the most careful about the output it generates. Read what stack the generated app is in. Check if there is a way to read every file in the project. Verify that the code runs without the platform's runtime. mk0r's pitch is to be honest about being closed-source upstream and then go aggressively boring on the downstream: vanilla Vite, vanilla React, vanilla TS, vanilla Tailwind, an npm CLI that reads any file. If you ever decide to leave, the leaving takes twenty minutes and one bash loop. That is the form of trust that actually holds.

Try the boring stack. Build something in ten minutes, then mk0r cp it to your laptop and host it wherever you want.

Open mk0r

No signup for the first six turns. CLI on npm whenever you want the files.

Frequently asked questions

Is mk0r itself open source?

No. As of 2026-05-13 the github.com/m13v/appmaker repository is private and has no LICENSE file. The team has talked publicly about opening parts of it (the in-VM bridge, the Vite scaffold, the CLI), but the IDE you use on mk0r.com is closed-source, the same way Lovable, Bolt, v0, Replit Agent, and Cursor are. Pretending otherwise on this page would be dishonest. What is different about mk0r is the output side, not the IDE side: the code generated for you lives in a standard Vite + React + TypeScript + Tailwind project that runs on any machine with Node, and the mk0r CLI on npm gives you full file-level access to it.

Which AI app builders are actually open source in 2026?

Almost none of the well-known ones. Lovable, Bolt, v0, Replit Agent, Cursor, Base44, Emergent, Framer AI, Softr, Glide, Bubble: all closed-source IDEs. The closest things to genuinely open source app builders are projects like bolt.diy (a community fork of an earlier Bolt prototype on GitHub) and a handful of LLM-driven scaffolders shipped as MIT-licensed CLI tools. Most never become production-grade products people actually ship with, because running an AI app builder requires sandboxes, billing, model credits, and an ops surface that hobby projects rarely sustain. Open source the IDE is not really the live question in this category.

If everyone is closed-source, how do I avoid lock-in?

Watch the output, not the IDE. Three concrete dimensions: (1) Is the generated code in a stack you already know, or is it in some proprietary DSL? (2) Can you extract every file in the project, not just the published bundle? (3) Will the code run on its own when you do, without the platform's runtime? Lovable scores well on (1) and (2) (real Git repo, GitHub sync). Bolt is similar. Base44 is opinionated and harder to leave cleanly. mk0r's bet is to be the boringest possible on (1): Vite + React + TS + Tailwind v4, exactly what `npm create vite@latest --template react-ts` gives you, plus a Tailwind plugin and a thirty-line HMR bridge.

How do I get the code out of an mk0r project?

Two paths today. The REST API at `/api/projects/[id]/files` accepts an `Authorization: Bearer <api-key>` header and returns any file from the sandbox as base64 over JSON (capped at 1.5 MB inline). You can call it with `curl` and pipe `| base64 -d` to your local disk. The mk0r CLI is a thin wrapper: `mk0r cp <projectId>:/app/src/App.tsx ./App.tsx` and `mk0r cat <projectId>:/app/package.json`. There is no proprietary archive format. The files in /app are the files in your favorite local Vite project, byte-for-byte. The server-side handler is `src/app/api/projects/[id]/files/route.ts`, and the CLI source is in `cli/src/commands/cp.js` and `cli/src/commands/cat.js`. Personal API keys are issued at mk0r.com/account/api-keys.

What stack does the generated app run on?

Vite 7, React 19, TypeScript, Tailwind CSS v4. The scaffold mk0r writes into every sandbox is defined in `src/core/vm-scripts.ts:1782-1796`. It is the same layout `npm create vite@latest --template react-ts` produces, plus `@tailwindcss/vite` plugin and a small HMR bridge in `src/mk0r-bridge.ts` so the iframe preview can tell the host page when HMR repainted (it skips a hard iframe reload if it did). Nothing in the scaffold is mk0r-proprietary. If you delete the bridge file, the project still runs.

Where can mk0r still lock me in, then?

Two real places. (1) The hosted preview URL: `https://<vmId>.mk0r.com` proxies to the in-VM Vite server. If you stop paying or your sandbox sleeps, that URL stops responding. The fix is to deploy the code yourself (Vercel, Cloudflare Pages, Netlify, Cloud Run, a static export to S3, anywhere a Vite app builds) once you have pulled the files via `mk0r cp`. (2) Custom domain deploys: today, custom-domain deploys go through a manual notification flow gated behind mk0r Pro (`src/app/api/publish/route.ts:147` sends an email to i@m13v.com). Self-serve domain deploys are not live yet. So the IDE and the preview hosting are closed. The artifact is not.

Is GitHub sync available, like Lovable has?

Not in the dashboard today. The CLI's `mk0r cp` lets you script a sync to a local repo, then `git add && git commit && git push` from your machine, which is the same shape as Lovable's GitHub integration but inverted (you initiate the push instead of the platform). Native GitHub sync is on the roadmap but not in production as of this page's publish date. If GitHub sync is non-negotiable for you, Lovable today has the smoother button. If you are happy with a small bash loop, mk0r covers the use case with two commands.

Why ship a comparison page that admits mk0r is closed-source?

Because the readers searching for this topic are not naive about how this category works in 2026. Pretending mk0r is open source when github.com/m13v/appmaker returns 404 unauthenticated would fail in the first 30 seconds and burn trust. The honest pitch is the one that holds up: the IDE is closed (like everyone else's), the output is deliberately built to be portable, and the CLI is the proof. If you find a closed-source builder that is more careful about its output stack than mk0r is, you should probably use that one. The comparison is real.

What changes if mk0r actually open-sources the IDE later?

Not much for the lock-in question. Open-sourcing `src/components/auth-provider.tsx` or `src/core/vm-scripts.ts` does not change whether your generated app runs on your laptop. It changes whether you, or a third party, could self-host the mk0r IDE itself, which is a different problem (you would need to provision E2B sandboxes, Firebase, Stripe, Anthropic API keys, and a domain map). Open-sourcing the IDE is a transparency and community signal more than a portability one. The team has said it is interested in releasing the in-VM scripts and the CLI as MIT, which would let people fork the agent loop. That work is not done yet.

Best honest recommendation for an indie hacker afraid of lock-in?

Build the first prototype somewhere with zero friction (mk0r, because no signup), evaluate whether the idea has legs in an hour. If it does, decide which of the three lock-in dimensions matters most for your project. If you need persistent workspaces and GitHub sync from day one, move to Lovable. If you need a real database wired up by the platform, Base44 or Lovable + Supabase. If you want to keep iterating cheaply on the prompt and own the output, stay on mk0r and ship the files via `mk0r cp` to wherever you actually host. The category is closed-source. You make peace with that by holding onto the artifact.

Adjacent reading on this site

mk0r.AI app builder
© 2026 mk0r. All rights reserved.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.