From the Lab

What I build when
I set myself
the brief

None of my work over the past 30 years would have been possible without open source — and I would like to give something back. These projects hold what has accumulated over those years: insights from client work, much of which did make it into those projects. Other ideas did not, because the scope was too tight or the timing was wrong — good approaches that were left on the table. Those are the ones I finish here and release under a free licence. Not a hobby project: it is the same software that runs in my own products.

Release in preparation

HiveWeaver — Automate processes, simulate the future

Two jobs, one platform. HiveWeaver lets AI agents take on real work — handling cases, operating systems, keeping processes moving. And it lets those same agents rehearse a process harmlessly before it meets real customers. The real appeal is the combination: first the rehearsal, then your approval, then the very same thing for real.

One half is automation. Agents take on recurring tasks, reach into your systems and work through cases without anyone starting each one by hand. To keep that accountable, every step declares up front what it will do — and anything that costs money, cannot be undone or touches sensitive data waits for explicit approval. No agent spends money unnoticed. The other half is the preview. How will an audience react to a campaign before you release the budget? Where does a process break when people do not use it as designed? For that, HiveWeaver populates a situation with hundreds of agents that have roles, react to one another and decide — realistic, but without consequences. And the two interlock: a process first runs as a rehearsal, you see the likely outcome, you approve — and the very same process then does the work for real. It stays affordable because most decisions need no language model at all, just plain rules; the model steps in where it earns its price. Which model does the work is your choice — a major provider or one on your own hardware. HiveWeaver runs on your infrastructure, not in someone else's cloud.

What sets it apart

  • Agents that actually act: they operate your systems and work through cases instead of merely making suggestions.
  • Approval where it counts: anything that costs money or cannot be undone waits for your explicit yes.
  • Rehearse first, commit second: the same process first runs without consequences — you see the outcome and decide whether it should run for real.
  • Traceable and affordable: for every action you can tell why it turned out that way and what it cost; simple decisions run as rules rather than expensive model calls.
  • Stays in-house: runs on your own infrastructure with the language model of your choice, including a local one.

Technology

  • .NET
  • .NET Aspire
  • Microsoft Orleans
  • PostgreSQL
  • SignalR
  • Angular
Licence
Apache-2.0

The source code is currently being prepared for release. Once the repository is open, the link will appear here.

What you can rehearse before it counts

An announcement that could backfire. You describe your plan in one sentence and add a few of your own documents — market analyses, reactions to earlier decisions, feedback from retailers. From that, HiveWeaver builds the audience itself and plays the announcement through. The bundled example is a manufacturer who will no longer include a charger in the box: how does that land, and with whom does it land worst?

A vote before the vote. Five thousand citizens in different circumstances, plus a handful of voices with reach. The same policy is played through in three versions — in the example a four-day week, a congestion charge and school uniforms. In the end you see not only which version carries the most people, but also which argument sinks the others.

A campaign across several channels. The same content as a video, as an image campaign and as a professional post, each against the audience that actually spends time there. Or, a size up: ten thousand traders betting on an outcome — the likely price settles by itself, without anyone setting it.

What all of these have in common is that you end up not with a gut feeling but with a written result and its reasoning — plus the ability to read back every individual reaction that led to it.

Where it goes beyond a single AI assistant

Adding appointments, answering and sorting emails, sending a summary at six in the morning: HiveWeaver handles that too, and the matching flows ship as ready-made examples. It is simply not what sets the platform apart from other systems — plenty of tools solve those tasks by now.

The difference shows where many cases run at once and influence one another. Take a wholesaler's complaints handling: hundreds of cases a day, dragging on for weeks, with queries, partial deliveries and escalations. In HiveWeaver every case gets its own agent that accompanies it from beginning to end and remembers what has happened so far — no context that has to be reassembled on every call. Alongside them stand roles: a reviewer, the specialist department, the approver. They talk to each other instead of working through a rigid chain.

A case where nothing is happening right now costs nothing. That is why ten thousand of them can be open at the same time without the bill exploding. This is precisely the difference from an assistant you pay per call and that forgets what it was about after each one.

The real advantage, though, comes earlier. Before a single real customer is affected, you run that same process against invented customers — including the awkward kind who fill the form in wrongly, chase three times and cancel in the end. You see where it jams, improve it, and only then switch to live operation. It is the same process, not a test version of it. With an off-the-shelf assistant you go live and hope.

On top of that come the things such projects usually founder on inside a company: everything can stay in-house, language model included. Every step is provable after the fact — who, when, why, at what cost. And anything that costs money or cannot be undone waits for approval instead of simply happening.

What it costs — and how you steer it

In AI projects it is usually not the technology that becomes the problem but the invoice at the end of the month. That is why HiveWeaver settles up front which decision may consult a language model and which may not.

An example from the bundled scenarios: on a marketplace the market maker calculates by fixed rules — it needs no model to match supply and demand. Only the traders, who are meant to read a mood, actually ask. The bulk of operations therefore costs nothing.

The same distinction works within a single run: the few voices with reach get the expensive, careful model — the thousand listeners in the audience get a cheap one. The result stays meaningful, the bill stays manageable.

And because what every single step cost is recorded, after the first run you can see in black and white where the money goes — instead of finding out at the end of the month.

Released

Stratara — The framework for modern software solutions

Every larger business application raises the same questions. How does an input reliably reach the database? How do reports keep pace with the data? How do multi-step processes finish cleanly, even when something goes wrong along the way? Who is allowed to do what? Stratara brings these building blocks ready-made and matched to one another, instead of assembling them from four separate libraries.

The individual building blocks are nothing special — the .NET world offers each of them several times over. The effort lies in fitting them together: every library follows its own release rhythm, and the seams between them come back to bite you after a year or two. In Stratara everything belongs together and moves forward together. Three things mattered most to me. First, speed: the application should not wait while writing happens in the background, and as load grows the work should spread across more machines rather than a bigger one. Second, traceability: every operation stays fully recorded, and anyone changing the database behind the application's back is exposed at the next check. Third, data protection from the outset: even a system that forgets nothing must be able to erase personal data on request — so Stratara deletes the key rather than the data, making it unreadable even in old backups. I built Stratara for my own products because I wanted all of this to be the normal case, not an expensive add-on. That is why it carries the MIT licence — free to use, commercially too.

What sets it apart

  • All of a piece: inputs, operations, reporting, multi-step processes and sign-in interlock and are maintained together.
  • Grows with the load: as traffic rises the work spreads across more machines — no rebuild, no bigger box.
  • Audit-ready in production: every operation stays traceable, and changes made behind the application's back are exposed.
  • GDPR without a break: personal data can be erased without destroying the history — right into old backups.

Technology

  • .NET
  • PostgreSQL
  • Entity Framework Core
  • RabbitMQ
  • Azure Service Bus
  • OpenTelemetry
Licence
MIT

How an operation travels through the system

An input is not processed on the spot — it is accepted and acknowledged. The interface gets its confirmation within milliseconds and does not wait for writing, checking and reporting to finish in the background. To the user the application feels responsive even when there is a lot to do behind the scenes.

The actual work is distributed by a message bus to workers that share the load between them. As demand grows you put more workers next to them, on the same machine or on additional servers. That is the difference between "we need a bigger machine" and "we start three more instances", and it decides your cloud bill later on.

So that multiple workers do not get in each other's way, the data streams are fixed across 4096 partitions. For any single business case exactly one worker writes — across different cases everything runs in parallel. Reporting is then actively notified rather than polling in a loop to ask whether anything is new. That is why read data is virtually up to date without a database being queried constantly for nothing.

Flow diagram: inputs from the interface, a background job and an AI agent go to a message bus that distributes the work across several worker nodes; these write into the event store with 4096 partitions, which actively notifies the projections
The path of an input: acknowledged immediately, distributed across any number of workers in the background, finally handed to the projections without polling.

Why it stays fast even with large volumes

In .NET methods are often invoked dynamically — convenient for the developer, but every single call costs something. On a business case with ten entries you will not notice. On one that has grown over years it adds up with every entry. Stratara therefore translates these call paths once into a fixed function and then calls it directly. What has been resolved once stays resolved.

The effect is measurable. A business case with a million entries is rebuilt completely in a good eleven milliseconds — and memory use stays constant at 64 bytes regardless of length. Put differently: no garbage is produced for the memory manager to clean up later, however long the history grows.

The numbers come from a fanless MacBook Air, not from a tuned server. They are conservative rather than flattering — and you can re-measure them yourself, the benchmark project is in the repository.

Benchmark table: 10,000 entries in 0.11 ms, 100,000 in 1.13 ms, 1,000,000 in 11.6 ms — memory use stays at 64 bytes in all three cases
Time grows linearly with volume, memory use does not at all — a hundred times the data, the same 64 bytes.

When someone tampers with the data after the fact

Every entry carries the fingerprint of the one before it. If an amount is later changed directly in the database — through a faulty migration, a restored backup, or deliberately — the recalculated fingerprint no longer matches the stored one. The next verification pass does not merely report that something is wrong, it names the exact position.

A chain like this on its own will not stop someone with full database access who simply recalculates every fingerprint. That is why a checkpoint can be anchored outside your own infrastructure at regular intervals. Stratara records that point; you connect the external source. I would rather say this plainly than promise more with the word "immutable" than the technology delivers.

Comparison of two chains: above an untouched chain of three entries whose fingerprints match; below the same chain in which an amount was changed from 50 to 5,000 — from that entry on the fingerprints no longer match
Above the untouched chain, below the same one after a silent edit: the break becomes visible at exactly entry 2.

Erasing without destroying the history

Anyone wanting to truly remove one person's data would have to catch it everywhere at once: in the history, in every report derived from it, in intermediate states, in every copy and in every backup ever taken. Within the statutory 30-day window that is barely achievable in a provable way — one overlooked backup is enough.

Stratara turns the task around. Each data subject's information sits under its own key. A single call destroys that key, and with it every copy becomes unreadable in one go — including those nobody can technically reach any more. The history stays complete, but the person can no longer be reconstructed from it.

The same mechanism carries two further topics: it separates different customers' data cryptographically, and it provides the key management that auditors ask about under SOC 2 and ISO 27001.

Diagram: one call destroys a person's single key; as it is the only key that decrypts the data, history, snapshots, backups as well as replicas and exports all turn into permanent noise at once
One call, one key — and every copy becomes unreadable at the same moment, backups included.
Working together

The same care
for your project

These projects are the most honest work sample I can offer: you can read the source, follow the decisions and judge for yourself whether you like what you see. That is exactly how I approach client work too. Tell me about yours.