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.
- 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.
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
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
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
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
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
- 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.
- 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.
- 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.
- 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.
The quotes are real triggers. ARBITER reads the brief, and "winter exercise in Germany" puts you in the snow. The commander can always override.
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: 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.
| Back-end | Where it runs | EU policy |
|---|---|---|
| Doctrine engine | Anywhere, offline. No LLM. | On |
| On-prem, OpenAI-compatible | Your enclave: vLLM, Ollama, LM Studio, TGI. Air-gapped. | On |
| Mistral AI | EU-hosted API | On |
| Anthropic Claude | Cloud API | Off unless declared EU-resident |
| OpenAI | Cloud API | Off unless declared EU-resident |
| Google Gemini | Cloud API | Off 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.
- plan.requested
prev = h(n−1) - agent.completed
prev = h(n) - coa.validated
prev = h(n+1) - order.issued
prev = 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
Guard-rail your own planner
Put the validator behind any LLM that proposes actions. Provenance checks catch fabricated facts before a human sees them.
Run the adjudicator headless
Same seed, same result. Use it for after-action review, batch studies or as an opponent for your own agents.
Use the battlespace
Procedural biomes, skinned characters, air, radio audio and adaptive quality in three.js. Nothing to install for your users.
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
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.