Thinking ahead: the comms layer, and a polyglot edge

A direction post, not a shipped-feature post. Where the console goes next once the core is solid: resilient datalinks, gateways, a mission system, and integration through published standards. Plus the language question — why the edge goes polyglot while the core stays TypeScript.

This one is a direction post, not a shipped-feature post — everything below is designed-and-deferred, not built. I'm writing it down because the shape of the next phase is now clear, and capturing the reasoning is cheaper than rediscovering it later.

The console today is a clean operator station: multi-domain control, a real-device adapter, an honest air-gap story. The next phase is the layer underneath and around it — communications and networking — and the interesting decisions there are architectural and about language, not about any one feature.

What the next phase covers

Four capability areas, all sitting behind the existing ports:

I'm deliberately keeping the government side generic here. Anything that touches export-controlled or classified territory — certain link/waveform and cryptographic specifics — does not live in the open repository. The repo carries only the unclassified interface seams; the controlled pieces sit behind those seams in certified modules. That boundary is a feature, not a limitation.

The language question

Today the whole thing is TypeScript, and that's right for an operator console and a domain model. But a comms layer parsing bytes off a hostile link, doing crypto, and pushing packets is a different job. So the edge goes polyglot — per component, behind the ports — not a rewrite. The hexagonal seam is what makes this safe: a datalink adapter can be written in anything as long as it speaks the normalized contract over a local boundary. The console doesn't care.

If I had to pick one for the new comms-critical code: Rust. Performance with memory safety is exactly the property security-critical, network-facing code wants. I'm skipping the JVM unless I ever have to integrate an existing Java system — it's heavy for the edge and its pauses fight real-time work.

Why write this down before building it

Two reasons. The selfish one: deferring is only safe if the seams are real. The hexagonal architecture earns its keep precisely here — I can name an entire comms roadmap and not build any of it yet, because each piece has a port to slot into when its trigger arrives. Naming the plan isn't a commitment to build now; it's proof the architecture won't need surgery when I do.

The honest one: a reader should be able to tell what's running from what's planned. This is planned. Ang discipline na nagpapatotoo nito (the discipline that makes it credible) is already in place, though — license-clean dependencies, clean-room from public specs, controlled material kept out of the open tree, and a strict line between the air-gapped default and any connected mode.

Next up is unglamorous and foundational: wiring the command pipeline so every command actually flows through its checks. The comms layer waits its turn — but now it has a shape, and a language for each part of it.
Build log entry. Apache-2.0. Part of the multi-domain GCS build log.