Cluewren

Playtest your game with your coding agent

Ask Claude Code or Codex to verify claims, reach goals, or explore the game open in your editor. The agent writes a C# harness, Jev plays it through your engine, and the agent reports a verdict with measured evidence.

Get started GitHub

You need Windows 11, the .NET 10 SDK, a TypeSafe API key, and a build from source.

Verify that the player can fly with the jetpack from the start of the level, without picking anything up.

DENIED 110.8 s, 1 episode

From the start of MainScene with nothing picked up, the agent cannot fly with the jetpack: it is locked.

  • t=0.2-6.2 s: 5 completed attempts … Best rise 206.2 cm against 203 cm computed for a plain jump (JumpForce 9, GravityDownForce 20).
  • Control probe after a level restart, same input sequence: locked, rise 204.9 cm, fuel 1; after calling Jetpack.TryUnlock directly (research change, probe only), rise 1472 cm, fuel down to 0.
  • Code: Jetpack.cs:84 requires IsJetpackUnlocked to fire; TryUnlock's only caller is JetpackPickup.cs:11.
Excerpt from a real run on Unity's FPS Microgame sample.

How it works

  1. Open your game in the editor

    Open your project in Unity, Godot, or Unreal Engine with the Cluewren plugin installed.

  2. Ask your coding agent

    Ask Claude Code or Codex to verify a claim, reach a goal, or explore.

  3. Play and report

    The agent reads the code and writes a C# harness. Jev plays it, then the agent reviews frames when the verdict needs them and reports a verdict with measured evidence.

Tested engines

Engine Tested version How it installs
Unity 6000.6.7f1 (package declares 6000.0 or later) UPM package from a git URL or from disk
Godot 4.7.2 Copy addon into addons/ and enable it
Unreal Engine 5.8 (Win64 only) C++ projects build the plugin; Blueprint-only projects use a prebuilt BuildPlugin package

Data boundaries

What stays on your machine

  • No accounts, no telemetry, and nothing is sent to Cluewren.
  • Run memory stays in your project: harness.cs, trace logs, report.json, and notes.
  • Gameplay frames are held only in the brain process memory (the last 160 MiB), never written to disk, and discarded on exit.

What leaves your machine

  • Jev decision requests (game-state text computed by the harness, plus options) go to api.typesafe.ai.
  • Whatever your coding agent reads or fetches (source code, or frames via the frames tool) goes to the agent's own provider. Cluewren cannot control what the agent sends.

Harness sandbox

On Windows 11, the harness runs in an AppContainer with no network access, writes only to its run folder, and holds no API keys. If the container cannot be created, Cluewren falls back to a plain child process with no keys in its environment. That fallback process can read your files and reach the network, and the run log states when it is used.

Read more about the sandbox

Quick start

These commands build Cluewren and register it with your agent.

git clone https://github.com/crane-valley/cluewren.git
cd cluewren
dotnet build -c Release

Run connect claude or connect codex for the agent you use.

./src/Cluewren/bin/Release/net10.0/cluewren connect claude
./src/Cluewren/bin/Release/net10.0/cluewren connect codex

Next steps

  1. Install the plugin for your engine
  2. Put your TypeSafe API key in keys.env
  3. Start a new agent session and ask for a run