Docs / Start / On your server
On your server
MarkdownOpen in ClaudeOpen in ChatGPT
At the end, a runner works on a Linux machine of yours, your team opens it from the portal, and Slack is connected if you want it.
- Time
30 minutes in one sitting.
- You need
- Your Loopgate sign-in as an org owner or admin
- A Linux machine with Docker, or an account on AWS, Google Cloud, Azure or a VPS
- A GitHub account with access to your repository
- A ChatGPT or Claude plan you already pay for
- A Slack admin, for step 5
Set this up with your agent
Copy this to a coding agent on your laptop. It runs the commands on your server and checks each step with you; what you sign in to, press or paste stays yours.
This is for a coding agent that can run commands on my laptop (Claude Code, Codex, Cursor), not a chat website.
Help me set up Loopgate's runner, one step at a time, following https://loopgate.dev/docs/server.md and the pages it links to, each beside it ending in .md.
Ask me which Linux server with Docker it runs on: one of mine, or a new one on AWS, Azure, Google Cloud or a VPS, whose page you walk me through.
Over SSH, check that the box answers `docker compose version`.
I press Add a runner on the portal's Devices page and paste you its line; its token works once, for an hour. Run it on the box over SSH.
Then read `cd ~/loopgate && docker compose logs runner` and tell me when it says `Registered as` and `Runner ready at`.
Then walk me through the runner's page: engines, GitHub and a workspace (sign-in.md), then Slack (slack-connect.md).
These are mine: tell me when it is my turn, wait for me, and never ask me to type them into this chat. Signing in to anything (the portal, a cloud console, the runner's page, Slack, GitHub), pressing Add a runner, every token and password, my AI subscription's device code, and making the Slack app.Steps
Sign in to the portal at app.loopgate.dev.
You should see: your org's pages, with Devices among them. A new org starts a fourteen-day trial for five seats.
Pick a Linux machine with Docker: one of yours, or a new one on AWS, Google Cloud, Azure or a VPS, the cheapest with the fewest screens.
You should see:
docker compose versionanswering on it.On Devices, press Add a runner and paste its one line on the machine: Any Linux box has every step. The line installs the runner, signs it in to your org and gives it an address.
You should see:
Registered asandRunner ready atindocker compose logs runner, and the runner under Runners on Devices.Open the runner from Devices, then sign in your engines, set GitHub and add a workspace: Engines, GitHub and a repository.
You should see: an engine Ready on Settings → Engines and your repository in the sidebar.
Connect Slack on Settings → Slack, if you want it: Connect Slack. Then your team says tasks there: From Slack.
You should see:
Connected to <workspace>on the page.
The runner's first address ends trycloudflare.com and changes when the box restarts; Open on Devices always uses the current one. For an address that stays: Cloudflare Tunnel, open from anywhere, or Tailscale, open only to your team's laptops.
What is yours
- The machine and the code. Your repository, the agents' changes, what they were told and said stay on it. The pull request goes from it to your GitHub.
- The sign-ins. The agents use the ChatGPT or Claude plan you already have, signed in on the machine. No API key to buy, none to give us.
- The switch. Revoke the runner on Devices and within a minute nobody reaches it.
What Loopgate's servers receive
A heartbeat, your team's member list, and one line per finished run: who, when, how it ended, what it cost. Never code, diffs, prompts, transcripts or the task: What leaves your box.
Good to know
- Anyone in your org opens the runner from Devices and reads the same runs: Share a run.
- Every file and line, set up by hand: By hand. Keeping it running: Updates and backups.
If something is off
- The script says
The runner did not register within two minutes.The lineThe install token was refused: …under it says why; a token works once, for an hour. Press Add a runner again and paste the new line. - Open on Devices does not load the runner. Read
docker compose logs runneron the machine for its current address; a quick tunnel's address changes on restart.