{"id":"f49a8f22-ffe8-4b91-9497-485b133f02b2","slug":"ugt","kind":"mcp","name":"ugt","summary":"You found it on GitHub. Now use it. Give your AI app any GitHub link and the job you want done, and UGT gets it running on your computer.","owner":"auscaster","repoUrl":"https://github.com/auscaster/ugt","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-10-29T06:20:18.000Z","addedAt":"2026-11-04T22:33:37.298Z","logoUrl":"https://avatars.githubusercontent.com/u/100876?u=07ae0aadbc2df917903b346e2d6af66f09796847&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","cloud-infra","memory-knowledge"],"tags":["gemini-cli-extension","ai-agents","claude-code","codex","github","local-first"],"runtime":"remote","local":false,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-11-05T20:07:46.805Z","sample":false,"url":"https://conduits.dev/tools/ugt","language":"Go","transports":["http"],"install":{"remoteUrl":"https://mcp.usegithubthing.com/mcp"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<div align=\"center\">\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"assets/ugt-lockup-white.svg\">\n  <img alt=\"ugt: Use the GitHub Thing\" src=\"assets/ugt-lockup-black.svg\" width=\"380\">\n</picture>\n\n<em>You found it on GitHub. Now use it.</em>\n\nPaste the GitHub link to the project you want to use.<br>\nUGT helps get it working on your computer and shows you how to use it again.<br>\nFree and open source. Windows, Mac and Linux.\n\n[![CI](https://img.shields.io/github/actions/workflow/status/auscaster/ugt/ci.yml?branch=main&style=flat-square&label=ci&labelColor=111&color=111)](https://github.com/auscaster/ugt/actions/workflows/ci.yml)\n[![Go Reference](https://img.shields.io/badge/go-reference-111?style=flat-square&logo=go&logoColor=white)](https://pkg.go.dev/github.com/auscaster/ugt)\n[![Release](https://img.shields.io/github/v/release/auscaster/ugt?style=flat-square&label=release&labelColor=111&color=111)](https://github.com/auscaster/ugt/releases/latest)\n[![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-111?style=flat-square)](LICENSE)\n\n[How it works](#how-it-works) · [Get started](#get-started) · [What you can do](#what-you-can-do-with-it) · [Why not just ask your agent?](#why-not-just-ask-your-agent) · [The catalogue](#the-catalogue) · [Share your recipe](#share-your-recipe) · [House rules](#house-rules)\n\n</div>\n\n<!-- demo: a 15-second recording of a real run goes here: the phrase typed into an AI app, then the result opening -->\n\n<br>\n\n## How it works\n\n1. **Start with the GitHub link.** You can also add an error you ran into or something you want to do with the project.\n2. **Follow the setup for your computer.** UGT looks for a ready setup or the project's own installer. If it needs a closer look, your AI app continues with the same link and details. A recipe is a setup someone has already checked; your agent can make one when the project has none.\n3. **Use what it made.** Open the resulting file or app. File jobs check their output, and apps keep their saved data when you stop and reopen them. If a run fails, ask for help with that run without starting the conversation over.\n4. **Share it, if you like.** Once it works, UGT can submit your recipe to the catalogue, so the next person gets it fast.\n\n## Get started\n\n[Paste your GitHub project into UGT](https://usegithubthing.com/). The link is enough. If you already tried to install it, you can include the error you saw.\n\nUGT checks for a way to use that project on your computer. If it offers **Open in UGT**, open it, choose your file if it needs one, and run it. When a file is ready, UGT shows you its folder. An app opens at its own address.\n\nIf the project needs a closer look, continue in your desktop AI app. The website carries your link and notes into the project message. If UGT needs installing, it shows how to set it up. UGT has no subscription; your AI app's own usage limits and pricing still apply.\n\n<details>\n<summary><b>Set up UGT yourself</b></summary>\n\n- **Claude Desktop:** install the UGT desktop extension for your computer. The [project page](https://usegithubthing.com/) helps you pick the download.\n- **On a Mac or Linux:** open Terminal and run `curl -fsSL https://usegithubthing.com/install | sh`.\n- **On Windows:** open PowerShell and run `irm https://usegithubthing.com/install.ps1 | iex`. Windows may ask for permission and a restart.\n\nReturn to your project when setup finishes. On an Intel Mac, start Docker Desktop, OrbStack or Docker Engine first.\n\n</details>\n\n<details>\n<summary><b>For developers</b></summary>\n<br>\n\n| Where | How | |\n| --- | --- | --- |\n| Windows | `scoop bucket add auscaster https://github.com/auscaster/scoop-bucket`, then `scoop install ugt` | Today |\n| Windows | `winget install auscaster.ugt` | Next |\n| macOS or Linux | `brew install auscaster/tap/ugt` | Today |\n| Linux | `curl -fsSL https://usegithubthing.com/install \\| sh` | Today |\n| Any MCP client | `com.usegithubthing/ugt` in the MCP Registry, or `ugt mcp` over stdio | Today |\n| Any AI app, with nothing installed | The hosted MCP server `https://mcp.usegithubthing.com/mcp`: it finds how UGT runs a project, shows what a recipe runs and reaches, and gives the line that installs UGT | Today |\n| Claude Code, Codex, Gemini CLI | UGT's plugin: `claude plugin install ugt@auscaster` after `claude plugin marketplace add auscaster/agent-plugins`, the same for Codex, or `gemini extensions install https://github.com/auscaster/ugt` | Today |\n| Your browser | A \"Use it\" button on every GitHub repository | Next |\n| From source, any OS | `go install github.com/auscaster/ugt/cmd/ugt@latest`, then `ugt setup` and `ugt connect` | Today |\n\n</details>\n\n## What you can do with it\n\nGitHub is the world's biggest shelf of free software, and most of it never reaches the people it could help, because it ships as code, not as an app. UGT turns any of it into something you can just ask for.\n\n| Ask your agent | What runs |\n| --- | --- |\n| \"Put subtitles on this interview\" | [openai/whisper](https://github.com/openai/whisper): speech to text, fully offline. [Verified recipe](https://usegithubthing.com/recipes/openai/whisper/subtitles) |\n| \"Turn my HTML into a four-second intro video\" | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes): a headless browser and ffmpeg. [Verified recipe](https://usegithubthing.com/recipes/heygen-com/hyperframes/video) |\n| \"Design a wall hook I can 3D print\" | [earthtojake/text-to-cad](https://github.com/earthtojake/text-to-cad): an industrial CAD kernel. [Verified recipe](https://usegithubthing.com/recipes/earthtojake/text-to-cad/stl) |\n| \"Save these pages as clean Markdown, on my own computer\" | [firecrawl/firecrawl](https://github.com/firecrawl/firecrawl): a five-service crawler stack. [Verified recipe](https://usegithubthing.com/recipes/firecrawl/firecrawl/markdown) |\n| \"Cut the background out of this photo\" | [danielgatis/rembg](https://github.com/danielgatis/rembg): an image segmentation model |\n| \"Convert this PDF and Word file to Markdown\" | [microsoft/markitdown](https://github.com/microsoft/markitdown): Microsoft's document converter |\n| \"Read this paragraph aloud\" | [debpalash/VoiceStudio](https://github.com/debpalash/VoiceStudio): local text to speech |\n| \"List the functions in this program\" | [NationalSecurityAgency/ghidra](https://github.com/NationalSecurityAgency/ghidra): the NSA's reverse-engineering suite, headless |\n\n<sub>A few featured examples. You never need a recipe from the catalogue: without one, your agent works the project out the first time. A recipe just makes it faster, because someone already did.</sub>\n\n## Why not just ask your agent?\n\nYour agent can read the code. It usually can't run it for you, and it starts from zero every time.\n\n- **Most of GitHub assumes Linux.** On Windows and on a Mac your agent hits a wall. UGT brings its own private Linux engine, set up in one step, on Linux too: no Docker Desktop, no account, nothing to learn. On an Intel Mac it drives the engine you already have.\n- **Proven once, quick for everyone after.** The first agent to get a project working can spend an hour building and fixing: memory limits, wrong-architecture binaries, missing system libraries, a resolver that cannot find the internet. The recipe it leaves behind turns the next person's run into a download.\n- **Proof, not \"it started\".** A container starting is not your job done. Every recipe carries a check that fails unless the output is real: subtitles that fit the recording, a video of the length you asked for, a mesh you can actually print.\n- **Your machine, your files.** Projects run in a sandbox with only the files and access their recipe declares. The catalogue reviews that access before admitting a recipe; UGT asks before a locally made recipe reaches beyond its ordinary sandbox. Cloud compute requires your agreement and a stated cost.\n\n## The catalogue\n\n**Recipes are a shortcut, never a requirement.** Each one is a project someone already got doing a job, shared so nobody has to work it out again. A recipe is a folder anyone can read, in [`recipes/`](recipes): a `compose.yaml` that holds everything that runs, and a `recipe.json` that says what it does. One project can have many recipes, one per job.\n\nBrowse them at [usegithubthing.com/recipes](https://usegithubthing.com/recipes), or read their source in [`recipes/`](recipes). Every one was verified on clean machines before it was admitted, and a new recipe works for everyone the moment it lands, with no update to UGT.\n\n<sub>Verified means every service ran as written on clean amd64 and arm64 machines and passed both checks, and both checks rejected deliberately broken outputs. A featured recipe's image is the one that was verified; any other builds on your machine from the same pinned commit and bases.</sub>\n\n<details>\n<summary><b>What's inside a recipe</b></summary>\n<br>\n\n```text\nrecipes/openai/whisper/subtitles/\n  compose.yaml    everything that runs: build, limits, mounts, network, and the four services\n  recipe.json     what it is: project, commit, task, settings, the access it needs, licence\n  Dockerfile      fetches the pinned source itself, so the build needs no clone\n  check/          the check scripts\n```\n\n| Service | Does |\n| --- | --- |\n| `task` | Your job, on your files |\n| `check` | Fails unless the job really happened, whatever your input was |\n| `sample` | Puts a known input in place |\n| `sample-check` | Fails unless the known input gave the known answer |\n\nIt is plain [Compose](https://docs.docker.com/compose/), so there is no new language to learn, and every recipe runs anywhere Compose does. The [recipe reference](skills/ugt/references/recipe.md) has the rules.\n\n</details>\n\n## Share your recipe\n\nGot a project doing something useful? Share it, so the next person gets it fast instead of working it out again.\n\nTell your AI **\"Use the GitHub Thing: share this recipe\"**, or run `ugt recipe submit`. UGT checks it runs again from scratch, makes sure nothing personal goes with it (your files, paths and keys), and opens a pull request as you. It is then verified on clean machines with no secrets available, and admitted once it passes; a maintainer reviews any recipe that reaches beyond its sandbox first.\n\n<sub><b>Coming with the UGT app.</b> Until then, from the source:</sub>\n\n```bash\ngo install github.com/auscaster/ugt/cmd/ugt@latest\nugt recipe new <owner>/<repo> <task>     # start one, or adopt the project's own Compose file\nugt recipe verify <folder>               # until it passes\nugt login                                # once: approve a code in your browser\nugt recipe submit <folder>               # opens the pull request as you\n```\n\n`ugt recipe submit --dry-run` shows exactly what would be sent first. [CONTRIBUTING.md](CONTRIBUTING.md) and the [catalogue rules](recipes/README.md) have the details.\n\n**Maintain a project?** A \"Run with UGT\" badge is on the way: put it in your README, and one click opens your project in UGT.\n\n## House rules\n\n- **Your files stay yours.** Inputs are copied in. Your home folder, keys and the container engine are never handed to a project unless its recipe says why and a maintainer reviewed it, or you agree.\n- **Run anything, hide nothing.** A recipe can need the internet, a folder, a device or more. It declares each one, and UGT refuses anything it did not declare. A maintainer reviews it before the catalogue admits it; a recipe from anywhere else asks you before it reaches your computer.\n- **Proof or it didn't happen.** No check, no success.\n- **You decide.** Installs, admin prompts, big downloads, accounts, keys and cloud compute are always your call, asked plainly before they happen.\n- **Secrets never pass through your agent.** UGT asks you for them itself, once, and they live in your system keychain.\n- **Credit travels with the code.** Every recipe records its project's licence, and files adapted from upstream keep theirs.\n- **Your files never leave your computer.** UGT asks its catalogue which recipes a project has, downloads what a recipe needs, and sends run reports only if you agree: which recipe ran and how it went, never your files, paths or output. The [privacy policy](https://usegithubthing.com/privacy) has the rest.\n\n## License\n\n[Apache-2.0](LICENSE). Each packaged project keeps its own licence. The UGT name and logo are not licensed; see [NOTICE](NOTICE). Security issues go to [SECURITY.md](SECURITY.md).\n\n<br>\n\n<div align=\"center\">\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"assets/ugt-wordmark-white.svg\">\n  <img alt=\"\" src=\"assets/ugt-wordmark-black.svg\" width=\"56\">\n</picture>\n<br>\n<sub>Made by <a href=\"https://auscaster.com\">auscaster</a></sub>\n</div>\n"}