Add an “Open in Tab Desktop” button to your GitHub repo

One click on your README gives every visitor a running copy of your project — cloned from the branch you choose into a browser-based desktop, open in a VS Code-class editor, with your dev command already running. Nothing to install, no server behind it. Paste your repository below to get the link and the badge.

Open in Tab Desktop← this is what visitors will see

Generate yours

Public repos only · showing an example until you paste one

Launch link
https://tabdesktop.com/os?clone=https%3A%2F%2Fgithub.com%2Flaravel%2Flaravel&vm=laravel
Markdown (README.md)
[![Open in Tab Desktop](https://tabdesktop.com/open-in-tab-desktop.svg)](https://tabdesktop.com/os?clone=https%3A%2F%2Fgithub.com%2Flaravel%2Flaravel&vm=laravel)
HTML
<a href="https://tabdesktop.com/os?clone=https%3A%2F%2Fgithub.com%2Flaravel%2Flaravel&vm=laravel"><img src="https://tabdesktop.com/open-in-tab-desktop.svg" alt="Open in Tab Desktop" height="28"></a>

How it works

  1. 1. Paste your repository

    Enter the public URL of your repo (GitHub, GitLab, Codeberg or any git host that serves smart HTTP).

  2. 2. Choose what happens on arrival

    Optionally pick a branch to clone and a command to run — `npm run dev`, `php artisan serve` — so the visitor lands on a running app, not just a checkout.

  3. 3. Copy the badge

    Copy the Markdown or HTML snippet below and paste it into your README, near the top where a Clone button would go.

  4. 4. Visitors click it

    The link opens Tab Desktop, clones the repository (your branch) into an isolated desktop and opens it in Tab Code with the README rendered, Harbor beside it, and your run command started in the terminal — a running app, first click.

The link is a plain URL — /os?clone=<repository>, plus &vm=<name> for an isolated desktop, &branch=<branch> to clone a branch and &run=<command> to start the app — so it works from a README, a docs site, a tweet or an issue comment. Nothing about your repository is sent anywhere: the clone happens in the visitor's browser over the standard git protocol.

Questions

Does the button work for private repositories?

No. The clone runs in the visitor's browser and speaks the git smart-HTTP protocol without their credentials, so only public repositories work. A private repo shows a clear error rather than a login prompt.

What happens after the clone?

The project opens in Tab Code — a VS Code-class editor with the file tree, an integrated terminal and the README rendered. With a run command in the link it starts right away, in that terminal, with Harbor beside it showing the server. Without one, Harbor reads the repo's package.json, composer.json, artisan or index.html and offers the dev server as one click.

Is anything installed on the visitor's machine?

Nothing. Node.js, PHP, git and the package managers run as WebAssembly inside the tab, and files live in the browser's origin-private storage. Closing the tab keeps the desktop; the visitor can delete it any time.

Why does the link open a separate desktop?

The `vm` parameter gives the clone its own isolated filesystem, so a repository a visitor did not choose themselves never lands in their main desktop. Drop the parameter if you prefer the clone to go to the main desktop.

Can I add a dev command or a branch?

Yes. `branch` clones that branch instead of the default, and `run` is typed into the project's terminal in Tab Code once the clone is open — it runs visibly, next to Harbor, which lists the server it starts. Without `run`, Harbor still reads the project's own start scripts (package.json, composer.json, artisan) and offers them as one click.

What your visitors can run