cd /news/ai-agents/i-used-jev-to-control-a-swarm-of-15-… Β· home β€Ί topics β€Ί ai-agents β€Ί article
[ARTICLE Β· art-134112] src=github.com β†— pub= topic=ai-agents verified=true sentiment=Β· neutral

I used Jev to control a swarm of 15 simulated drones in real time

TypeSafe released an interactive multi-drone autonomy simulation in which its Jev System 1 reflex layer controls a configurable fleet of one to twenty simulated drones, with an optional System 2 planner powered by OpenRouter's GLM 5.3 model providing one-use strategic guidance when per-drone confidence falls below a set threshold. Jev continues steering while the System 2 planner responds asynchronously, and the simulation requires Node.js 22.13 or newer, starts with development mocks so it runs without provider credentials, and exports full mission telemetry as JSON. The Jev adapter calls POST https://api.typesafe.ai/v1/systemone with the jev-latest model and a typed choice over available flight actions, while the System 2 planner uses OpenRouter's chat completions API with strict structured output and can retry through a configured fallback model on server errors, rate limits, or context-size failures.

read3 min views1 publishedSep 18, 2026
I used Jev to control a swarm of 15 simulated drones in real time
Image: Michielbdejong (auto-discovered)

An interactive multi-drone autonomy simulation powered by TypeSafe Jev, exploring a simple question: what happens when fast, typed System 1 reflexes can ask a slower System 2 reasoning model for advice without giving up control?

The fleet size is configurable from one to twenty drones. System 2 can be turned off entirely, making it easy to compare Jev operating independently against Jev augmented with strategic guidance.

Each drone navigates independently with Jev as its System 1 reflex layer. When confidence falls below the configured threshold, an optional System 2 planner provides one-use strategic guidance through OpenRouter. Jev keeps steering while the planner responds.

  • A configurable fleet of one to twenty independently controlled drones
  • Moving asteroids, debris, unknown signals, and other drones treated as sensed contacts
  • A System 2 toggle for running Jev alone or enabling strategic advice
  • Per-drone decisions, confidence, latency, strategy revisions, and collision outcomes
  • Seeded scenarios for repeatable obstacle layouts
  • Canvas rendering separated from React telemetry and controls
  • JSON export for inspecting an entire mission after the run

If one drone collides, only that drone is removed. The remaining fleet continues toward the shared destination. Arrived drones leave the active flight lane.

React dashboard
β”œβ”€β”€ experiment controls
β”œβ”€β”€ per-drone telemetry
└── decision and latency charts

Canvas simulation loop
β”œβ”€β”€ movement and collision detection
β”œβ”€β”€ sensors and action projections
└── fleet rendering

System 1 β€” TypeSafe Jev
└── fast typed action decisions for every active drone

System 2 β€” OpenRouter / GLM 5.3
└── asynchronous one-use strategy advice when confidence is low

System 2 is advisory. It does not fly the drone directly, and Jev does not while waiting for it. The confidence chart uses purple only for a Jev decision that actually consumed returned System 2 guidance. The System 2 chart marks response arrival as a discrete event; wall-clock duration is shown separately in the latency chart.

Requirements: Node.js 22.13 or newer.

npm install
npm run dev

Open the printed local URL. The app starts with development mocks, so it works without provider credentials.

Useful checks:

npx tsc --noEmit
npm run lint
npm run build

Copy the example configuration and add your own keys:

cp .dev.vars.example .dev.vars
TYPESAFE_API_KEY=your_key
OPENROUTER_API_KEY=your_key
OPENROUTER_MODEL=z-ai/glm-5.3

Restart the development server, refresh provider status in the dashboard, and select TypeSafe Jev and OpenRouter. .dev.vars is ignored by Git; never expose these credentials through NEXT_PUBLIC_ variables.

The Jev adapter calls POST https://api.typesafe.ai/v1/systemone with jev-latest and a typed choice over the available flight actions. The System 2 planner uses OpenRouter's chat completions API with strict structured output. Server errors, rate limits, and context-size failures can retry through the configured fallback model.

  1. Choose the fleet size and scenario.
  2. Turn System 2 advice on or off.
  3. Select mock or live providers.
  4. Adjust the confidence threshold.
  5. Launch the mission and switch between drones to inspect their decisions.
  6. Export the mission JSON for deeper analysis.

The scenario seed controls the obstacle layout, but live provider latency can still change a trajectory. A seed is repeatable geometry, not a deterministic asynchronous replay.

  • Green confidence: Jev made the decision using its current local context.
  • Purple confidence point: that Jev decision consumed newly returned System 2 guidance.
  • Purple System 2 bar: advisory response arrived at that mission time.
  • Red System 2 bar: advisory request failed.
  • Latency chart: measured wall-clock provider response time.

Exported telemetry includes the seed, fleet state, observations, probabilities, executed actions, confidence thresholds, provider timing, planner revisions, failures, and final outcomes.

This is an experimental autonomy visualization, not a production flight controller. The mock scenario and focused runtime checks cover the core simulation behavior. Live fleet success varies with model decisions, provider latency, seed, threshold, and fleet size.

── more in #ai-agents 4 stories Β· sorted by recency
── more on @typesafe 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/i-used-jev-to-contro…] indexed:0 read:3min 2026-09-18 Β· β€”