SaaS Automation Engine - Personal or Commercial
Production-grade C++20 webhook reliability engine. 5.89 µs mean, 170k/sec throughput. 40 files, 211KB source. Windows/Linux/macOS binaries. Personal license: $299.
- Latency (measured)
- 4.07 µs
- Throughput (measured)
- 246k/sec
- Price
- $299
Measured on win32-x64 (ZachsNitro · 13th Gen Intel(R) Core(TM) i5-13420H · 12 threads) · 2026-10-11 · 50,000 iterations · bot bench - task scheduler, 12 workers · per-task p50 2 µs, p95 4 µs, p99 4 µs
About this bot
SaaS Automation Engine - Webhook Reliability Engine Stop losing webhooks. This is a production-grade, C++20 SaaS Automation Engine built for reliability under load — not a no-code wrapper. Built for founders and engineers who need guaranteed delivery, retry logic, and a durable journal without building it from scratch. Measured Performance — Not Marketing: Measured: 5.89 µs mean / 170k/sec x1e32-x64 - 2026-10-02 - 50,000 iterations - bot_bench - task_scheduler_12_workers This is from a real production build, not a benchmark estimate. Architecture: Build Tier Standard: One worker per core, 3 retries, durable journal Codebase: 40 files, 211KB source — clean, auditable C++20 Blueprint: Generates the matching C++20 project for your stack Binaries: Windows / Linux / macOS included 14-Point Reliability Engine: Set by True-Worth calculator from the engine's actual code (see breakdown on page) What You Get: Full source + build system Pre-built binaries for 3 OSes Durable journal + retry system out of the box Commercial path available: Personal $299 / Commercial $750 License - This Listing: Personal - Single Deployment ✓ 1 person, 1 deployment ✓ Personal, non-commercial use × No client resale × No white-label Agency / white-label licensing covers the whole catalogue and is arranged by contact.
Code preview
first 100 lines of src/core/handler_registry.cpp - c++201#include "handler_registry.h"2 3#include <algorithm>4 5namespace wre {6 7void HandlerRegistry::register_factory(const std::string& category, CommandFactory factory) {8 const std::lock_guard<std::mutex> lock(mutex_);9 factories_[category] = std::move(factory);10}11 12bool HandlerRegistry::load_config(const std::string& path, std::string& error) {13 auto parsed = bs9::Json::parse_file(path, error);14 if (!parsed) {15 error = "cannot read " + path + ": " + error;16 return false;17 }18 return load(*parsed, error);19}20 21bool HandlerRegistry::load(const bs9::Json& config, std::string& error) {22 const std::lock_guard<std::mutex> lock(mutex_);23 24 if (!config.is_object()) {25 error = "config root must be an object";26 return false;27 }28 29 const bs9::Json& retry = config["retry_policy"];30 if (retry.is_object()) {31 const double attempts = retry["max_attempts"].as_number(8.0);32 if (attempts >= 1.0) default_max_attempts_ = static_cast<int>(attempts);33 }34 35 const bs9::Json& enabled = config["enabled_categories"];36 if (!enabled.is_array()) {37 error = "enabled_categories must be an array of category names";38 return false;39 }40 41 const bs9::Json& secrets = config["webhook_secrets"];42 const bs9::Json& downstream = config["downstream_urls"];43 const bs9::Json& per_category = config["handlers"];44 45 configs_.clear();46 instances_.clear();47 48 std::vector<std::string> missing;49 50 for (const bs9::Json& entry : enabled.as_array()) {51 const std::string category = entry.as_string();52 if (category.empty()) continue;53 54 // A category cannot be enabled without an implementation. Refusing here is55 // the difference between a bot that does nothing and a bot that does not56 // exist - and the second one is the honest answer.57 if (factories_.find(category) == factories_.end()) {58 missing.push_back(category);59 continue;60 }61 62 HandlerConfig handler;63 handler.category = category;64 handler.enabled = true;65 handler.secret = secrets[category].as_string();66 handler.downstream_url = downstream[category].as_string();67 68 // A per-handler block may override the secret, the downstream and the69 // retry ceiling for one category without touching the others.70 const bs9::Json& own = per_category[category];71 if (own.is_object()) {72 if (own["secret"].is_string()) handler.secret = own["secret"].as_string();73 if (own["downstream_url"].is_string()) {74 handler.downstream_url = own["downstream_url"].as_string();75 }76 const double attempts = own["max_attempts"].as_number(0.0);77 if (attempts >= 1.0) handler.max_attempts = static_cast<int>(attempts);78 // An explicit "enabled": false wins over the enabled_categories list.79 if (own["enabled"].is_bool() && !own["enabled"].as_bool()) continue;80 }81 82 configs_[category] = std::move(handler);83 }84 85 if (!missing.empty()) {86 error = "enabled but no handler compiled in: ";87 for (std::size_t i = 0; i < missing.size(); ++i) {88 if (i > 0) error += ", ";89 error += missing[i];90 }91 error += ". Add a file under src/commands/ and register it, or remove it "92 "from enabled_categories.";93 return false;94 }95 96 if (configs_.empty()) {97 error = "no categories enabled - the engine would accept nothing";98 return false;99 }100 This is the real file from the archive you receive, with your listing's metadata already substituted.
Licence options
Every licence ships the same source. What differs is how far you may deploy it and whether you may put your own brand on it.
Personal is for one person on one deployment, not for business use. Commercial costs more because it covers your whole organisation on up to 3 deployments, including services you sell to your own clients: the same code, with the rights a business needs.
This listing is $299 — Standard build tier. The price decides what is in the archive; the licence marked below decides what you may do with it, and is the one that ships in your LICENSE.txt.
| Licence | Price | Deployments | White-label | Included |
|---|---|---|---|---|
Personal - Single deployment This listing | $299 one-time | 1 | No |
|
Commercial - Team use | $750 one-time | 3 | No |
|
Agency Bundle - 5 Client Pack | $5,000 one-time (all bots · contact sales) Email to buy | 5 | No |
|
Agency Unlimited ($7500 one-time) | $7,500 one-time (all bots · contact sales) Email to buy | Unlimited | No |
|
Enterprise / White-label (Custom) | CustomRequest a quote | Unlimited | Yes |
|
Personal and Commercial are sold here. Agency and Enterprise cover every bot in the catalogue and are arranged by email: use the button on that row and we reply with a payment link. Questions first? Contact us.
Enterprise is quoted rather than listed. The licence that ships in your archive's LICENSE.txt is the one marked above. Licence prices are what each grant is worth; checkout charges this listing's price, once.
One-time, compared with subscriptions
| Option | Price | Source |
|---|---|---|
| This engine | $299 Personal / $750 Commercial, once | this page |
| Hookdeck Team / Growth | $39/mo / $499/mo | hookdeck.com |
Prices looked up 2026-09-27; check the source before relying on them. A hosted service gives you a web interface and its own support, which this does not; this gives you the source, offline use and no renewal.
What's inside
Webhook reliability engine: 260KB of source (5,961 lines of logic, 43 files), plus the shared agent core. Everything below is counted from that code — nothing on this list comes from the listing text.
bot benchbot dead-letterbot doctorbot licensebot recoverybot servebot telemetrybot verify-bundle
6 task handler(s), each with retries and a durable journal: facebook, generic, lead_ingest, paypal, shopify, stripe
- Tests
- 28 checks across 1 suite(s), all passing (run 2026-09-27)
- Output
- readable text · JSON · delivery to webhooks / endpoints
- Resilience
- Deduplication, a dead-letter queue and crash-recovery replay.
- Speed
- Measured: 4.07 µs mean / 246k/sec — win32-x64, 2026-10-11, 50,000 iterations, bot bench - task scheduler, 12 workers. The live test below runs on this site's server, which has fewer cores than the build machine, so its timings are lower than this.
TEST IT - LIVE RUN
Runs the Webhook reliability engine this listing ships - compiled C++, on our server, right now. What you see is its real output and real timing. This server has fewer cores than the machine the listed figures were measured on, so expect lower numbers here. Runs against a fresh, empty data directory. `serve` (the HTTP receiver) is not available in the live test; these are its offline self-checks, benchmark and queue tools.
Pick a command below or type one, then press Enter. One command per run; this is a read-only demo copy of the engine, and nothing you type is kept.
- Every subsystem checked: 6 source handlers, journal, dedup, dead-letter
- 20,000 events through the engine
- What a restart would replay from the journal
- Events that exhausted their retries
