Download Latest Version messages.jsonl (180 Bytes)
Email in envelope

Get an email when there's a new version of orchestrator

Name Modified Size InfoDownloads / Week
Parent folder
cliui 2025-10-03
Totals: 1 Item   0

Linux Orchestrator (Minimal)

A small Node.js HTTP service that orchestrates a desktop automation loop on Linux:

  • Calls an OpenAI-compatible chat API (OpenAI/Azure/Anthropic via proxy, or LM Studio)
  • Sends single-step actions to a desktop driver (if you have one) or executes local shell steps
  • Stores tasks under data/tasks/<id> for later inspection

Env Vars

  • ORCH_PORT: default 4101
  • ORCH_MODEL: default qwen2.5-coder-1.5b (use your model id)
  • OPENAI_API_BASE: default http://localhost:1234/v1 (LM Studio)
  • OPENAI_API_KEY: optional key (LM Studio may not need one)
  • DESKTOP_DRIVER_URL: optional driver endpoint (default http://127.0.0.1:39990/computer-use)
  • MAX_STEPS: default 8
  • MAX_RETRIES_PER_STEP: reflection retries on failure (default 2)
  • MAX_RECURSION_DEPTH: limit for spawn_subtask (default 2)
  • BASE_BACKOFF_MS: base milliseconds for retry backoff (default 500)
  • PYTHON_BIN: python binary name/path used for tools that need Python (default "python3")
  • MAX_CONTEXT_CHARS: character budget for context (default 6000)

Run npm start

Endpoints

  • GET /health
  • GET /tasks
  • POST /tasks { goal }
  • GET /tasks/:id
  • GET /tasks/:id/messages
  • GET /tasks/:id/context
  • GET /tasks/:id/notes
  • POST /tasks/:id/notes { note }
  • GET /events/:id (SSE stream of task logs)

Available Tools

  • screenshot, move_mouse, click_mouse, scroll, type_text, key_press, open_app
  • run_shell, verify_result, spawn_subtask, spawn_template, done

Verification Tool

  • verify_result supports:
  • file_exists: { path }
  • api_call: { url, method?, expected_status?, expectation? }
  • test: { script, expectation? } → runs in bash
  • vscode_test: { extension_path, test_type: compile|command, command? }

Notes

  • On Linux, run_shell executes your command with /bin/bash -lc and captures stdout/stderr/exitCode.
  • The desktop driver is optional; if unreachable, the retry loop will record the error and continue.
  • Requires Node.js 18+ for global fetch.
Source: README.md, updated 2025-10-03