﻿# OpenHands Agent Canvas: local workspace, backend and model

Use OpenHands Agent Canvas with an existing local model, a local backend, an explicit workspace, and a small reviewed coding task.

Author: Retrivium team
Updated: 2026-11-03
Canonical URL: https://retrivium.ai/journal/openhands-agent-canvas-local-workflow/
Language: en

OpenHands Agent Canvas is the control interface, while its backend runs the agent and tools. For a local coding trial, establish the backend, workspace, and model profile separately before asking for a file change.

## The concrete application boundary

The current product documentation distinguishes Canvas, Agent Server, and the SDK. In Canvas, the browser manages conversations, files, terminals, model settings, and backend connections. The default backend runs on the user’s machine, but the browser location does not determine execution for every configured backend. A workspace identifies the directory or repository available to the agent. The model profile identifies where conversation context is sent for generation. For this walkthrough use an already functioning local backend and a disposable local workspace. There is no need to configure an automation, connect a remote service, or publish anything to establish the first file task ([OpenHands product introduction](https://docs.openhands.dev/overview/introduction)) ([OpenHands Agent Canvas](https://docs.openhands.dev/openhands/usage/agent-canvas/overview)).

## A practical route

Open Settings > LLM and choose Advanced for an existing compatible local server. Find the actual served model ID and enter the documented openai/ prefix followed by that ID. Enter or select the appropriate connection details, save the profile, and start a new conversation. Confirm that the endpoint is reachable from the backend that executes the conversation. Then identify the workspace and ask the agent to read one named source file without changing it. Only after its explanation matches the file should you request a narrow modification ([OpenHands model configuration](https://docs.openhands.dev/openhands/usage/agent-canvas/model-configuration)).

## A worked example

Use a disposable repository containing a function that formats a status message. Ask for an explanation of the unknown-status branch. Then request a wording change that preserves the accepted inputs. Inspect the changed file through Canvas and compare it with the initial copy. Run the relevant existing check in the same workspace and inspect its actual output, rather than accepting a model’s unsupported statement that the change works.

| Check | Record |
| --- | --- |
| Backend | The local backend executing the conversation and tools. |
| Workspace | The disposable repository containing the intended source file. |
| Model profile | The saved local endpoint profile used in the new conversation. |

## Reading the failure correctly

If Canvas displays files from another directory, correct workspace selection before modifying the model. If the endpoint fails, inspect reachability from the backend, not merely from the browser. MCP resources are another integration layer; a working model profile does not create or authorize them. Keep optional integrations absent until the basic task succeeds ([OpenHands MCP guide](https://docs.openhands.dev/overview/model-context-protocol)).

## What completes the check

The completed trial identifies the execution backend, source directory, selected model profile, and reviewed diff. Agent Canvas provides visibility over those choices; opening its browser interface alone does not prove that an arbitrary task executes locally.

Related background: [Reproducible inference stacks: preserving a GPU pilot’s result](/journal/software-stack-reproducibility/), [Coding LLMs on 12GB VRAM: Budget Context and Headroom](/journal/coding-llm-12gb-vram/).
