BotStudio9
SaaS Automation
Featured

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++20
src/core/handler_registry.cppc++20
1#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 is
55 // the difference between a bot that does nothing and a bot that does not
56 // 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 the
69 // 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.

LicencePriceDeploymentsWhite-labelIncluded
Personal - Single deployment
This listing
$299 one-time1No
  • 1 person, 1 deployment
  • Personal, non-commercial use
  • No client resale
  • No white-label
Commercial - Team use
$750 one-time3No
  • Up to 3 deployments
  • Any number of users in one organisation
  • Commercial use, including services you sell
  • No source resale or sublicensing
  • No white-label
Agency Bundle - 5 Client Pack
$5,000 one-time
(all bots · contact sales)
Email to buy
5No
  • Up to 5 client deployments
  • Per-client keys
  • Agency use allowed
  • Email support
  • No white-label
Agency Unlimited ($7500 one-time)
$7,500 one-time
(all bots · contact sales)
Email to buy
UnlimitedNo
  • Unlimited deployments
  • Unlimited keys
  • Agency use allowed
  • Priority support
  • All future updates
  • No white-label
Enterprise / White-label (Custom)
CustomRequest a quoteUnlimitedYes
  • Everything in Agency Unlimited
  • Full white-label with your logo
  • Custom domain
  • Source code option
  • Dedicated support
  • Custom SLA

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

OptionPriceSource
This engine$299 Personal / $750 Commercial, oncethis page
Hookdeck Team / Growth$39/mo / $499/mohookdeck.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.

Read from the source

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.

8 commands you can run
  • bot bench
  • bot dead-letter
  • bot doctor
  • bot license
  • bot recovery
  • bot serve
  • bot telemetry
  • bot 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.
Real engine · server-side

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.

All commands →
bs9@botstudio9:~/saas-automation-engine-personal-or-commercial

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.

$
Commands to try - click to load, or copy
  • 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