Mesh – a P2P Git daemon and issues and cicd

joeyguerra1 pts1 comments

mesh — git was already peer-to-peer

Git is already<br>peer-to-peer.

We just stopped using it that way.

Mesh is the coordination layer git always needed. Share code with your team —<br>no server, no account, no one's permission required.

curl -fsSL https://raw.githubusercontent.com/kaizen-hq/mesh/main/install.sh | bash<br>copy

view on GitHub

alice's machine

bob's machine

There's a gap.

On one side: git daemon. It works. Nobody uses it.<br>It's raw, manual, and assumes you already know what you're doing.

On the other side: GitHub, GitLab, Bitbucket. Powerful. But you need<br>an account. Admin rights. Sometimes a ticket filed with IT, and then you wait.

Git was designed to let any machine talk to any other machine.<br>Push, pull, clone — peer to peer, by design. Linus built it that way.

Then we spent 15 years routing everything through a central server.

That's the gap. Mesh lives in it. It's what git daemon<br>should have grown into: automatic peer discovery, signed gossip, and<br>git's own HTTP transport wired together.

We looked at Radicle.

Great project. But it looks like it's built for publishing to a public network —<br>for code that belongs to the world, discoverable by strangers.

We wanted something different: a private network for three people who<br>already know each other, already trust each other, and just need to<br>share a repo while they wait for someone in IT to approve a GitLab sub-group.

We could've spent weeks learning Radicle's trust model.<br>But we're software builders. So we built mesh instead.

The trust is already there.

Your team already knows each other. You don't need a third party<br>to sit in the middle and mediate that.

Mesh starts from that assumption. You exchange pubkeys once —<br>one mesh invite, one mesh join.<br>After that, every machine in your mesh authenticates every message<br>cryptographically. No CA. No certificate from a stranger.<br>Just your keys.

Every node keeps a full bare mirror of every repo.<br>If your laptop is off, your teammate's node still has it.<br>There's no server to go down because every node is the server.

What you get

Git sync

Repos replicate automatically across all peers over signed HTTPS. Any git client works — git push mesh main and every node updates.

Distributed CI/CD

Pipelines defined in .mesh/mesh-ci.yml. Any node can be a runner. Docker or shell jobs. Assignment, execution, and log streaming over the same gossip channel.

Issues board

A lightweight issues board per repo, synced across peers. No database. No SaaS. Drag to reorder, label to filter, markdown in the body.

Self-updating

mesh update pulls the latest release from GitHub and applies it in place. Or mesh update --from alice to get it from a peer on your LAN.

Get started in two minutes

Install

curl -fsSL https://raw.githubusercontent.com/kaizen-hq/mesh/main/install.sh | bash

Init & start

mesh init<br>mesh start

Add your repo

mesh add-repo my-app ~/src/my-app

Invite a teammate

mesh invite # prints a token<br># teammate runs:<br>mesh join

Push

git config http.https://localhost:7979.sslVerify false<br>git remote add mesh https://localhost:7979/my-app.git<br>git push mesh main

Full documentation →

mesh peer already https machine repo

Related Articles