Errors in. Merged fixes out.

Mendloop finds the line behind each production error and, once the code owner approves, ships the fix as a tested pull request. Your team stays in control.

Private beta Request access to Mendloop Cloud or the self-hosted release (Apache-2.0, Postgres and Redis).

P1 NullPointerException in CheckoutViewModel.submit

android 5.42.01,840 users in the last hourowner paymentsWaiting for you

Root cause0.86 confidence

pendingOrder is not restored after Android process death3, so order!! at CheckoutViewModel.kt:142 throws when the user returns1. Introduced by #881 on 2 Oct2.

140    _state.value = CheckoutState.Submitting141    viewModelScope.launch {142        val placed = repository.placeOrder(order!!, paymentMethod)143        _state.value = CheckoutState.Placed(placed.id)
  1. Detected
  2. Ticket
  3. Root cause
  4. Approval
  5. Fix
  6. Pull request
  7. Merged
  8. Verified
  1. Waiting for you, the code owner. Nothing has been written to acme/rider.

Your approval is enough (1 of 1). Write access to acme/rider is requested only when the fix starts.

This is the one decision Mendloop asks of a person. Press Approve fix to run the rest of the loop on sample data.

From error to merged fix

The loop runs on its own. A person makes one decision, and every step leaves a record you can open.

  1. An error comes in and becomes one issue.

    Events from Sentry, your logs or our SDK are grouped by fingerprint, scored P0 to P4 and given an owner from your CODEOWNERS file. A ticket opens in Jira or Linear if you want one.

    The Issues list in Mendloop. NullPointerException in CheckoutViewModel.submit is P1 on android 5.42.0 with 1,840 users, waiting for approval, ticket MOB-123.
  2. Then it finds the line that broke.

    It reads the stack trace, recent commits, logs and past incidents, names the change that caused it and links every claim to its evidence. A claim without a source is dropped.

    The war room: the root cause sentence with numbered citations, 0.86 confidence, pull request #881 named as the cause, and line 142 of CheckoutViewModel.kt highlighted.
  3. The code owner says yes, once.

    One message in Slack, Teams, email or on the phone, carrying the cause and the change. Approve, request changes, reassign or mark it not a bug. Reminders follow your rules.

    Two phone screens: a push notification saying the fix is ready, and the approval screen with the root cause, the fix and an Approve fix button.
  4. A tested pull request opens.

    On a new branch from main: the fix and a regression test that fails before and passes after. Build, lint and your tests run in a sandbox. Mendloop never pushes to main.

    The fix as a diff in CheckoutViewModel.kt, plus a new test file with 31 lines, and a note that the regression test fails on main and passes with the fix.
  5. Merged, and the ticket closes.

    Your reviewers merge as usual. The ticket moves to Done, and everyone involved hears about it in the same chat thread.

    The notifications inbox: an approval request, a regression alert, a merged pull request and, from yesterday, a gold Verified line: fixed in 47 min, 1,840 users protected.
  6. Verified, then remembered.

    Mendloop watches the next release. If the error stays gone the issue is verified; if it comes back, the issue and the ticket reopen. The Brain keeps the cause, the fix and what your team turned down.

    Ask the Brain: an answer about checkout state restoration with three cited sources, INC-42, pull request #644 and the CheckoutViewModel.kt module card.
The Issues list in Mendloop. NullPointerException in CheckoutViewModel.submit is P1 on android 5.42.0 with 1,840 users, waiting for approval, ticket MOB-123.
The war room: the root cause sentence with numbered citations, 0.86 confidence, pull request #881 named as the cause, and line 142 of CheckoutViewModel.kt highlighted.
Two phone screens: a push notification saying the fix is ready, and the approval screen with the root cause, the fix and an Approve fix button.
The fix as a diff in CheckoutViewModel.kt, plus a new test file with 31 lines, and a note that the regression test fails on main and passes with the fix.
The notifications inbox: an approval request, a regression alert, a merged pull request and, from yesterday, a gold Verified line: fixed in 47 min, 1,840 users protected.
Ask the Brain: an answer about checkout state restoration with three cited sources, INC-42, pull request #644 and the CheckoutViewModel.kt module card.

What makes Mendloop different

Six settings from the product, as switches. Turn one on to read what it does.

Read-only until an owner approves.

Every connection starts with read scopes. Write access is a separate grant, requested the first time a fix needs it and issued for that one branch. A single switch stops every write.

Every claim cites its evidence.

Each sentence of a root cause links to the log line, commit, trace or past incident behind it. A claim with no citation is dropped before anyone reads it.

Test mode for every workflow.

Test mode has its own data and targets: #mendloop-test, Jira TEST and a fork of your repo. Any write without a test target is simulated and recorded, never sent.

Any model, including local ones.

OpenAI, Anthropic, Gemini, Mistral, Bedrock, Azure or any OpenAI-compatible URL. We recommend Claude for root causes and fixes; small local models on Ollama or vLLM still work, through plan-then-fetch.

Nothing personal is stored.

User IDs, emails and IP addresses are kept as keyed hashes, HMAC-SHA256 with a key per organization. Mendloop can say 1,840 users hit a crash, never who they were.

Every fix is remembered.

Each incident, fix and rejected approach is kept with its source. INC-42 in March is why MOB-123 was fixed with SavedStateHandle in 47 minutes.

A sixteenth-century Korean stoneware tea bowl with combed white rings, its cracks and chipped rim repaired with gold lacquer.

Mended in gold

Kintsugi repairs a broken bowl with lacquer and gold, so the mend stays visible and becomes part of the bowl’s history.

That is the idea behind the name. A fix should not vanish into a commit nobody reads: each one keeps its cause, its evidence, who approved it and how it held up in the next release. The seam in our mark is that gold line.

Tea bowl, Korea, Joseon dynasty, 16th century, repaired with gold lacquer. Ethnological Museum, Berlin. Photograph by Daderot, CC0.

Works with what you run.No new SDK needed.

Read the setup guide

Already on Sentry? Change one line, the DSN, and any Sentry SDK reports to Mendloop. Gold marks what works in the beta today; the rest is on the way.

// any Sentry SDK: point the DSN at Mendloop, nothing else changes
Sentry.init({ dsn: "https://YOUR_PUBLIC_KEY@ingest.getmendloop.com/42" });
  • Available
    Sentry
    Connect the API, or keep your Sentry SDK and change the DSN.
    Reads issues and events. Resolves only with approval.
  • Available
    Mendloop browser SDK
    One script tag. Inputs are masked in the browser before anything is sent.
    Speaks the Sentry envelope format
  • Coming
    Android and iOS SDKs
    With ProGuard mapping and dSYM upload in the build.
    Two lines in your app
  • Coming
    React Native and Flutter
    Thin wrappers over the native SDKs.
    Same envelope format
  • Coming
    Crashlytics
    Connect the project; nothing to install.
    Reads crashes
  • Coming
    Bugsnag
    Connect the organization; nothing to install.
    Reads errors
  • Coming
    CLI and MCP server
    npx mendloop init adds the SDK and sends a test error.
    From your terminal or editor

Every connection ends with a verify run: auth, scopes, a sample read and a webhook round trip. Health is checked again every 15 minutes.

Open source and self-hosting

Licence
Apache-2.0
Needs
Postgres 16 and Redis 7
Smallest install
2 vCPU, 4 GB memory

Mendloop’s core is Apache-2.0. Beta teams can self-host it on request; the public repository opens at release. The code that runs our cloud is the code you can run: the investigators, the approval gate, the fix sandbox and the Brain. Self-host it with Postgres and Redis and nothing else, bring your own model keys or run local models, and no telemetry leaves your install unless you turn it on.

Two commands

# needs Docker, git and make
$ git clone https://github.com/mendloop/mendloop && cd mendloop   # beta access; public at release
$ make setup        # .env with fresh keys, Postgres and Redis, migrations
$ docker compose up -d

What’s in it

Core, Apache-2.0

  • Ingest, issues, dedupeSentry, SDKs
  • Root-cause investigatorsAny model
  • Approvals and remindersChat, phone
  • Fix sandbox and pull requestsDocker or CI
  • Test modeDry-run writes
  • The Brainpgvector
  • Privacy layerHash, scrub

ee/, with a licence key

  • Single sign-onOIDC, SAML
  • SCIM provisioningEnterprise
  • Audit log exportBusiness
  • Advanced approval policiesEnterprise

Built to forget

If our database leaked, it would reveal as little as possible about anyone. Mendloop needs to know that 1,840 users hit a crash, not who they are. How we handle data

HMAC-SHA256User IDs, emails and IPs, keyed per organization
AES-256-GCMTokens and vault secrets, envelope-encrypted
{{secrets.*}}All a model ever sees of a secret
Read-onlyUntil an owner approves; write tokens are issued per fix
30 daysRaw events, then deleted. Issues keep aggregates only
Row-level securityIn Postgres, on every organization
Crypto-shreddingDelete an organization and its key goes with it
argon2idFor passwords, or no password at all with SSO
No telemetryFrom self-hosted installs, unless you opt in
EU or USCloud region, chosen when you sign up
Plans and prices

Pricing

Compare every feature
Open source$0 foreverOn your servers Team$29 per seat a monthMendloop Cloud Business$79 per seat a monthMendloop Cloud EnterpriseCustomCloud or your servers
Events a monthYour hardware1 million5 millionCustom
Investigations a monthUnlimited3001,500Custom
AI modelsYour keys or local$5 credits per seat, or your keys$15 credits per seat, or your keysCustom, or your keys
Event retentionYou decide30 days90 daysCustom
Sign-inGitHub, Google, emailGitHub, Google, emailSSO with OIDCSAML and SCIM
SupportCommunityEmailPrioritySLA
Request self-host access Request access Request access Talk to us

Pricing

Open source

$0 forever

Events a month
Your hardware
Investigations
Unlimited
AI models
Your keys or local
Support
Community
Request self-host access

Team

$29 per seat a month

Events a month
1 million
Investigations
300 a month
AI models
$5 credits per seat a month
Event retention
30 days
Request access

Business

$79 per seat a month

Events a month
5 million
Investigations
1,500 a month
Sign-in
SSO with OIDC
Event retention
90 days
Request access

Enterprise

Custom

Sign-in
SAML and SCIM
Where
Cloud region of your choice, or your servers
Support
SLA
Talk to us
Compare every feature

Questions

  • No. Connect Sentry’s API, or change one line in any Sentry SDK, the DSN, to point at Mendloop. Your Sentry setup keeps working.

  • Never. It writes the fix on a new branch and opens a pull request. Your reviewers merge it, the same way as any other change.

  • Redacted evidence: stack frames, cited code and log lines, with personal data replaced by tokens like <email_1> and secrets by {{secrets.*}}. Every prompt is stored after redaction, so you can audit it.

  • Any you trust. We recommend Claude for the strongest tier, where root causes and fixes are written. Local models work too, with a switch that blocks every external provider.

  • Request changes and the plan is redone before any code is written. If CI fails on the pull request, Mendloop tries twice more, then reports to the owner. If the error returns after release, the issue and ticket reopen.

  • Anything that produces a stack trace. Code is parsed with tree-sitter, and JavaScript source maps, ProGuard mappings and dSYMs are symbolicated.

  • About 15 minutes for an Admin: connect code, add an error source, pick a model, connect chat and send a test error. npx mendloop init does the SDK and the test error for you.

  • Yes. Every core feature is Apache-2.0. Enterprise single sign-on, SCIM, audit export and advanced policies live in ee/ and need a licence key.

  • Mendloop is new. The first release covers Sentry, the browser SDK, GitHub, Slack, Jira, Linear, GitHub Issues and every model provider. The rest of the list above is marked as coming.

Approve your first fix

Mendloop is in private beta. Request access and we’ll set up your workspace with you: connect GitHub read-only, send a test error, and approve your first fix within a minute.

Rather run it yourself? Self-hosting is open to beta teams on request.

Reserve your workspace

Mendloop is in private beta. Choose a workspace name and we’ll email you to set it up.

app.getmendloop.com
Where your data lives
Request access

Read-only to start. Nothing is written until an owner approves.