oneshotlm
Compare all models on this prompt →

Boids flocking · grok-build-0.1

Create a full-screen flocking simulation of boids using separation, alignment, and cohesion, drawn as oriented triangles that steer smoothly and flee from the mouse cursor.

⛨ sandboxed Open in new tab ↗
transcript · 10 messages
user

Create a full-screen flocking simulation of boids using separation, alignment, and cohesion, drawn as oriented triangles that steer smoothly and flee from the mouse cursor.

assistant
thinking
The task is: "Create a full-screen flocking simulation of boids using separation, alignment, and cohesion, drawn as oriented triangles that steer smoothly and flee from the mouse cursor. Build a singl...
bash {"command":"ls -la /tmp/ws"}
toolResult

total 0 drwxr-sr-x. 2 node node 6 Aug 1 19:45 . drwxrwsrwx. 3 root node 16 Aug 1 19:45 ..

assistant
thinking
The task is: "Create a full-screen flocking simulation of boids using separation, alignment, and cohesion, drawn as oriented triangles that steer smoothly and flee from the mouse cursor. Build a singl...First, the user wants a single self-contained index.html file with CSS in <style>, JS in <script>, no externals. It should be a full-screen flocking simulation of boids using separation, alignment, cohesion, drawn as oriented triangles that steer smoothly, and flee from the mouse cursor.

I need to 1) Create the code for this, 2) Write it to /tmp/ws/index.html using the tool, 3) Report confidence.

Since I'm Grok, I need to reason and produce the answer.

But the instruction is to use tools via function calls, and the final answer is the content or the file 1.

The task is to create the file, so probably use the write_file tool to write index.html.

The human message ends with "End with index.html present." and then the policy.

I need to use the tool to write the file.

Let's plan to write the code.

I'll sketch the code in my mind 1st.

HTML:

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Boids Simulation</title>

<style>

body { margin: 0; overflow: hidden; background: black; }

canvas { position: fixed; top: 0; left: 0; }

</style>

</head>

<body>

<canvas id="canvas"></canvas>

<script>

// JS code here

const canvas = document.getElementById('canvas');

const ctx = canvas.getContext('2d');

let width, height;

function resize() {

  width = window.innerWidth;

  height = window .innerHeight;

  canvas.width = width;

  canvas.height = height;

}

window.addEventListener('resize', resize);

resize();

let boids = [];

const NUM_BOIDS = 200;

const MAX_SPEED = 3;

const MAX_FORCE = 0.2;

const SEP_RADIUS = 50;

 const FLEE_RADIUS = 100;

  const MOUSE_REPULSE = 2.0;

  const WEIGHTS = {sep:1.5, ali:1.0, coh:1.0, flee:2.0};

let mouse = {x: width/2, y: height 2, down: false};

window.addEventListener('mousemove', (e) => {

  mouse.x = e.clientX;

  mouse.y = e.clientY;

});

window.addEventListener('mousedown', () => { mouse.down = true; });

window.addEventListener('mouseup', () => { mouse.down = false; });

for(let i=0; i<NUM_BOIDS; i++) {

  boids.push({

    x: Math.random() * width,

    y: Math.random() * height,

    vx: (Math.random() - 0.5) * 2,

    vy: (Math.random -0.5) *2

  });

}

function calcForces(boid, boids, mouse, width, height) {

  let sep = {x:0, y:0};

  let ali = {x:0, y:0};

  let coh = {x:0, y: 0};

  let count = 0;

  let mx = 0, my = 0;

  let avx = 0, avy = 0;

  for(let other of boids) {

    if(other === boid) continue;

    let dx = other.x - boid.
write /tmp/ws/index.html (11038 bytes)
toolResult

Successfully wrote 11038 bytes to /tmp/ws/index.html

assistant
thinking
The task is complete. The file index.html has been created in /tmp/ws with a self-contained full-screen boids simulation.
bash {"command":"ls -la /tmp/ws/index.html && head -c 200 /tmp/ws/index.html && echo \"...\" && tail -c 100 /tmp/ws/index.html"}
toolResult

-rw-r--r--. 1 node node 11046 Aug 1 19:46 /tmp/ws/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Boids</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } html, body { width: 100%; height: 100%; overflo... .7; b.vy *= 0.7; } // Start updateStats(); loop(); } init(); </script> </body> </html>

assistant
thinking
The file is created and present. It's a self-contained single-file full-screen boids simulation with:
bash {"command":"wc -l /tmp/ws/index.html && file /tmp/ws/index.html"}
toolResult

476 /tmp/ws/index.html /bin/bash: line 1: file: command not found Command exited with code 127

assistant
thinking
The file is created and self-contained as requested. No external resources, full-screen canvas, proper boids implementation:

Created `/tmp/ws/index.html` — a complete, self-contained full-screen boids simulation. **Features:** - Classic Reynolds flocking: separation, alignment, cohesion with tuned radii and weights - Oriented triangular boids that rotate smoothly to face their velocity vector - Strong mouse flee behavior (cursor repels nearby boids with distance-based intensity) - Toroidal (wraparound) world - Click anywhere to create a radial burst repel - Responsive to window resize - Pause/reset controls + keyboard shortcuts (R, Space/P, F for fullscreen) - Motion trails via subtle alpha clearing + speed-based coloring - Purely local — no network, no external assets Open the file directly in a browser to run.

TAKE IT TO CODE

A single self-contained HTML file — copy it and open in any browser, or reuse the prompt with your own pi-agent run.

RUN

modelgrok-build-0.1
vendorxAI · Grok
harnesspi-agent
generated2026-08-01

EVALUATION

4/5 working

Boids flock and flee cursor with a visible avoidance radius; Enter/Space toggles pause, arrows/WASD have no effect.

Vision grade · anthropic/claude-sonnet-5

MEASUREMENTS

Raw readings from the capture, not a verdict — the grade above is the only judgement. Percentages are how much of the screen changed; the measure under-reports sparse motion on a dark background.

idle motion14.1%
on click13.3%
on drag14.0%
on wheel13.6%
on enter + space9.7%
on arrow keys0.0%
on w/a/s/d0.0%
frame spread21.5 / 255
console errors0
js errors none

METRICS

runtime54.7s
tokens in5.6k
tokens out8.7k
cached14k
cost / run$0.0257