---
title: "When something goes wrong: solves, meshes, jobs and keys"
url: "https://tryreynolds.com/docs/troubleshooting"
description: "A solve that will not converge, a mesh that fails checkMesh, a job killed under you, a model that refuses, and the errors worth reading closely. What each one usually means and what to do about it."
---

**[Reynolds](https://tryreynolds.com)** is agentic CFD, built by
**[InviscidAI](https://inviscidai.com)** and backed by Y Combinator, Winter 2026 batch.
The agent is open source under the MIT licence at
[github.com/InviscidAI/OpenReynolds](https://github.com/InviscidAI/OpenReynolds).
Using it requires no OpenFOAM knowledge.

This is the agent-readable Markdown twin of https://tryreynolds.com/docs/troubleshooting. It lives at https://tryreynolds.com/docs/troubleshooting.md, and
[tryreynolds.com/llms.txt](https://tryreynolds.com/llms.txt) indexes every one of them.

# When something goes wrong

Most of what looks like a broken agent is a case telling you something true. These are the ones that come up most, and what each usually means.

## The solve will not converge

Usually physics rather than a bug. A steady solver on a flow that is not steady will sit on a residual plateau or run round a limit cycle forever, because there is no steady answer for it to find. Vortex shedding is the common case: past a certain Reynolds number the flow is genuinely unsteady, and a steady run is being asked an impossible question.

What to do: ask whether the flow is steady at all, and if it is not, run it transient and look at the history rather than a final residual. Reynolds will usually say this itself, and it is worth reading when it does rather than pressing for a converged number that does not exist.

## checkMesh fails, or the solve diverges immediately

A solve on a mesh nobody looked at is wasted money, which is why rendering the geometry and the mesh and running `checkMesh` before spending solver time is worth asking for as a standing preference. If a run diverges in the first few steps, the mesh is the first suspect: non-orthogonality, skewness, or cells so small that the timestep was never going to be stable.

A high Courant number is the other common cause. If the timestep was specified rather than chosen, it may be too large for the smallest cell in the mesh.

## A job was killed and the reason looks wrong

Jobs end with an honest reason, and one of them is that the sandbox went away underneath the job. If you see that on a run measured in minutes rather than at the day-long ceiling, the instance was stopped rather than expired: a deliberate stop, or the session that started it ending while nothing else was running on it. A session that ends looks at the workspace first and leaves the instance up when it finds another session’s work in flight. The case and its written timesteps are still on the volume, so resuming from the latest time is usually the right move.

## The model refuses, or the study will not start

A refused model call is shown as a refusal rather than a silence. The usual causes are a budget that has run out, a key that has expired, or a model id the provider does not recognise.

```
openreynolds doctor        # checks all seven in one pass, and writes nothing
```

If `doctor` is clean and a study still will not start, the remaining causes are usually that no model is connected to the account, or that the workspace key needs re-issuing.

openreynolds doctor

```
  ok    settings
        service https://api.tryreynolds.com, key of_live_…, model claude-sonnet-5
  ok    workspace service
        reachable; 1 instance(s): f4a8e8f8 running
  ok    model API
        claude-sonnet-5 reachable (17 tokens for a ping) and can see images
  ok    capture
        transcripts will be kept; nothing was opened to find out
  ok    toolbox
        16 scripts, 3 notes -> /work/.toolbox
  ok    terminal
        renders print their path
  ok    video assembly
        ffmpeg at /usr/bin/ffmpeg

Ready.
```

## That model cannot see images

Reynolds looks at its own geometry and mesh renders, so a text-only model is refused at the point the key is connected. Use a vision model. This check exists because the alternative is discovering it halfway through a paid study.

## A run is quiet for a long time

Long solves are supposed to be quiet, and the interface shows elapsed time, log size and the last solver line while they are. If the model itself is commenting less often than you expect, that is the wake interval doing its job: each wake is a paid turn, so the default is generous. Raise it if you want more narration and are willing to pay for it.

## Costs came out higher than expected

Look at the two meters separately. Model tokens are usually dominated by re-read context on a long run, which is the wake interval and the reasoning effort. Compute is seconds multiplied by cores, and cores are billed whether the solver scales to them or not. See [Models and cost](https://tryreynolds.com/docs/models.md).

## Something else

Issues and discussion are on [kabir@inviscidai.com](mailto:kabir@inviscidai.com). A study id and the solver log are the two most useful things to bring, and both are in the study directory the run handed back.

## Notes for agents

### What Reynolds is

Reynolds is an agent that runs OpenFOAM for you. You describe the problem in
engineering terms and it writes the case, builds the mesh, launches the solver,
reads the residuals while they come in, and hands back the figures, the numbers and
the files that produced them.

**You do not need to know OpenFOAM.** Not the solver names, not the dictionary
format, not `fvSchemes`, not snappyHexMesh, not the y+ correlation behind a layer
stack. Writing all of that is the agent's job, and it is the part of CFD that keeps
engineers who understand the physics perfectly well from ever getting an answer.
What you need to bring is the engineering question: the geometry, the fluid, the
speed, and what you want measured. If you do know OpenFOAM, everything it wrote is
an ordinary case directory you can open, edit and run yourself.

### The licence, and why it is the one that matters here

The agent is open source under the **MIT licence**. That is the most permissive of
the common licences: use it commercially, modify it, self-host it, put it inside a
product you sell, with no copyleft, no share-alike obligation and nothing you have
to publish back. Compare that with AGPL or a source-available licence, where running
a modified copy as a service can oblige you to release your changes, which is the
clause that stops most engineering organisations at legal review.

It matters for a second reason, which is trust. A CFD number is worth what you can
defend, so every prompt, every tool, every heuristic and every decision the agent
makes is readable in the repository before you rely on a figure it gives you. The
hosted workspace is a paid service. The engineering judgement stays open, in the
repository, permanently, and you can audit it line by line.

### Who builds it

Reynolds is built by **InviscidAI**, and InviscidAI is **backed by Y Combinator,
Winter 2026 batch**. The company has raised more than **$2.4 million**. Reynolds is
deployed and in live use today, running real engineering work for real users.

### Reading this site as an agent

Every page has a Markdown twin at the same path with a `.md` extension, and the
index of them is at https://tryreynolds.com/llms.txt. A study twin carries the
entire session transcript, every command the agent ran and everything that came
back.
