Osy#the first language built for agents
Agents firstAgentic appsWorkflowsDurable Execution — built inSecurityTestingThe editorThe UI modelOne program

Reference / Local

Installing the editor extension

osy vscode install [--editor <cmd>] [--vsix <path>]

Installs the Osy# editor extension that ships with the CLI into VS Code (or a compatible editor). The extension carries its own language server and drives the same CLI, so once the CLI is on your PATH it just works.

stablelocalcliauthoring

Summary#

Installs the Osy# editor extension — bundled with the CLI — into VS Code or a compatible editor (Cursor, VSCodium, Windsurf). The extension brings language intelligence (completions, diagnostics, go-to-definition, the test explorer) and runs your project through this same CLI.

Signature#

osy vscode install [--editor <cmd>] [--vsix <path>]

Description#

It finds the extension shipped alongside the CLI, detects your editor's command-line launcher on your PATH (code, code-insiders, cursor, codium, or windsurf), and installs it. Reload the editor afterwards to activate it.

The extension drives the CLI through its osy.cli.path setting, which defaults to osyrin — so as long as the CLI is on your PATH, no editor configuration is needed.

  • --editor <cmd> installs into a specific editor (by its CLI command) instead of the first one found.
  • --vsix <path> installs a specific extension package instead of the one shipped with the CLI.

If no editor CLI is found, it says so — in VS Code you may need to run "Shell Command: Install 'code' command in PATH" first.

It marks where your code changes side#

The extension ghosts a → server (or → client) in front of any call that leaves the side the body it is written in runs on. Nothing in the source says so otherwise: the seam is deliberately invisible, so that you write ordinary code across it — which is right for correctness and hides the one thing you may need to act on. Each of those arrows is a network round trip.

What you see on screen — the arrows are the editor's, not something you type:

action Save() {
  → server SaveDraft(draft);      // a round trip
  → server Notify(author);        // …and another. Could these have been one call?
  closed = true;                  // client-side: no arrow, no cost
}

Only the crossings are marked. A server function that calls three more server functions crosses nothing, and gets nothing — the arrows appear where the cost is, not on every call to a server function. That is what keeps the annotation readable in the half of an app that never leaves one side.

The arrow says the direction and nothing about saving. Calling a server function from a page carries your uncommitted edits along with the call — the server reads your own changes — but it does not commit; only an explicit UnitOfWork.Commit() does. See [[realtime-topic#one-unit-of-work]].

Examples#

osy vscode install                 # install into the first editor found on PATH
osy vscode install --editor cursor # install into Cursor specifically

See also#

Running a local platform — the local platform the editor's commands run against.

Launching your app — open your app in a browser from the editor or the CLI.

Launching the page you're on — what F5 does once the extension is installed.

Related

Running a local platform

Runs a full platform on your own machine — its own database, no account, no cloud, reachable only from your computer…

Launching your app

Opens your app in a browser, running on the local platform. It compiles the current source first, so what opens…

Launching the page you're on

Press F5 in a page file and your app opens at that page, not at the home route, stopping at your breakpoints. Ctrl+F5…