Holdfast

For freelance developers who look after their clients' integrations

Every webhook,
held fast.

When Stripe or GitHub sends a message and your client's app stumbles, that message is usually gone for good. Holdfast keeps every one safe, explains what went wrong in plain words, and sends it again once it's fixed.

No sign-up for the demo. Live mode asks GitHub for one permission: managing webhooks.

What your client reads

Not a stack trace. A sentence.

When something is held, Gemma reads what code found and explains it twice: once for the shop owner, once for you. Code checks every word it writes for the owner: no jargon, no invented numbers, no promises nobody made.

Stripe · payment received · ₹1050 from Nisha

The message arrived in a new layout

Nisha's ₹1050 payment couldn't reach Chai & Co. because the sender changed how they send customer information. Holdfast is keeping it safe, and it can be sent again once the system is updated to expect the new format.

For the developer

The sender now uses data.object.customer.id instead of data.object.customer_id. Change the app to expect data.object.customer.id.

A real answer from the demo, with gemma3:4b.

How it works

Five promises, each kept by code.

The model explains. It never decides what happens to a message.

Why an open model

Your clients' payments stay with you.

  • Private. Messages carry names, addresses and amounts. Gemma runs on the same server as Holdfast, so none of it goes to an AI company.
  • Cheap to run. No bill per message. One small model on one server explains every failure.
  • Checked. The model picks from a fixed list of causes and code checks what it writes. If it gets something wrong, the built-in rules answer instead.

What's real today

No surprises.

  • GitHub is live. Real repos, real webhooks.
  • Stripe connects by hand. One-click sign-in needs a Stripe platform account we don't have yet.
  • Demo customers are made up. The engine is the same one Live uses.
  • Explanations take a minute. You see a rules answer instantly; Gemma's replaces it.