01 / Rationale
Why Rust is a differentiator
In ProgressMost transportation software is built on garbage-collected runtimes and grows through layers of scripts and adapters. Kordspace is moving its open-source projects to Rust because safety, performance and portability compound over the life of an operational system.
Ownership and borrowing eliminate data races and use-after-free defects at compile time. Enum-based state machines make illegal lifecycle transitions impossible to express. Predictable latency matters when a gateway is ingesting thousands of telematics pings or a partner floods an EDI endpoint.
- Memory safety without garbage collection
- Explicit, typed lifecycle states
- Native, WebAssembly and embedded targets
- A single toolchain: cargo, clippy, rustfmt

02 / Proposed stack
The proposed layers
PlannedThe proposed service core is a modular monolith using Axum for HTTP and SQLx against PostgreSQL. Domain crates contain no I/O; they define types, transitions and validation. An outbox-backed event crate publishes provenance-tagged events for subscribers.
Dioxus provides operator interfaces: a dispatch board for desktop and web via WebAssembly, and tablet or handset views for docks and drivers. Because components consume the same domain types, a field rule changes once and every surface agrees.

Core transportation records
Load · Stop · Customer · Carrier
Operational modules
Dispatch · Documents · Milestones · Equipment
Integration edges
WMS · ERP · Telematics · EDI · Accounting
Insight & automation
Reporting · Decision support · Responsible AI research
03 / Illustrative code
Lifecycle states as types
The fragment below illustrates the modeling style under discussion. It is not taken from a released crate.

// illustrative only — not a published API
pub enum LoadState {
Draft,
Tendered { carrier: CarrierId },
Assigned { carrier: CarrierId, driver: Option<DriverId> },
InTransit { since: Timestamp },
Delivered { pod: Option<DocumentId> },
Closed,
}
impl Load {
pub fn record(&mut self, ev: ShipmentEvent) -> Result<(), TransitionError> {
self.state = self.state.apply(&ev)?; // illegal moves fail here
self.events.push(ev.with_provenance());
Ok(())
}
}04 / Interfaces
Dioxus across web, desktop and mobile
PlannedDioxus offers a React-like component model in Rust with web, desktop and mobile renderers. Interfaces stay thin: they present state and collect intent, while domain crates decide. Third-party interfaces over the API remain first-class.

05 / Edge
A path to hardware and IoT
FutureThe same event crate could compile for an ARM gateway in a truck cab or a dock-door controller. That is what makes Rust strategic for Kaporeal: hardware integration can share the exact schema the TMS uses, rather than relying on a vendor's translation layer.

06 / Honesty
Trade-offs we acknowledge
Rust has longer compile times, a steeper learning curve and a smaller logistics-specific ecosystem than JavaScript or Java. Some partner SDKs will need wrappers. Kordspace considers these costs worth paying for a long-lived open foundation, and contributors are welcome to challenge that reasoning.
