Diffinery

codician/diffinerypublic

Open-source, agent-first GitHub and GitHub Actions alternative that runs on your own Cloudflare account: git hosting, pull requests, code review and drop-in GitHub Actions YAML on Workers, Durable Objects, R2 and Containers.

Compare changes

Choose two branches to see what changed or to start a new pull request.

base:←compare:1 commit ahead, 22 behind main
8 files changed+30−16
Files (8)
modifiedREADME.md+1−1View file
@@ -222,7 +222,7 @@
222222 Yes. The importer brings a repository or a whole organization with history, issues, pull requests, reviews and releases. Secret names come over with a field to enter each value. `gh`, Octokit, VS Code and JetBrains IDEs work against Diffinery. See [Migrate from GitHub](https://diffinery.com/docs/migrate-from-github).
223223
224224 **Can I sign up on diffinery.com?**
225-diffinery.com is the project's home and the instance Diffinery is developed on; accounts there are by invitation for the people working on it. It isn't a hosted service. To use Diffinery, deploy your own instance.
225+Not directly. diffinery.com is the project's home and the instance Diffinery is developed on, and accounts there are by invitation. To try Diffinery there before deploying your own, [request early access](https://diffinery.com/early-access). It isn't a hosted service for teams: to use Diffinery for your work, deploy your own instance.
226226
227227 **Is Diffinery the only Git platform on Cloudflare?**
228228 No. Other open-source projects run Git or CI on Cloudflare too, and [Built on Cloudflare](https://diffinery.com/built-on-cloudflare#other-git-and-ci-projects-on-cloudflare) lists how they differ. As far as we know, Diffinery is the one where Git hosting, pull requests with reviews in a web UI and GitHub Actions–compatible CI with marketplace actions all run on Cloudflare (checked October 25, 2026).
modifiedapps/diffinery/docs/accounts/early-access.md+2−0View file
@@ -5,6 +5,8 @@
55
66 While a Diffinery instance is invite-only (the default), people without an invitation can ask for one at `/early-access` on that instance. The sign-in page and the sign-up address lead there. A request never grants access by itself: a site administrator reads it and decides whether to send an [invitation](/docs/accounts/invitations).
77
8+On diffinery.com, the project's own instance, this is how to try Diffinery before you deploy your own: [request early access there](https://diffinery.com/early-access).
9+
810 The form is only there while sign-up is closed. On an instance with [open sign-up](/docs/accounts/passkeys-and-sign-in#open-sign-up) (`SIGNUP=open`), `/early-access` leads to the sign-up page instead.
911
1012 ## Request early access
modifiedapps/diffinery/docs/self-hosting.md+2−0View file
@@ -6,6 +6,8 @@
66
77 Diffinery is open-source software under the Apache License 2.0, and the way to use it is to run your own instance on your own Cloudflare account and domain. There's no hosted service to sign up for: diffinery.com is the project's own instance. This page is the overview; [Deploy your own Diffinery](/docs/self-hosting/deploy) is the step-by-step guide.
88
9+> **Want to try it before you deploy?** [Request early access](https://diffinery.com/early-access) to diffinery.com, the project's own instance. Its administrators review requests and email invitations; see [Early access](/docs/accounts/early-access).
10+
911 ## Get the source
1012
1113 The repository is [diffinery.com/codician/diffinery](https://diffinery.com/codician/diffinery), mirrored to [github.com/codician-team/diffinery](https://github.com/codician-team/diffinery). Clone either one; both carry the same `main` branch, with the `LICENSE` and `NOTICE` files at the top.
modifiedapps/diffinery/site/about.md+1−1View file
@@ -22,7 +22,7 @@
2222 Diffinery is free, open-source software under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). There are no plans, prices or sales, and no hosted service for other teams: everyone runs their own instance on their own Cloudflare account and domain, and pays Cloudflare only for what it uses. See [Open source](/open-source) and [Deploy your own Diffinery](/docs/self-hosting/deploy).
2323
2424 - **Source code:** [diffinery.com/codician/diffinery](https://diffinery.com/codician/diffinery), where Diffinery is developed, mirrored to [github.com/codician-team/diffinery](https://github.com/codician-team/diffinery).
25-- **diffinery.com** is the project's home: this site, the documentation, and the instance Diffinery itself is built on. Accounts there are by invitation, for the people working on Diffinery.
25+- **diffinery.com** is the project's home: this site, the documentation, and the instance Diffinery itself is built on. Accounts there are by invitation, for the people working on Diffinery and for people trying it through [early access](https://diffinery.com/early-access).
2626
2727 ## How we check what we publish
2828
modifiedapps/diffinery/site/faq.md+1−1View file
@@ -19,7 +19,7 @@
1919
2020 ### How do I start using Diffinery?
2121
22-Deploy your own instance to your Cloudflare account and domain: one command from a clone, `scripts/setup.sh`, creates everything it needs, and you sign in as its first administrator. Then invite your team, or open sign-up. See [Deploy your own Diffinery](/docs/self-hosting/deploy). Diffinery doesn't offer a hosted service for other teams; diffinery.com is the project's own instance.
22+Deploy your own instance to your Cloudflare account and domain: one command from a clone, `scripts/setup.sh`, creates everything it needs, and you sign in as its first administrator. Then invite your team, or open sign-up. See [Deploy your own Diffinery](/docs/self-hosting/deploy). Diffinery doesn't offer a hosted service for teams; to try it before you deploy, [request early access](https://diffinery.com/early-access) to diffinery.com, the project's own instance.
2323
2424 ### Is Diffinery a GitHub alternative?
2525
modifiedapps/diffinery/site/open-source.md+2−2View file
@@ -51,7 +51,7 @@
5151
5252 ## What diffinery.com is
5353
54-diffinery.com is the project's home: this site, the [documentation](/docs), and the Diffinery instance that Diffinery itself is developed on, with its CI, deploys and agents. Accounts there are by invitation, for the people working on Diffinery. It isn't a hosted service for other teams; to use Diffinery, run your own instance.
54+diffinery.com is the project's home: this site, the [documentation](/docs), and the Diffinery instance that Diffinery itself is developed on, with its CI, deploys and agents. Accounts there are by invitation. If you'd like to try Diffinery before running your own, [request early access](https://diffinery.com/early-access): its administrators review requests and email invitations. It isn't a hosted service for teams; to use Diffinery for your work, run your own instance.
5555
5656 ## Contribute
5757
@@ -71,7 +71,7 @@
7171
7272 ### Is there a hosted version I can sign up for?
7373
74-No. diffinery.com is the project's own instance, by invitation for the people working on Diffinery. You deploy your own instance to your Cloudflare account; see [Deploy your own Diffinery](/docs/self-hosting/deploy).
74+Not one to sign up for. To try Diffinery, [request early access](https://diffinery.com/early-access) to diffinery.com, the project's own instance, where accounts are by invitation. To use Diffinery for your team, deploy your own instance to your Cloudflare account; see [Deploy your own Diffinery](/docs/self-hosting/deploy).
7575
7676 ### What does running Diffinery cost?
7777
modifiedapps/diffinery/src/web/site.tsx+16−9View file
@@ -158,8 +158,12 @@
158158 a: "Yes, under the Apache License 2.0, with no paid edition and nothing sold. The source code is at [diffinery.com/codician/diffinery](https://diffinery.com/codician/diffinery) and mirrored to [github.com/codician-team/diffinery](https://github.com/codician-team/diffinery). See [Open source](/open-source).",
159159 },
160160 {
161+ q: "Can I try Diffinery without deploying it?",
162+ a: "Yes. [Request early access](https://diffinery.com/early-access) to diffinery.com, the project's own instance: its administrators review requests and email invitations, and you try Diffinery there. To run Diffinery for your team, deploy your own instance. See [Early access](/docs/accounts/early-access).",
163+ },
164+ {
161165 q: "How do I start using Diffinery, and what does it cost?",
162- a: "Deploy your own instance to your Cloudflare account and domain with one command, `scripts/setup.sh`, then sign in as its first administrator and invite your team. See [Deploy your own Diffinery](/docs/self-hosting/deploy). Diffinery is free; you pay Cloudflare for what your instance uses, on the Workers Paid plan (a minimum of $5 USD per month per account, plus usage; [Cloudflare's pricing](https://developers.cloudflare.com/workers/platform/pricing/), checked October 25, 2026). There's no hosted service to sign up for: diffinery.com is the project's own instance.",
166+ a: "Deploy your own instance to your Cloudflare account and domain with one command, `scripts/setup.sh`, then sign in as its first administrator and invite your team. See [Deploy your own Diffinery](/docs/self-hosting/deploy). Diffinery is free; you pay Cloudflare for what your instance uses, on the Workers Paid plan (a minimum of $5 USD per month per account, plus usage; [Cloudflare's pricing](https://developers.cloudflare.com/workers/platform/pricing/), checked October 25, 2026). There's no hosted service to sign up for; to try Diffinery first, [request early access](https://diffinery.com/early-access) to diffinery.com, the project's own instance.",
163167 },
164168 ],
165169 };
@@ -199,7 +203,7 @@
199203 "",
200204 "## Open source, on your own Cloudflare account",
201205 "",
202- `Diffinery is open source under the Apache License 2.0: [source code](${SOURCE.repo}), [mirror on GitHub](${SOURCE.github}). Deploy it with [Deploy your own Diffinery](/docs/self-hosting/deploy); you pay Cloudflare only for what your instance uses. See [Open source](/open-source).`,
206+ `Diffinery is open source under the Apache License 2.0: [source code](${SOURCE.repo}), [mirror on GitHub](${SOURCE.github}). Deploy it with [Deploy your own Diffinery](/docs/self-hosting/deploy); you pay Cloudflare only for what your instance uses. To try it first, [request early access](${EARLY_ACCESS}) to diffinery.com. See [Open source](/open-source).`,
203207 "",
204208 "## Frequently asked questions",
205209 "",
@@ -228,6 +232,9 @@
228232 spdx: "Apache-2.0",
229233 };
230234
235+/** Where to ask to try Diffinery on the project's own instance, whatever instance serves this page (web/early-access.tsx). */
236+export const EARLY_ACCESS = "https://diffinery.com/early-access";
237+
231238 /** schema.org ids for the site's entities, shared by every page's graph. */
232239 const ids = (o: string) => ({ org: `${o}/#organization`, site: `${o}/#website`, app: `${o}/#software`, source: `${o}/#source` });
233240
@@ -316,12 +323,12 @@
316323 <a class="btn primary" href="/docs/self-hosting">
317324 Deploy your own
318325 </a>
326+ <a class="btn" href={EARLY_ACCESS} title="Try Diffinery on diffinery.com before you deploy your own">
327+ Request early access
328+ </a>
319329 <a class="btn" href={SOURCE.repo}>
320330 View the source
321331 </a>
322- <a class="btn" href="/docs">
323- Read the docs
324- </a>
325332 </>
326333 );
327334
@@ -342,7 +349,7 @@
342349 <Cta />
343350 </p>
344351 <p class="muted small">
345- Free, with nothing to buy: you run Diffinery on your own Cloudflare account. Source on <a href={SOURCE.repo}>Diffinery</a> and <a href={SOURCE.github}>GitHub</a>.
352+ Free, with nothing to buy: you run Diffinery on your own Cloudflare account. Want to try it first? <a href={EARLY_ACCESS}>Request early access</a> to diffinery.com. Source on <a href={SOURCE.repo}>Diffinery</a> and <a href={SOURCE.github}>GitHub</a>.
346353 </p>
347354 </section>
348355 <ul class="mk-stats" aria-label="Diffinery in numbers">
@@ -443,7 +450,7 @@
443450 </section>
444451 <section class="mk-band">
445452 <h2>Run Diffinery on your own Cloudflare account</h2>
446- <p class="muted">Open source under Apache-2.0. Your workflows, your editor and gh keep working, your agents get guardrails, and you pay Cloudflare only for what you use.</p>
453+ <p class="muted">Open source under Apache-2.0. Your workflows, your editor and gh keep working, your agents get guardrails, and you pay Cloudflare only for what you use. Not ready to deploy? Request early access and try it on diffinery.com first.</p>
447454 <p class="row" style="justify-content:center">
448455 <Cta />
449456 </p>
@@ -564,7 +571,7 @@
564571 <div class="markdown mk-body">{raw(html)}</div>
565572 <aside class="mk-band">
566573 <h2>Run Diffinery yourself</h2>
567- <p class="muted">Open source under Apache-2.0, deployed to your own Cloudflare account.</p>
574+ <p class="muted">Open source under Apache-2.0, deployed to your own Cloudflare account. Or request early access and try it on diffinery.com first.</p>
568575 <p class="row" style="justify-content:center">
569576 <Cta />
570577 </p>
@@ -598,7 +605,7 @@
598605 "",
599606 `- [Home page](${o}/index.md): ${HOME.description}`,
600607 `- Open source under the Apache License 2.0 (SPDX: ${SOURCE.spdx}). Source code: ${SOURCE.repo}, mirrored to ${SOURCE.github}. Free, with no paid edition and nothing sold.`,
601- `- How to use it: deploy your own instance to your own Cloudflare account and domain (Workers Paid plan); you pay Cloudflare for what it uses. Guide: ${o}/docs/self-hosting/deploy.md. Overview: ${o}/docs/self-hosting.md. There's no hosted service for other teams: diffinery.com is the project's home and its own instance, with accounts by invitation for the people working on Diffinery.`,
608+ `- How to use it: deploy your own instance to your own Cloudflare account and domain (Workers Paid plan); you pay Cloudflare for what it uses. Guide: ${o}/docs/self-hosting/deploy.md. Overview: ${o}/docs/self-hosting.md. There's no hosted service for teams to sign up for: diffinery.com is the project's home and its own instance, with accounts by invitation. To try Diffinery before deploying your own, request early access at ${EARLY_ACCESS} (how it works: ${o}/docs/accounts/early-access.md).`,
602609 `- Runs entirely on Cloudflare (Workers, Durable Objects, R2, D1, Queues, Workflows, Containers): code, pull requests, CI runners and the agent features alike. It is ${CLOUDFLARE_CLAIM} See ${o}/built-on-cloudflare.md, which compares the other Git and CI projects on Cloudflare.`,
603610 "- Hosted CI runners: Ubuntu 24.04 x64 containers, 4 vCPU and 12 GiB of memory by default, with smaller sizes chosen per job from its measured runs. No hosted macOS, Windows or Arm runners; self-hosted runners cover them.",
604611 "- Runs GitHub Actions workflow files from `.github/workflows/` as they are; differences are listed at " + `${o}/docs/actions/compatibility.md`,
modifiedapps/diffinery/test/unit/site.test.ts+5−2View file
@@ -158,11 +158,13 @@
158158 expect(html).toContain("Code hosting and CI for the agentic era</h1>");
159159 const g = graph(html);
160160 expect(types(g)).toEqual(expect.arrayContaining(["Organization", "WebSite", "SoftwareApplication", "SoftwareSourceCode", "WebPage", "FAQPage"]));
161- // Open source: the license and the repositories, and no early access or pricing.
161+ // Open source: the license and the repositories, no pricing, and early access to try it on diffinery.com.
162162 const source = g.find((n) => n["@type"] === "SoftwareSourceCode")!;
163163 expect(source).toMatchObject({ codeRepository: "https://diffinery.com/codician/diffinery", license: "https://www.apache.org/licenses/LICENSE-2.0", sameAs: ["https://github.com/codician-team/diffinery"] });
164164 expect(g.find((n) => n["@type"] === "SoftwareApplication")).toMatchObject({ license: "https://www.apache.org/licenses/LICENSE-2.0", isAccessibleForFree: true, installUrl: `${ORIGIN}/docs/self-hosting/deploy`, downloadUrl: "https://diffinery.com/codician/diffinery/releases" });
165- expect(html).not.toContain('href="/early-access"');
165+ expect(html).toContain('href="https://diffinery.com/early-access"');
166+ const faq = g.find((n) => n["@type"] === "FAQPage") as { mainEntity: Array<{ name: string; acceptedAnswer: { text: string } }> };
167+ expect(faq.mainEntity.find((q) => q.name === "Can I try Diffinery without deploying it?")?.acceptedAnswer.text).toContain("Request early access to diffinery.com");
166168 expect(html).not.toMatch(/not been announced|hasn't been announced|invite-only while/i);
167169 for (const href of ["/compare/github", "/compare/blacksmith", "/performance", "/agents", "/about", "/llms.txt", "/open-source", "/docs/self-hosting", "https://diffinery.com/codician/diffinery", "https://github.com/codician-team/diffinery"]) expect(html, href).toContain(`href="${href}"`);
168170 });
@@ -199,6 +201,7 @@
199201 expect(txt).toContain(`(${ORIGIN}/index.md)`);
200202 for (const p of pages) expect(txt).toContain(`(${ORIGIN}${p.path}.md)`);
201203 expect(txt.indexOf(`${ORIGIN}/compare/github.md`)).toBeLessThan(txt.indexOf(`${ORIGIN}/docs/quickstart.md`));
204+ expect(txt).toContain("request early access at https://diffinery.com/early-access");
202205 });
203206
204207 it("states the Cloudflare claim the same way everywhere, backed by the sourced list of other projects", async () => {