| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| index.js | 2025-10-03 | 47.0 kB | |
| types.js | 2025-10-03 | 54 Bytes | |
| Totals: 2 Items | 47.0 kB | 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_shellexecutes your command with/bin/bash -lcand 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.