repolith landing: hero, demo GIF, dogfood stats
Browse files- .gitattributes +1 -0
- README.md +21 -3
- demo.gif +3 -0
- index.html +94 -17
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
demo.gif filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,10 +1,28 @@
|
|
| 1 |
---
|
| 2 |
title: Repolith
|
| 3 |
-
emoji:
|
| 4 |
colorFrom: gray
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
title: Repolith
|
| 3 |
+
emoji: 🪨
|
| 4 |
colorFrom: gray
|
| 5 |
+
colorTo: indigo
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
license: mit
|
| 9 |
+
short_description: Coordination layer for parallel Claude Code sessions
|
| 10 |
+
tags:
|
| 11 |
+
- agents
|
| 12 |
+
- claude
|
| 13 |
+
- coding-agents
|
| 14 |
+
- developer-tools
|
| 15 |
+
- multi-agent
|
| 16 |
---
|
| 17 |
|
| 18 |
+
# Repolith
|
| 19 |
+
|
| 20 |
+
**The coordination layer for parallel AI coding agents.**
|
| 21 |
+
|
| 22 |
+
File-level locks, plan-conflict detection, and auto-resume for multiple Claude Code sessions on the same repos — plus monorepo ergonomics for multi-repo workspaces.
|
| 23 |
+
|
| 24 |
+
Everyone answers parallel agents with worktree isolation. Isolation defers the conflict to merge time; coordination prevents it at plan time and edit time.
|
| 25 |
+
|
| 26 |
+
- GitHub: https://github.com/ethanrickyjrjr-wq/repolith
|
| 27 |
+
- npm: https://www.npmjs.com/package/repolith (`npm i -g repolith`)
|
| 28 |
+
- Site + hosted-team-tier waitlist: https://ethanrickyjrjr-wq.github.io/repolith-site/
|
demo.gif
ADDED
|
Git LFS Details
|
index.html
CHANGED
|
@@ -1,19 +1,96 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 6 |
+
<title>Repolith — coordination layer for parallel Claude Code sessions</title>
|
| 7 |
+
<meta name="description" content="File-level locks, plan-conflict detection, and auto-resume for multiple Claude Code sessions on the same repos.">
|
| 8 |
+
<style>
|
| 9 |
+
:root { color-scheme: dark; }
|
| 10 |
+
* { box-sizing: border-box; }
|
| 11 |
+
body {
|
| 12 |
+
margin: 0; background: #0b0d12; color: #d7dbe4;
|
| 13 |
+
font: 16px/1.6 ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
|
| 14 |
+
-webkit-font-smoothing: antialiased;
|
| 15 |
+
}
|
| 16 |
+
main { max-width: 880px; margin: 0 auto; padding: 56px 24px 80px; }
|
| 17 |
+
h1 { font-size: 2rem; margin: 0 0 4px; color: #f2f4f8; letter-spacing: -0.02em; }
|
| 18 |
+
.tag { color: #8b93a7; margin: 0 0 28px; font-size: 1.05rem; }
|
| 19 |
+
.hero-sub { max-width: 640px; color: #aab1c2; margin: 0 0 28px; }
|
| 20 |
+
img.demo { width: 100%; border-radius: 10px; border: 1px solid #232838; display: block; }
|
| 21 |
+
.caption { color: #6d7488; font-size: .82rem; margin: 8px 0 36px; }
|
| 22 |
+
.install {
|
| 23 |
+
display: inline-block; background: #141824; border: 1px solid #2a3145; border-radius: 8px;
|
| 24 |
+
padding: 10px 18px; font: 500 .95rem/1 ui-monospace, "Cascadia Code", Consolas, monospace;
|
| 25 |
+
color: #9ee6b8; margin: 0 0 40px;
|
| 26 |
+
}
|
| 27 |
+
.stats { display: flex; flex-wrap: wrap; gap: 12px; margin: 0 0 12px; }
|
| 28 |
+
.stat { background: #10131c; border: 1px solid #1e2434; border-radius: 10px; padding: 14px 18px; flex: 1 1 150px; }
|
| 29 |
+
.stat b { display: block; font-size: 1.35rem; color: #f2f4f8; font-variant-numeric: tabular-nums; }
|
| 30 |
+
.stat span { font-size: .8rem; color: #8b93a7; }
|
| 31 |
+
.stats-note { color: #6d7488; font-size: .82rem; margin: 0 0 44px; }
|
| 32 |
+
h2 { font-size: 1.15rem; color: #f2f4f8; margin: 0 0 10px; }
|
| 33 |
+
.cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; margin: 0 0 44px; }
|
| 34 |
+
.col { background: #10131c; border: 1px solid #1e2434; border-radius: 10px; padding: 18px; }
|
| 35 |
+
.col h3 { margin: 0 0 8px; font-size: .95rem; color: #e6e9f0; }
|
| 36 |
+
.col p { margin: 0; font-size: .88rem; color: #9aa1b4; }
|
| 37 |
+
.limits { border-left: 3px solid #4a5268; padding: 4px 0 4px 16px; color: #8b93a7; font-size: .88rem; margin: 0 0 44px; }
|
| 38 |
+
.links a { color: #7fb3ff; text-decoration: none; margin-right: 22px; font-size: .95rem; }
|
| 39 |
+
.links a:hover { text-decoration: underline; }
|
| 40 |
+
footer { margin-top: 48px; color: #59607a; font-size: .8rem; }
|
| 41 |
+
</style>
|
| 42 |
+
</head>
|
| 43 |
+
<body>
|
| 44 |
+
<main>
|
| 45 |
+
<h1>repolith</h1>
|
| 46 |
+
<p class="tag">The coordination layer for parallel AI coding agents.</p>
|
| 47 |
+
<p class="hero-sub">File-level locks, plan-conflict detection, and auto-resume for multiple Claude Code
|
| 48 |
+
sessions on the same repos. Worktree isolation defers the conflict to merge time — after every session
|
| 49 |
+
already did the work. Coordination prevents it at plan time and edit time.</p>
|
| 50 |
+
|
| 51 |
+
<div class="install">npm i -g repolith</div>
|
| 52 |
+
|
| 53 |
+
<img class="demo" src="demo.gif" alt="Two Claude Code sessions edit the same file: session A claims it on first touch, session B is denied with the holder named, waits, and auto-resumes the moment A commits.">
|
| 54 |
+
<p class="caption">Real repolith from npm, nothing mocked — two sessions collide, the second is denied, waits, and auto-resumes.</p>
|
| 55 |
+
|
| 56 |
+
<div class="stats">
|
| 57 |
+
<div class="stat"><b>914</b><span>sessions coordinated</span></div>
|
| 58 |
+
<div class="stat"><b>20,994</b><span>file claims</span></div>
|
| 59 |
+
<div class="stat"><b>3,168</b><span>collisions denied</span></div>
|
| 60 |
+
<div class="stat"><b>552</b><span>FIFO auto-resumes</span></div>
|
| 61 |
+
<div class="stat"><b>17</b><span>conflicts caught at plan time</span></div>
|
| 62 |
+
</div>
|
| 63 |
+
<p class="stats-note">9 weeks of dogfooding on the author's own two-repo workspace (Jun 29 – Aug 30, 2026). Exact counts from the coordination journal.</p>
|
| 64 |
+
|
| 65 |
+
<h2>How it works</h2>
|
| 66 |
+
<div class="cols">
|
| 67 |
+
<div class="col">
|
| 68 |
+
<h3>Plan-time catch</h3>
|
| 69 |
+
<p>A hook on ExitPlanMode captures each session's plan. Two plans overlapping on the same files? The second session finds out before writing a line.</p>
|
| 70 |
+
</div>
|
| 71 |
+
<div class="col">
|
| 72 |
+
<h3>Edit gate + auto-resume</h3>
|
| 73 |
+
<p>First touch claims the file. A second live session is denied with the holder named, can queue, and resumes FIFO the moment the file frees up. Deadlocks are surfaced, not hung.</p>
|
| 74 |
+
</div>
|
| 75 |
+
<div class="col">
|
| 76 |
+
<h3>Journal + drift control</h3>
|
| 77 |
+
<p>Every file has a journal. Sessions read what the last session did there before editing, and get a catch-up brief on start. Heartbeats + git-verified staleness keep crashed sessions from wedging the store.</p>
|
| 78 |
+
</div>
|
| 79 |
+
</div>
|
| 80 |
+
|
| 81 |
+
<p class="limits"><strong>Honest limits:</strong> same-machine only (shared JSON store), cooperative — it
|
| 82 |
+
coordinates sessions that run the hooks. Claude Code today; other agents via the CLI. Advisory by design:
|
| 83 |
+
every hook exits 0 on internal failure, so coordination can never break your edit flow. Also does multi-repo:
|
| 84 |
+
TOML manifest, lockfile with an atomic workspace hash, parallel dispatch, VS Code extension.</p>
|
| 85 |
+
|
| 86 |
+
<p class="links">
|
| 87 |
+
<a href="https://github.com/ethanrickyjrjr-wq/repolith">GitHub</a>
|
| 88 |
+
<a href="https://www.npmjs.com/package/repolith">npm</a>
|
| 89 |
+
<a href="https://marketplace.visualstudio.com/items?itemName=stanicky.repolith-vscode">VS Code</a>
|
| 90 |
+
<a href="https://ethanrickyjrjr-wq.github.io/repolith-site/">Site + team-tier waitlist</a>
|
| 91 |
+
</p>
|
| 92 |
+
|
| 93 |
+
<footer>MIT · TypeScript on Bun · no daemon, no server — a JSON store and git</footer>
|
| 94 |
+
</main>
|
| 95 |
+
</body>
|
| 96 |
</html>
|