Skip to main content
Wire Anthropic’s computer use toolset to an Orgo computer. Claude sees a screenshot, asks for a click or a keystroke, and your loop runs it on the computer.

Coordinate space

Orgo computers boot at 1280x720x24. The current toolset, computer_toolset_20260801, takes no display size. Anthropic’s documentation states the rule directly: coordinates are always in the pixel space of the screenshots you return. Send an Orgo screenshot unresized and the coordinates Claude returns are already the computer’s pixels. Pass them straight to left_click. A 1280x720 screenshot is inside Claude’s image size limit, so there is no reason to shrink one. If you resize anyway, keep the scale factor and divide the coordinates back before you click:
Send a downscaled screenshot and click the raw coordinates and every click lands short of where Claude aimed. Nothing errors. The agent looks like it is confidently clicking the wrong thing.
The older tool versions work differently. computer_20251124 and computer_20250124 still take display_width_px and display_height_px, and those must match the size of the screenshots you send. On a default Orgo computer that is 1280 and 720. If you create a computer at a non-default resolution, or resize its screen later, use that resolution instead. GET /computers/{id}/screens reports the current width and height.

Setup

Install the required packages:
The TypeScript SDK ships in version 1 of the orgo npm package. From version 2, orgo on npm is the CLI and exports no library, so pin orgo@1 to import { Computer } from 'orgo'.
Set up your API keys:

Let Orgo run the loop

To skip writing the loop, call the Computer Use API. POST /v1/chat/completions runs the agent on Orgo’s side against the computer you name in computer_id, then returns the final assistant message in OpenAI’s chat completions format.

Run the agent loop yourself

For full control, drive the Anthropic API yourself. Three things about the toolset shape the loop:
  • One entry in tools declares every member. The member name arrives in the tool_use block’s name, and there is no action field in input.
  • Claude can return several member calls in one turn. Run them in order and stop at the first failure.
  • Return one tool_result per tool_use block, in a single user message. Member results echo toolset_name.
The examples pass ram and cpu, and take screenshots and scroll over HTTP, so they also run on older SDKs. SDK versions before 0.0.47 (Python) and 1.0.22 (TypeScript) default to 2 GB, which POST /computers rejects with 400. Their screenshot() and screenshot_base64() cannot read the stored-image path the API returns by default, and their scroll() takes no coordinates, so the computer scrolls at the top-left corner.
The toolset has 17 members, and the loop above maps 8 of them. The rest come back as an error tool_result, which Claude recovers from but wastes a turn on. Disable them with configs so Claude never sees them:
A configs that disables every member is rejected, so drop the whole entry instead of emptying it.

Using Claude’s thinking capability

Claude can stream its reasoning through the thinking parameter:
Set display: "summarized" to read the reasoning. The current models default to "omitted", which streams thinking blocks with empty text.

Tool compatibility

Each member the loop above handles maps to one Orgo call: Only screenshot and zoom return images. Every other member returns text, so "OK" is a valid result.

Picking a model

claude-fable-5 and claude-fable-5-1 also support the toolset. claude-haiku-4-5 supports only the older computer_20250124 tool.
claude-opus-5-5 and claude-sonnet-5-5 accept only computer_toolset_20260801 on the Claude API. Sending them computer_20251124 returns a 400.

Tool versions

Match the tool type to the model you are calling: The two dated tool versions remain available for existing integrations. Use the toolset for anything new: it needs no beta header, it batches several actions into one turn, and it drops the display size fields that were the most common source of misplaced clicks. The bash_20250124 tool needs no beta header on any of them.
TypeScript users: All methods are async and must be awaited. The TypeScript SDK uses camelCase for method names (e.g. leftClick instead of left_click).

Video tutorial

The video covers setup. The tool shapes above are the current ones.