Move your open-source Wren project to the cloud over plain git Wren launched Git Sync, a feature that moves an open-source Wren project's MDL context model and knowledge base into Wren Cloud as plain YAML and Markdown files in a git repository the user owns, authenticated with tokens that expire in 600 seconds. The company said users keep working with ordinary git push and git pull after a one-time bind, and that no reusable git credential is stored on the machine or sent over the wire. Wren positions the git-backed semantic layer as a way to avoid vendor lock-in, since the model and knowledge remain readable, diffable, and portable via git clone on GitHub, GitLab, Bitbucket, or any git remote. The Wren Journal /blog Move your open-source Wren project to the cloud over plain git Wren Git Sync syncs your open-source AI context layer as plain YAML and Markdown in a Git repo you own, authenticated with tokens that expire in 600 seconds. Jasmine Nguyen Updated: Sep 11, 2026 Published: Sep 11, 2026 What is Git Sync? Git Sync moves your open-source Wren project, the MDL context model and the knowledge that makes answers correct, into Wren Cloud as plain YAML and Markdown files in a git repository you own. You keep authoring with ordinary git push and git pull , and every operation authenticates with a token that expires in ten minutes, so no reusable git credential is ever stored on the machine or sent over the wire. Your context model and knowledge move to Wren Cloud as plain files in a git repo you own. After a one-time bind, you keep using the git you already know, and every push authenticates with a token that dies in ten minutes. What you get You built a Wren project in open source: models, an MDL context layer, and the knowledge that makes answers correct: glossary terms, metric definitions, business rules, NL→SQL pairs. Moving it to the cloud does three things: - It becomes queryable. Once the project lands, a deploy step turns your model into something the cloud can serve queries against. - You keep using plain git. There is no wren push , no wren diff , nothing new to learn. You bind the directory once; after that, git push and git pull do exactly what they always have. - Your knowledge stays yours. Everything syncs as plain, open files in a repository you control: the same semantic-layer-as-code you already version. More on that next; it's the part most platforms get wrong. That's the whole experience. The rest of this post is why it works the way it does, for the people who want to know before they trust it. Why a git-backed semantic layer prevents vendor lock-in Most AI-BI platforms keep your semantic model, and everything the agent learns on top of it, inside their own database. It works fine until the day you want it somewhere else: there's no clean way to export it, diff it, or take it with you. The logic your team spent months encoding is real intellectual property, and it's sitting in a black box you don't hold the keys to. Wren takes the opposite position. Git Sync writes your model and knowledge to your own git repository as plain, open files: the MDL context layer as YAML, and the knowledge base as Markdown and YAML in a committed knowledge/ tree. Because it's open-source MDL in plain YAML and Markdown on standard git, there is nothing proprietary between you and your own work. You can read it, review it in a pull request, diff two versions of a metric, feed it to another tool, or clone the whole thing and walk. It works with GitHub, GitLab, Bitbucket, or any git remote you already run. Wren Cloud is where your model becomes queryable and collaborative , but it was never where your knowledge is trapped . It was always yours, the same stance we took when we rebuilt Wren AI around an open-source AI context layer https://www.getwren.ai/post/genbi-for-ai-agents-open-context-layer : the value should sit in files you hold, not a vendor's database. Open repo vs. proprietary storage, at a glance | Dimension | Proprietary database storage | Wren Git Sync open repo | |---|---|---| | Format | Vendor's internal schema | Open MDL as YAML + knowledge as Markdown | | Portability | Export path is vendor-defined, often none | git clone and walk, any time | | Version history | Whatever the UI chooses to surface | Full git history: every commit, author, and diff | | PR review workflow | Not available | Standard pull requests on GitHub / GitLab / Bitbucket | | Diffing changes | Screenshot comparison | git diff two versions of a metric before you deploy | | Backup custody | Held by the vendor | In every clone your team already holds | This is what teams mean by CI/CD for BI : metric changes arrive as commits, get reviewed as pull requests, and promote from staging to production the same way application code does. It's also why "owning the meter" matters beyond this one feature. See The Genie Meter Is On https://www.getwren.ai/post/genie-meter-is-on-roi-of-owning-your-genbi for the broader argument on why the ROI of GenBI comes down to what you actually own. How Git Sync works: repository structure & file types Git Sync writes the standard Wren project layout https://docs.getwren.ai/oss/guides/manage project project-layout into your repo. The context model is YAML; the knowledge base is a committed folder of plain files: A couple of things worth knowing about the formats: - The source of truth is YAML, not JSON. Your models, relationships, and cubes all live as .yml . The only JSON in a Wren project is target/mdl.json , the compiled MDL that wren context build produces background on how we designed the engine that compiles it https://www.getwren.ai/post/how-we-design-our-semantic-engine-for-llms-the-backbone-of-the-semantic-layer-for-llm-architecture . It's build output, it's gitignore-able, and you don't commit it. What syncs is the human-readable YAML your team actually edits. - Knowledge is plain and reviewable. Glossary terms, metric definitions, business rules, and NL→SQL pairs are stored as Markdown and YAML under knowledge/ , so a change to how a metric is defined shows up as a readable diff in a pull request, not an opaque row in someone else's database. Why Git Sync runs over plain git Many of our customers come to us after running open source first. The cloud plan adds managed hosting, collaboration, and the hardening that makes a deployment production-ready, but the jump from open source shouldn't cost you anything you already built, and it shouldn't ask you to learn a new way to work. Git is how we keep that promise: it's the version control your team already uses, and it makes your model portable by default. Getting a local Wren project onto the cloud means talking to a git server, and a git server needs a credential to know who you are. That sounds trivial until you look at what the obvious options leave lying around. Two of the credentials in our system are genuinely dangerous if they leak: - The org key osk- is valid across every project in your organization. - The project key sk- unlocks a whole project. If either ends up in a file, a URL, or an OS keychain in reusable form, the blast radius is large and the exposure lasts until a human happens to notice. A personal access token pasted into a remote URL, or a long-lived secret cached by a credential helper, is exactly this failure mode: the credential that authenticates you is also the one an attacker walks away with. So the requirement we set ourselves was narrow and load-bearing: Let git authenticate on every push and pull, without ever putting a long-lived, reusable credential on the wire or leaving one cached on the machine. That single commitment forces most of the design. The durable key has to live somewhere the machinery needs it , but it must never be the thing git carries. So the durable key sits on disk locked down, and what git actually presents on each operation is a freshly minted token that dies in 600 seconds. A leak of that token is worth ten minutes and nothing else. There's a second principle underneath the first: don't wrap git that the server doesn't need. Once a directory is bound to a cloud project, we hand the job straight back to native git. The server already enforces every bit of authentication and authorization; a wren push wrapper would add nothing except a second code path to keep honest forever. Bind the directory, then get out of the way. Getting your project onto the cloud There are four commands that matter, and which one you reach for depends entirely on whether the cloud project already exists. - wren cloud create : no cloud project yet. Create it, connect a data source, mint a project key, configure git, bind the directory, and push. - wren cloud auth add --project