Comms suck. Anyone who has operated in the real world learns that mantra on the first day.

But experience shows there are layers. And nuance.

When I started, “comms suck” meant radios didn’t work. About the time we invented the wheel, I think. Later, we were convinced that IP networks would change everything — like having bunk beds instead of cots. So much more productive.

Turns out if two orgs didn’t like talking to each other on the radios — regardless of whether there was a hill in the way — data networks don’t help much either. So while we like to blame the geeks for our technical woes in the field, “comms suck” is often not a technical problem at all.

Took me too long to figure that out.

I don’t have all the answers. But Semstreams was designed to embrace as much of the technical, cultural, political, and economic factors as I could — because the problem was never just the pipes.


The irony is that the technology we built to fix the problem made the same assumption we had always made — that conditions would cooperate. Current AI infrastructure is the latest version of that: always-on connectivity, abundant compute, enormous token budgets. Ambient affluence. And when it works, it works great. But it was not designed for the hill in the way.


Turns out I have to give credit to the Air Force for something useful.

OODA was designed to work when the hill is in the way. Observe, Orient, Decide, Act — a decision loop built for fast-moving, high-uncertainty environments. I kept recognizing it in what I was already building, because it works really well when conditions will not cooperate.

What each stage actually means when the environment degrades:

Observe means you capture everything locally, because you do not know when you will have a chance to sync. The graph is your record. Not the log.

Orient means you maintain typed relationships, not a flat event stream — because a log is useless without context. And orientation breaks when systems do not share vocabulary. Semstreams handles this pragmatically. Dotted notation internally — typed relationships, consistent identifiers, a vocabulary system that gives the graph coherent structure. At the boundaries, you bring what you have. The system meets you there. You do not have to adopt a prescribed ontology to get value from day one. You take what you need and leave what you do not.

Decide means deterministic rules run first, before you invoke judgment — because deterministic is cheaper and auditable.

Act means the loop closes — and then starts again. The tier progression maps to escalating trust in the environment. Start with what works offline. Add intelligence when you can afford it.


Semstreams is what that philosophy looks like as a framework.

Streaming data turns into a live knowledge graph. Rules evaluate continuously. When rules are not enough, workflows orchestrate. When workflows need judgment, agents reason. Each layer earns its place. None of them are required until the problem demands them.

And when things go wrong — because they will — the system degrades through the tiers rather than off a cliff. Connectivity fails: the graph holds locally and syncs when the link comes back. The LLM is unavailable: rules and workflows keep running. Vocabulary is incomplete — because it always is when two systems meet. Structural relationships still function. The system doesn't wait for perfect agreement to start working. Each layer is genuinely independent. You do not lose everything when you lose something.

That is not an accident. That is the design principle.


This is an alpha release. Breaking changes will happen. The documentation reflects where we are, not where we are going. I am releasing it now because the people who need it do not need it to be finished — they need it to be honest. If your requirements are clearer in production than they were on paper — this was built for you.

If you have watched an agent confidently do the wrong thing with no record of how it got there, the next piece of this is for you too.


Thirty years of watching systems struggle at the seams taught me one thing: the environment will not cooperate. Design accordingly.

Semstreams is open source and available now. It is early. Come break it.