Communication, Automation, and Intelligence Systems
We build software, mesh radios, bespoke hardware, and training simulators for military, emergency response, and government teams.
MILITARY INTELLIGENCE SIMULATOR
SANDTABLE
About
SANDTABLE is an intelligence-focused wargame simulator for training intelligence analysts and the developers who support them. Five minutes of training is enough to start a live or recorded simulation in two clicks and stream it to any number of users on modest hardware.
It trains analysts on the products they read. BLUFOR plans follow NATO doctrine. OPFOR plans follow the opposing force's doctrine. Message traffic uses APP-11(E). Units are drawn in APP-6 symbology.
SANDTABLE is an alpha release. Feature releases land monthly, and early adopters help decide what ships next.
Features
Watch a live scenario from a tactical engagement out to the full order of battle. Echelons scale with zoom, and the picture consolidates as you zoom out.
Give an order to a company and it passes down to its platoons and sections.
Draw NATO mission task verbs on the map: seize, advance to contact, screen, delay, and others. Assign units, select a commander, and the units are tasked to each objective.
Recce advances ahead of the force and reports. Screen, guard, and delay observe and report from a set position. Set an ROE and tactics for how a unit fights.
A unit fires only with line of sight to its target. Trees, buildings, and the ground between units affect movement, cover, detection, and sensing.
ISR sensors simulate gimbal angle, sensor altitude, and field of view. A camera sees the ground in front of the aircraft. A GMTI sensor covers a disc out to slant range. A roof or a tree line hides whatever that sensor cannot see.
Fidelity
Set how degraded the intelligence is before it reaches the analyst. One scenario file serves a first-week trainee and a senior analyst.
Every setting below is in the interface and takes effect immediately, including mid-run.
- Grid error in metres, set per side, so BLUFOR and OPFOR reporting can carry different accuracy.
- Text degradation on outgoing traffic: typo rate, displaced values, and missing fields.
- Reporting echelon rollup, from section to battalion.
- Aggregation windows per report type, and a movement threshold before a known target is reported again.
- Graduated identification. An observer reports VEHICLE, then TANK, then T-90A as confidence builds, and callsigns stay hidden until positive identification.
- Contact grace, shooter exposure, entrenchment time, and AI decision cadence.
- Speed factor for live play, or batch generation for datasets.
Reports
SANDTABLE emits APP-11(E) SPOTREP, CONTACT, SITREP, and BDA traffic. SALUTE fields come from what each observer could see at the moment of observation, not from ground truth.
Every format is an editable template with named placeholders. Rearrange sets, change wording, add or remove fields, or start from the included CAF and NATO layouts: 9-Liner, SHOTREP, FIRE MISSION, THREATWARN, and others. A new format is a text edit, not a code change. Analysts read those formats as the traffic.
Traffic goes out on the systems analysts already use. One bot account posts to any number of XMPP chat rooms, with per-room filters by report type and ORBAT subtree. A company net, a recce net, and an all-source room each receive a different subset of the traffic.
Voice output reads traffic aloud by echelon, separate from chat, so a cell can practise logging radio traffic by ear. Voice quality and clarity are adjustable.
Cursor-on-Target output sends the same picture to TAK over Mesh SA multicast, a TAK Server, or a UDP peer. Filter by side. Track and stale intervals are configurable.
- EXER/OPER nickname and classification headers on every message.
- Reports are immutable snapshots. Recall the full history of any unit at any point in the run.
- Battle damage assessment rolls up by echelon.
API
SANDTABLE ships with API libraries for Python and TypeScript. Pull live or recorded data, push orders, update an ORBAT, change scenario settings, or control any unit.
STANAG 4607 GMTI export is a planned addition for version 1.0.0.
Every licence includes a TypeScript and Vue template for plugins that manage scenarios, units, and the simulation.










LONG RANGE, LOW ENERGY COMMUNICATIONS
ACE RADIO_SYSTEM
About
ACE is a meshing text-and-GPS radio for military, emergency response, and government teams working where there is no infrastructure.
Why
- Works offline
- Range extends as you add devices
- Meshtastic mesh
- Pre-configured and encrypted
- Licence-exempt operation
- Canadian built and supported






SIGNALS INTELLIGENCE TRAINING SIMULATOR
SPECTRA RF_TRAINER
About
SPECTRA is a training simulator for radio direction finding.
Trainees practise DF geolocation as a team. Runs offline.
How
Instructors create scenarios with mobile emitters and collectors. Trainees receive the data feeds. Instructors scale complexity as the simulation progresses.
Several trainees can work the same scenario and use the results to tighten a training plan.
Features
- Virtual mobile emitters follow real road networks.
- Emitters are customizable, with a database of real-world devices.
- Several trainees on one scenario.
- Each detection has an uncertainty zone. Shape and size are the zone. Frequency and emission length are separate fields.
- Live export as Esri Shapefile and CSV. The same layer can be served over WFS.
- Software only. Trainees work from the data feed.



CANADIAN COMMON COMMUNICATION PROTOCOL ORCHESTRATOR
C3PO
About
C3PO is free to Canadian government and OEMs in the defence sector.
C3PO is a shared orchestrator for defence interoperability. It includes NATO and STANAG protocol libraries, geospatial Python utilities, and Vue 3 command-and-control widgets. It translates between the formats those systems already use. The protocol libraries are Python. The operator widgets are Vue 3 and Vuetify.
milpy
Python toolbox for geospatial work, parsing, conversion, and symbology, including APP-6 and MIL-STD-2525 SVG rendered in Python.
- GeoPoint normalizes MGRS, DMS, and lat/lon, and can measure and buffer.
- SIDC parse and build across 2525 B, C, and D, plus SVG rendering via embedded milsymbol.
- Text and grid parsers for emails, phones, coordinates, IP addresses, and datetimes.
- Format conversion among Shapefile, KMZ, KML, GeoJSON, and GeoPackage, plus OGC WMS, WFS, and WMTS helpers.
milui
Vue 3 and Vuetify components for ORBAT, APP-6 symbology, OpenLayers maps, and tactical readouts, ready to drop into an operator UI.
- Symbol, marker, unit card, affiliation, and track-vector widgets.
- ORBAT tree and spreadsheet or workbook import into a hierarchy.
- OpenLayers map shell, basemap, and layer managers.
- Coordinate readout and paste for MGRS and decimal degrees, and military datetime fields for Zulu and DTG.
STANAGs
Builders and parsers for the NATO message text defence systems already exchange. Shared types keep the Python libraries and the Vue widgets on the same symbols, tracks, and ORBAT nodes.
- APP-11(E) builders and parsers: SPOTREP, OWNSITREP, INTREP, ATO, ACO, MEDEVAC, CBRN, and related types.
- STANAG 4607 GMTI for dwells, target reports, and mission segments.
- STANAG 4609 FMV metadata.
- Shared types for symbols, tracks, and ORBAT nodes across the Python and Vue layers.
Access
Tell us who you are and which stack you need it on. We will arrange access.
LIVE DEMOS ON THE HOST
WAYFARER
About
WAYFARER lets a team show a product, application, or proprietary interface without shipping the software. Viewers get a URL and a password. They interact with a realtime visual stream of a locked-down Chromium instance on the host where WAYFARER runs, not a copy of the app in their browser.
Page source, DevTools, and the HTTP API stay on the host. SANDTABLE is one workload we stream this way.
Sign in, wait for launch, use the fullscreen stream, sign out.
Host
Each viewer gets an isolated Chromium container on the WAYFARER host. Mouse, keyboard, and the display travel over a realtime stream. The application and its API remain on the WAYFARER host.
- DevTools, view-source, chrome://, and file:// are blocked by policy and a kiosk-guard extension.
- Downloads are blocked, and there is no file-transfer channel.
- A URL allowlist limits which applications the viewer can open.
Viewers
Each viewer has a login, a password, and a list of sites. The browser on the host starts when they sign in and stops when the session ends or sits idle.
- Username and password, with a signed viewer cookie. Admin uses a separate password.
- Each viewer has a session time limit and a date when access ends.
- An idle session stops the browser. The viewer can sign in again later.
- A cap on concurrent sessions, with CPU and memory limits per browser.
Sites
A site is a label mapped to an internal URL. The kiosk bar switches those tabs inside the streamed browser. Each viewer can have a different tab list.
Console
Admin pages for users, sites, and sessions. Changes are saved and applied on the host.
- Users: create, edit, delete, set a password, open a viewer's stream.
- Sites: the applications the kiosk can open.
- Sessions: stop, reset, or restart a live browser.
Access
WAYFARER is available upon request.





CUSTOM SOFTWARE & INTEGRATION
INTEGRATE AND AUTOMATE
Custom work on systems already in use.
- Operator interfaces and human-to-API workflows
- Geospatial software and data pipelines
- Trainers, simulators, and automation servers
- Analysis tools connected to existing data sources
Contact
Ask about a product, a licence, or custom work.
Write to us. Tell us who you are and what you need, and we will reply.