Done is a check, not a checkbox.

Gitmoap hosts your code, its reviews, its work items and its pipelines, and joins them up. A work item can name the tests that prove it’s finished, and the merge button can hold the change until they pass.

Free during the Beta. Your code is stored in the EU. This site sets no cookies.

Work item #412 in platform/api-gateway

Retry failed webhook deliveries with backoff

Definition of done

  • Failed deliveries back off exponentially (met)Bound to a test. Passed in the last pipeline.
  • No event is delivered twice (failing)Bound to a test. Failing at the head of !128.
  • Coverage of the webhook code stays above 80% (met)Bound to coverage. 86% in the last pipeline.

Closes #412

!128 Retry webhook deliveries with exponential backoff

webhooks/retry into webhooks/queue

Can’t merge yet: a required criterion on #412 is failing.

Host your code, review it, track the work around it, and ship it.

Four jobs, one place, and each one knows about the others. That’s the whole idea, and it’s where the name comes from: git, with a map.

  1. Host

    Repositories in groups as deep as your organization, with branch rules, push rules and code owners.

    Repositories guide
  2. Review

    Merge requests with a live checklist of what still stands in the way, and stacks for changes too big for one.

    Merge requests guide
  3. Track

    Work items that link to commits, follow the code they’re about, and know when they’re done.

    Work items guide
  4. Ship

    Pipelines you draw in the browser, packages for npm, Cargo and PyPI, releases, and a catalog of what runs where.

    Pipelines guide

What it looks like.

Every picture here is the product itself, photographed by our test suite on example data: one change, retrying webhook deliveries, followed from the work item to the API.

  1. Proof of Done

    The merge button reads your definition of done.

    Work item #412 names the checks that prove it’s finished: two tests, a coverage floor and a latency budget. One test fails at the head of !128, so the merge waits, and so does the stack above it.

    1. Every criterion is bound to a test, a coverage floor or a metric
    2. One of them fails at the head of the branch
    3. So the merge waits, and so does the stack above it
    How Proof of Done works
    The Proof of Done tab of work item #412: four required criteria, three passing and one failing, each bound to a test, a coverage floor or a metric, with the commit that proved it.The Proof of Done tab of work item #412: four required criteria, three passing and one failing, each bound to a test, a coverage floor or a metric, with the commit that proved it.
    Merge request !128, the middle of a three-deep stack. Merge is blocked for two reasons: an acceptance criterion of #412 is failing at the head, and !126 must merge first.Merge request !128, the middle of a three-deep stack. Merge is blocked for two reasons: an acceptance criterion of #412 is failing at the head, and !126 must merge first.
  2. Code links

    #412 is pinned to the retry loop. When the loop moved from webhooks/ to delivery/, the anchor followed it, and says how much of it still matches.

    1. Two anchors, each on a range of lines
    2. Drifted: the code moved, and the anchor followed it
    3. And how much of it still matches: 94%
    Linking work to code
    Two code anchors on #412: src/delivery/retry.rs lines 44 to 91, drifted, a 94% match; and src/delivery/attempts.rs lines 12 to 30, live.Two code anchors on #412: src/delivery/retry.rs lines 44 to 91, drifted, a 94% match; and src/delivery/attempts.rs lines 12 to 30, live.
  3. Pipelines

    Pipelines built from versioned components.

    rust-build is a component the platform team publishes. Every run that uses it draws its steps as one group, with the version the run resolved to.

    1. A component, published once by the platform team
    2. Its steps, drawn as one group in every run
    3. At the version the run resolved to
    Pipeline components guide
    A running pipeline: build, then the rust-build v1.4.0 component’s run and check steps in one group, then deploy, still running.A running pipeline: build, then the rust-build v1.4.0 component’s run and check steps in one group, then deploy, still running.
  4. Access

    Who can reach this group, and why.

    People, teams and service accounts in one list, with where each grant comes from, when it ends and when it was last used.

    1. Where each grant comes from
    2. When it ends: the Contractors, in 23 days
    3. When it was last used: the Contractors, never
    Access guide
    The access list of the platform group: founder as owner, dana as developer, the Product team as stakeholder, the ci-bot service account, and the Contractors team, whose access ends in 23 days and has never been used.The access list of the platform group: founder as owner, dana as developer, the Product team as stakeholder, the ci-bot service account, and the Contractors team, whose access ends in 23 days and has never been used.
  5. Roles

    Roles, compared down to the permission.

    Put up to four roles side by side, built-in or your own, and show only where they differ. Permissions that reach other people’s access are marked sensitive.

    1. Up to four roles: built-in, or your own
    2. Only where they differ
    3. What reaches other people’s access, marked sensitive
    Custom roles guide
    Developer, Stakeholder, Maintainer and a custom Contractor developer role compared permission by permission, showing only the differences.Developer, Stakeholder, Maintainer and a custom Contractor developer role compared permission by permission, showing only the differences.
  6. Access tokens

    Tokens that carry only what they need.

    Say what a token is for, and the page says in words what it can and can’t do — the scope strings come second. This one, release-bot, clones, pushes and runs pipelines, and nothing else.

    1. Say what it’s for
    2. Read what it can and can’t do, in words
    3. Then the scopes: seven, and nothing else
    Access tokens guide
    Creating an access token named release-bot: the Clone & push code and Run pipelines cards chosen, and under them what it can do, what it can’t, and the seven scopes it sends.Creating an access token named release-bot: the Clone & push code and Run pipelines cards chosen, and under them what it can do, what it can’t, and the seven scopes it sends.
  7. Audit log

    Don’t trust our audit log. Verify it.

    Every record is sealed into a hash chain as it’s written. Verify integrity replays the chain and reports any record that was edited, removed or reordered.

    1. Verify integrity replays the whole chain
    2. Any edit, gap or reordering is reported here
    3. Denied and failed actions are recorded too
    Audit log guide
    The audit log after Verify integrity: chain verified, 6 records checked, sequence 0 to 5, no gaps or tampering detected.The audit log after Verify integrity: chain verified, 6 records checked, sequence 0 to 5, no gaps or tampering detected.
  8. Spec index

    Your specs, read as data.

    Gitmoap indexes the specs in your repository on every push: their status, typed rows, identifiers and references. A spec that says it’s implemented while items are still unchecked gets a warning.

    1. Indexed on every push
    2. Each document’s status, as data
    3. Findings where a spec claims more than it shows
    Spec index guide
    The spec index of platform/api-gateway: 6 documents, 194 typed rows, 8 identifiers and 282 references, a status bar, and a table of documents with their kind, status, posture and findings.The spec index of platform/api-gateway: 6 documents, 194 typed rows, 8 identifiers and 282 references, a status bar, and a table of documents with their kind, status, posture and findings.
  9. API reference

    An API reference you can try.

    Every operation at developers.gitmoap.com has its own page: what it takes, the scope it needs, whether it’s audited, samples in four languages, and a sandbox that answers in your browser and sends nothing anywhere.

    1. The scope it needs, whether it’s audited, its quota
    2. Samples in four languages
    3. A sandbox that answers in your browser, and sends nothing
    Open the API reference
    The Create a merge request page of the API reference: POST /repositories/{repo_id}/merge-requests, its scope merge_request:create, audited, a quota on open merge requests, its parameters, and the sandbox’s answer to a curl request, 201 Created.The Create a merge request page of the API reference: POST /repositories/{repo_id}/merge-requests, its scope merge_request:create, audited, a quota on open merge requests, its parameters, and the sandbox’s answer to a curl request, 201 Created.

What the others don’t do, or keep for enterprise plans.

Each one links to the guide that shows it working, so you can check before you sign up.

  • The merge button reads your definition of done.

    Bind a criterion to a test, a measurement or coverage, and the pipeline that runs it fills in the box, against a real commit on the branch that ships. A required criterion that isn’t met holds the work item open, and the merge button can refuse the change. A closed item even reopens itself when the test that proved it goes red again.

    How Proof of Done worksdocs.gitmoap.com/guides/issues/proof-of-done
  • Work items that survive the refactor.

    Pin a work item to a region of code and Gitmoap follows that region through every rename, reformat and refactor. Write Fixes #412 in a commit and the item closes when that commit reaches the branch you ship from.

    How code links workdocs.gitmoap.com/guides/issues/code-links#code-anchors
  • Your specs folder, as data.

    Gitmoap reads the markdown you already keep under specs/ and docs/: every document’s status, owner and review date, every rule and who cites it, every link that goes nowhere. It checks them on every branch.

    How the spec index worksdocs.gitmoap.com/guides/specs
  • Don’t trust our audit log. Verify it.

    Every change, sign-in, push and clone is sealed into a hash chain as it’s written. Replay the chain whenever you like to prove nothing was edited, removed or reordered, including by us.

    How the audit log worksdocs.gitmoap.com/guides/audit-log#what-verification-proves
  • What runs, who owns it, and where it’s deployed.

    The service catalog maps services onto repository paths, so one repository can hold five services and one service can span three. Ownership is a real group: the one a failing check files its work into.

    How the service catalog worksdocs.gitmoap.com/guides/service-catalog
  • EU hosting shouldn’t be an enterprise add-on.

    Your repositories, data and backups are stored in AWS Ireland, on the free plan. On GitHub and GitLab, keeping your data in the EU comes with Enterprise Cloud or Dedicated.

    Where your data livesgitmoap.com/-/legal/privacy-statement

And the things you’d expect.

  • Stacked merge requests, up to 20 deep, merged one at a time or all at once
  • Pipelines that test the merged result, and flag a run as stale when the target moves
  • Reusable pipeline components, versioned, with a check of who an upgrade affects
  • Package registries for npm, Cargo and PyPI
  • OIDC from pipelines to your cloud, so no long-lived key is stored
  • Single sign-on with SAML or OIDC, and SCIM provisioning
  • Teams and custom roles, granted on a group and inherited by everything inside it
  • Access tokens with fine-grained scopes, bound to one repository if you like
  • A wiki stored in git, for a repository or a whole group
  • A CLI that covers the whole API

Written in Rust. Tested like a database.

How Gitmoap is built, in facts you can hold us to.

Rust, end to end
The API is one Rust service. The client that teaches git to push and clone is Rust too.
A simulator before production
A deterministic simulator runs the whole platform and checks 93 invariants, the way databases are tested.
One declaration, four outputs
The API, the CLI, the docs reference and the API reference are generated from the same endpoint declarations. If they drift, the build fails.
Managed AWS, in Ireland
Aurora PostgreSQL, S3 and EFS, and ECS on Graviton. Encrypted at rest and in transit. Daily backups, kept for 95 days.
Isolation, stated exactly
Every query runs under row-level security keyed to your organization, on top of the application’s own checks. Git storage and pipeline hosts are shared, and we say so.

Gitmoap, GitHub and GitLab, side by side.

Checked on 22 October 2026 against each product’s own documentation; every GitHub and GitLab cell links to its source. Where a feature needs a paid plan, the cell names the cheapest one, for private repositories, the way a team would use it. If something here is out of date, tell us and we’ll fix it.

Ten things only Gitmoap does, ten that GitHub and GitLab keep for paid plans, and twenty it doesn’t do yet.

Only on GitmoapAs far as their documentation shows.
FeatureGitmoapGitHubGitLab
Work items that hold a merge until their tests passYesNoissue links never gate a mergeNorequirements never gate a merge
Work items pinned to code and followed through refactorsYesNoNo
TODO comments filed as work items, closed when the comment goesYesNothird-party Actions onlyNoan open feature request
Custom work-item types whose checklists pipelines tickYesBlueprintsNoissue types, nothing ticked by CINocustom types, nothing ticked by CI
Specs and docs indexed as data, checked on every branchYesNoNo
An audit log you can verifyYeshash chainNoexported, not provableNostreamed, not provable
A service catalog mapped onto repository pathsYesNoNo
A Cargo registryYesNoExperimentbehind a feature flag
Component versions checked against what actually changedYesNoNo
Preview who gains or loses access before a changeYesNoNo
Included during the Beta, a paid plan elsewhereEvery Gitmoap feature is free while it's a Beta.
FeatureGitmoapGitHubGitLab
EU data residencyYesAWS IrelandEnterprise CloudDedicatedUltimate
Single sign-on with SAML or OIDCYesEnterprise CloudPremiumSAML only
SCIM provisioningYesEnterprise CloudPremium
Custom rolesYesbuilt on five standard rolesEnterprise CloudUltimate
Rules set once on a group, inherited by every repository in itYesTeamPremium
Push rules: signed commits, message format, file sizeYesTeammessage format on Enterprise CloudPremium
Merge approval rulesYesTeamPremium
Required review by code ownersYesTeamPremium
Group wikisYesNowikis are per repositoryPremium
An audit log of every sign-in, push and cloneYesEnterprise Cloudgit events kept 7 daysUltimatepushes and clones by streaming
On Gitmoap, and elsewhere too
FeatureGitmoapGitHubGitLab
Groups nested as deep as your organizationYesNoorganizations don't nestYes
Teams granted access to groups and repositoriesYesYesYes
Service accountsYesYesGitHub AppsYesup to 100
Branch protectionYesTeamYes
Stacked merge requestsYesup to 20YesYesup to 20
CI on the merged resultYesflags runs gone staleYesPremium
Squash and fast-forward mergesYesYesno true fast-forwardYes
Edit, commit and resolve conflicts in the browserYesYessimple conflictsYes
Boards and work-item hierarchyYesYesYesepics on Premium
Close work items from commit messagesYesYesYes
Reusable pipeline componentsYesYesYes
A marketplace of pipeline stepsYesYesYes
Deployment environments with approval gatesYesEnterprise CloudPremium
OIDC from pipelines to your cloudYesYesYes
An npm registryYesYesYes
A PyPI registryYesNoYes
Releases with downloadable filesYesYesYes
A wiki stored in gitYesTeamYes
Access tokens bound to one repositoryYesYesPremiumproject access tokens
Signed webhooks you can redeliverYesYesYes
One search across work items, merge requests and commentsYesYesPremium
An inbox of what's waiting on youYesYesYes
An MCP server for AI assistantsYesYesYes
A command-line clientYescovers the whole APIYesYes
Not on the map yetWhat Gitmoap doesn't do today.
FeatureGitmoapGitHubGitLab
Clone over HTTPS or SSHNothrough the Gitmoap clientYesYes
Git LFSNoYesYes
ForksNoYesYes
Rebase mergesNoYesYes
A merge queueNoEnterprise CloudPremiummerge trains
Pipelines defined in a file in the repositoryNodrawn in the browserYesYes
Scheduled pipelinesNoYesYes
Self-hosted runnersNoYesYes
A container registryNoYesYes
Maven and NuGet registriesNoYesYes
Static site hostingNoTeamPagesYesPages
Import from another hostNoYesYes
Email and chat notificationsNoin-app inbox onlyYesYes
Search across every repository's codeNoone repository at a timeYesPremiumper group
Verified commit signaturesNochecks one is presentYesYes
Secret scanningNoSecret Protectiona paid add-onYespush protection on Ultimate
Dependency alertsNoYesUltimate
Code navigationNoYesYesneeds a CI job
Archived repositoriesNoYesYes
An uptime commitment (SLA)Noa free BetaEnterprise Cloud99.9%Ultimate99.9%
In developmentWork under way on Gitmoap, with no date promised.
FeatureGitmoapGitHubGitLab
AI agents that work in your groups like a teamEarly accessEU onlyCopilot plancloud agentGitLab CreditsDuo agents

Beta, honestly.

Gitmoap is a proof of concept, built and run by one person. It’s free while it’s a Beta, and it comes without guarantees: no uptime commitment, no certifications.

If it ever shuts down, you’ll hear seven days before. Git makes keeping your own copy easy, and you should keep one, here or anywhere.

Read the TermsRead the Privacy Statement
Price
Free. We take no payment and hold no payment details.
Who runs it
One person, in the Netherlands. Gitmoap is not a company.
Your code
Never used to train AI models. Nobody can read your private content through the platform, us included.
Cookies
Gitmoap sets none of its own.
If it ends
Seven days’ notice before the service shuts down.

Start with one repository.

The first-repository guide takes you from signing in to a repository with your code in it and a pipeline running on it.

# macOS with Apple Silicon
brew tap gitmoap/tap https://get.gitmoap.com/homebrew-tap.git
brew trust gitmoap/tap
brew install gitmoap
Every other platform is in the install guide