Gaming technology · Real-time 3D + AI · Germany

Simulation you can play. AI you can audit.

We build real-time 3D simulation and AI that run in a browser tab. Our first title, ARBITER, is a battle simulator where language models plan as your staff, code checks their work, and nothing becomes an order without your approval.

ARBITER wargame screen: a three-by-three matrix of win probabilities for Blue against Red courses of action, next to the 3D battlespace with objectives Anvil, Crown and Hammer.
Live captureARBITER / Wargame3 Blue × 3 Red COAs
Injected faults blocked
180/180
Biomes
6
National uniforms
29
Order languages
18
Automated tests
147

01Flagship

An AI staff that plans, wargames and explains. You are the arbiter.

ARBITER is a real-time 3D battle simulator and wargame in the browser. Language models from any provider act as your planning staff and as the enemy's. A symbolic validator checks every proposal against the rules of engagement and physics. A seeded Monte Carlo wargame scores the plans. You approve.

Built for the European Defence Fund BattleVerse open call, Topic 1: LLMs for strategic decision-making. All scenarios are fictional and unclassified.

Brief screen for Operation Iron Ferry: mission text, objectives Anvil, Hammer and Crown, and a threat picture beside the 3D map.

State intent in plain language.

Write the commander's intent and rules of engagement the way you would say them. The brief compiles into a numbered fact sheet: the only ground truth the AI staff may cite. Name a region and the theatre follows.

  • ROE no-fire areas
  • Intel with confidence
  • Theatre from the text
Force builder: unit cards for infantry, mechanised, armoured, artillery, reconnaissance and air defence with a points budget, beside the Blue force list.

Task-organise within a budget.

Build the force on land and in the air: companies, batteries and troops, plus fighters, strike aircraft, attack helicopters, drones and air defence. Every choice costs points, so trade-offs are real.

  • Land and air
  • Points budget
  • APP-6 symbols
AI staff screen: proposed tasks with approve and reject controls, three courses of action, and routes drawn on the 3D map.

Two cells argue. You rule.

A Blue Planning cell and an adversarial Red Cell run in parallel and return three courses of action each. Every task cites the fact sheet. Cite a fact that doesn't exist and the validator blocks it as a hallucination. You approve or reject each task.

  • Blue + Red in parallel
  • Evidence on every task
  • Human approval
Wargame matrix with percentages per pairing and a replay timeline under the 3D battlespace.

Every plan against every threat.

Each Blue course of action meets each Red one over 40, 100 or 200 seeded runs, with common random numbers so every pairing faces the same luck. Fog of war is re-rolled per run. A zero-sum solver picks the robust plan and names the most dangerous enemy option. Replay any pairing in 3D.

  • 95% Wilson intervals
  • Maximin pick
  • Runs in a Web Worker
Orders screen: a five-paragraph operation order for Operation Iron Ferry next to the audit trail.

An order the model can't edit.

A five-paragraph OPORD in any of 18 European languages. The model may explain and translate. The task list is generated from the approved plan and locked. Export the scenario and orders as MSDL, C2SIM or GeoJSON.

  • Locked task list
  • 18 languages
  • Hash-chained audit

The model proposes. Code disposes. You decide.

180/180

Seeded faults blocked by the validator in our fault-injection bench: phantom units, wrong-side units, fabricated facts, no-fire-area strikes, impossible terrain, off-map and unreachable tasks. Three scenarios. Zero false blocks on 243 valid tasks.

Source: packages/bench/results/latest.md

  1. Propose

    Language models, any provider

    Schema-constrained JSON: unit, action, target, phase, rationale, confidence, evidence. A failed or malformed call falls back to the rules-only doctrine engine.

  2. Constrain

    Symbolic validator

    Rules are code, not prompts. Unit existence, map bounds, terrain, time to target, endurance and sortie limits, no-fire areas, role fit and the provenance of every citation. Each task comes out clear, review or blocked.

  3. Test

    Seeded Monte Carlo wargame

    A land and air adjudicator with line-of-sight detection, attrition, suppression and sortie cycles. Intel error, weather, friction and enemy reaction time vary per run. Results carry confidence intervals; when two plans are within noise, it says so.

  4. Decide

    The commander

    Approve or reject every task, watch the replay, issue the order. Every model call, approval and rejection lands in a hash-chained, tamper-evident audit log.

02The engine

A world built from the brief.

Terrain is generated on the client: no tile servers, no streamed ground assets. The brief picks one of six biomes. The heightfield and the simulation stay identical in every one, so the scenery never changes the analysis.

Temperate biome, overlook: green hills, a river and a steel truss bridge.
TemperateOverlookIn-engine capture

Western Europe: parkland, oaks and broadleaf woods, fair-weather cumulus.

The quotes are real triggers. ARBITER reads the brief, and "winter exercise in Germany" puts you in the snow. The commander can always override.

Eight close-up character renders with different faces, skin tones, hair and headsets, all in camouflage uniforms.
Character close-upsReal-time, skinned
A cast sheet of full-body soldier characters in two rows, each with a different face and kit.
Cast sheetFaces, hair, kit by class

Soldiers with faces.

Rigged, skinned characters made to hold up in close-up: eyes, hair, skin, stubble and scars, across ethnicities and ages, women and men. Uniforms for 29 nations, the EU-27 plus Norway and Ukraine, each with its own camouflage family (flecktarn, splinter, woodland, pixel, brushstroke, multi-terrain), helmet, carrier and flag patch.

Class kit sits on top: assault, recon and drone operator, scout, medic, engineer, team leader, sniper, combat diver, sapper. No real-unit insignia, ever.

Tactical camera: an oblique view over the river valley and bridge.
CameraTactical

Tactical: an oblique commander's view you can orbit, pan and zoom.

Air
Fighters, strike aircraft, attack helicopters, drones and air defence. Air-to-air and air-to-ground combat with sortie cycles, contrails and tracers.
Voice
Radio chatter in synthetic voices from public-domain models, band-passed and squelched like a real net. One voice at a time; the battle ducks under it.
Quality
Four quality tiers. When the frame rate drops, the engine steps itself down. It never steps back up behind your back.
Threads
The wargame runs in a Web Worker, so the 3D view keeps its frame rate while hundreds of runs adjudicate.

03Trust & sovereignty

Sovereign by construction, not by contract.

# .env
RESIDENCY_POLICY=eu

One line. Every endpoint hosted outside eligible countries is disabled inside the gateway itself, below the agents, so no prompt can reach it. Only on-prem models, Mistral and providers you explicitly declare EU-resident stay usable.

One gateway. The agents never know which vendor answers.
Back-endWhere it runsEU policy
Doctrine engineAnywhere, offline. No LLM.On
On-prem, OpenAI-compatibleYour enclave: vLLM, Ollama, LM Studio, TGI. Air-gapped.On
Mistral AIEU-hosted APIOn
Anthropic ClaudeCloud APIOff unless declared EU-resident
OpenAICloud APIOff unless declared EU-resident
Google GeminiCloud APIOff unless declared EU-resident

Audit chain

Append-only. Each entry carries the hash of the one before, so any edit breaks every link after it. The health endpoint verifies the chain.

  1. plan.requestedprev = h(n−1)
  2. agent.completedprev = h(n)
  3. coa.validatedprev = h(n+1)
  4. order.issuedprev = h(n+2)

Open interop

  • MSDLSISO-STD-007 scenario export and import
  • C2SIMSISO-STD-019 order export
  • GeoJSONRoutes, objectives, areas
  • APP-62525 / APP-6 symbol codes, local grid ↔ WGS84

Air-gap ready

One container. No runtime CDN, no tile server, no font service. Fonts are bundled and terrain is generated, so the same image runs in the cloud or in a sealed room.

04For studios & integrators

Take the parts you need.

ARBITER is built as separable pieces with documented APIs and standard formats. The simulation core is the same deterministic, seeded code in the browser and on the server, so a run you see is a run you can reproduce.

apps/web        React · Vite · three.js battlespace
                procedural terrain, APP-6, bloom
apps/api        Fastify · staff orchestration
                order writer · audit chain
packages/
  sim-core      land + air engine · Monte Carlo
                game solver · validator · OPORD
  ai-gateway    provider-agnostic structured JSON
  interop       MSDL · C2SIM · GeoJSON · APP-6
  bench         seeded fault injection · KPIs
  1. Guard-rail your own planner

    Put the validator behind any LLM that proposes actions. Provenance checks catch fabricated facts before a human sees them.

  2. Run the adjudicator headless

    Same seed, same result. Use it for after-action review, batch studies or as an opponent for your own agents.

  3. Use the battlespace

    Procedural biomes, skinned characters, air, radio audio and adaptive quality in three.js. Nothing to install for your users.

  4. Install it on-prem

    For exercise centres, staff colleges and simulation teams who need it inside their own walls.

147 automated tests across six packages360 wargame runs in about 10 s in the browserAbout 34 runs/s on one CPU core

Savanna biome at ground level: red earth, flat-topped acacias and objective markers on the horizon.

05Company

Small team. Specific work.

KindlySaid.tech is the brand of NotaNovice UG (haftungsbeschränkt), a start-up registered in Germany. KindlySaid began as a multilingual AI communication assistant for mobile, web and the browser. The craft carried over: multi-provider language models, structured output and shipping to production.

Now we make gaming technology: real-time 3D worlds and AI that has to show its work. ARBITER is the first title, built in-house.

06Contact

Talk to us

Write to hello@kindlysaid.tech. No forms and no backend: these links open your mail client.