Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ _Formerly Gittensory._
<a href="https://gittensor.io/miners/repository?name=JSONbored/loopover"><img alt="Gittensor impact" src="https://api.gittensor.io/repos/JSONbored%2Floopover/badge.svg" /></a>
</p>

Software delivery is a pipeline. LoopOver makes it a loop: agents write, agents review, agents merge — and every outcome trains the next pass. Any GitHub repo, both sides of the lifecycle.
**The loop never sleeps. You finally can.**

LoopOver automates the entire development lifecycle — write, review, merge, learn — end to end, with agents on both sides and a published safety record. The good kind of infinite loop, on any GitHub repo.

- **For maintainers (self-hosted):** an autonomous review agent works the PR queue end-to-end — AI review grounded in finished CI status, full post-change file content, and codebase RAG — then gates, approves, requests changes, merges, or closes on its own, governed by dry-run / pause / freeze / kill-switch controls.
- **For contributors:** the [`@loopover/mcp`](https://www.npmjs.com/package/@loopover/mcp) copilot brings predicted gate verdicts, branch preflight, duplicate detection, and cross-repo opportunity discovery into your own AI harness; the autonomous miner runtime (`@loopover/miner`) runs unattended across a fleet of repos, respecting each target repo's `.loopover-miner.yml` goal spec.
Expand Down
11 changes: 11 additions & 0 deletions apps/loopover-ui/src/components/site/animated-terminal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@ export interface TerminalScene {
}

const DEFAULT_SCENES: TerminalScene[] = [
{
prompt: "cat loop.ts",
output: `while (true) {
const work = await locate(); // discovery: issues, gaps, dups
const pr = await code(work); // contributor agent ships it
const call = await review(pr); // maintainer agent decides
await merge(call); // or close — its call, logged
await learn(call.outcome); // every result tunes the loop
}
// this loop has no exit condition. neither did your backlog.`,
},
{
prompt: "npx -y @loopover/mcp@latest login",
output: "→ GitHub Device Flow opened… authorized as octocat",
Expand Down
5 changes: 2 additions & 3 deletions apps/loopover-ui/src/components/site/site-footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,8 @@ export function SiteFooter() {
<span aria-hidden>ittensory</span>
</Link>
<p className="mt-3 max-w-sm text-token-sm text-muted-foreground">
Closed loop, open receipts — agents write, review, and merge, and every outcome trains
the next pass. Gittensor-native intelligence included; not affiliated with the official
subnet.
The good kind of infinite loop — agents write, review, merge, and learn, end to end.
Gittensor-native intelligence included; not affiliated with the official subnet.
</p>
<div className="mt-5 flex items-center gap-3">
<a
Expand Down
6 changes: 3 additions & 3 deletions apps/loopover-ui/src/routes/__root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -119,11 +119,11 @@ export const Route = createRootRouteWithContext<{ queryClient: QueryClient }>()(
meta: [
{ charSet: "utf-8" },
{ name: "viewport", content: "width=device-width, initial-scale=1" },
{ title: "LoopOver — Close the loop on software delivery" },
{ title: "LoopOver — The loop never sleeps. You finally can." },
{
name: "description",
content:
"Agents write, review, and merge — and every outcome trains the next pass. Autonomous PR reviews with a certified, published error rate, plus an MCP copilot and autonomous miner for contributors. Any GitHub repo.",
"Agents automate the entire development lifecycle — write, review, merge, learn — end to end, with a published safety record. Any GitHub repo.",
},
{ property: "og:site_name", content: "LoopOver" },
{ property: "og:type", content: "website" },
Expand Down Expand Up @@ -155,7 +155,7 @@ export const Route = createRootRouteWithContext<{ queryClient: QueryClient }>()(
name: "LoopOver",
url: "https://loopover.ai",
description:
"Agents for the whole development loopautonomous reviews and contributions with a published, certified error rate.",
"Agents automate the entire development lifecyclewrite, review, merge, learn — end to end, with a published safety record.",
}),
},
// Local, cookieless analytics beacon. Do not load the mutable remote
Expand Down
19 changes: 9 additions & 10 deletions apps/loopover-ui/src/routes/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@ import { MCP_PACKAGE_NAME, getLatestMcpVersion, useMcpPackageMetadata } from "@/
export const Route = createFileRoute("/")({
head: () => ({
meta: [
{ title: "LoopOver — Close the loop on software delivery" },
{ title: "LoopOver — The loop never sleeps. You finally can." },
{
name: "description",
content:
"Agents write, review, and merge — and every outcome trains the next pass. Autonomous PR reviews with a certified, published error rate, plus an MCP copilot and autonomous miner for contributors. Any GitHub repo.",
"Agents automate the entire development lifecycle — write, review, merge, learn — end to end. Autonomous PR reviews with a published safety record, plus an MCP copilot and autonomous miner for contributors. Any GitHub repo.",
},
{ property: "og:title", content: "LoopOver — Close the loop on software delivery" },
{ property: "og:title", content: "LoopOver — The loop never sleeps. You finally can." },
{
property: "og:description",
content:
"Closed loop, open receipts: autonomous reviews for maintainers, autonomous contributions for miners, error rate published and replayable.",
"The good kind of infinite loop: agents write, review, merge, and learn — end to end, hands off. Safety record published.",
},
{ property: "og:url", content: "/" },
{ property: "og:type", content: "website" },
Expand Down Expand Up @@ -70,14 +70,13 @@ function Hero() {
MCP v{latestMcpVersion} · open source · self-hosted
</div>
<h1 className="mt-5 text-token-3xl font-medium leading-token-tight tracking-tight text-foreground">
Software delivery is a pipeline.
<span className="block text-muted-foreground">LoopOver makes it a loop.</span>
The loop never sleeps.
<span className="block text-muted-foreground">You finally can.</span>
</h1>
<p className="mt-5 max-w-lg text-token-md leading-token-normal text-muted-foreground">
Agents write, agents review, agents merge — and every outcome trains the next pass. An
autonomous maintainer works your PR queue end-to-end, a contributor stack plans and
ships real work, and the loop&apos;s error rate is published, certified, and replayable.
Any GitHub repo; Gittensor-native mining intelligence built in.
Agents automate the entire development lifecycle — write, review, merge, learn — end to
end, hands off. On any GitHub repo, with a published safety record. Gittensor-native
mining intelligence built in.
</p>
<div className="mt-7 flex flex-wrap items-center gap-2">
<Link
Expand Down
Loading