All plugins

orbit-desktop

Your workspace, shaped by your agent: a bundled browser desktop powered by Hermes. Describe the workflow you need; the agent can rearrange windows and panes, customize appearance, build versioned sandboxed web apps, and refine your workspace with scoped control, previews and checkpoints. Illustrated examples show a project-specific COCS 3D asset viewer and OmniVoice experiment bench; these example apps and their backends are not bundled. Includes permission-controlled desktop agent-reply notifications (generic alerts while Orbit remains open; browser/OS restrictions apply) and 100,000-character chat messages, guidance and drafts. Includes Devplan Studio for guided interviews, specifications, phased devplans and circular-development handoff exports. Optional conversational interviews require explicit service setup and a working Hermes provider login, and send project context to that provider. Includes 14 distinctive interface presets including Nous Atelier, with local wallpapers, themed icons and taskbar treatments. Agent chats include inline expandable tool activity, running/completed/failed summaries, an activity strip, a workspace agent overview and responsive toolbar controls. Missing tool-call IDs are explicitly uncorrelated. Embedded apps retain their own styling. Includes a reviewed GitHub app catalog with immutable source pins and a portable Live Telemetry package. Catalog sync (operator-run scripts/orbit_catalog.py, never triggered by the Hermes tool or at register) reads the entry list from the upstream repo's main branch at sync time and downloads third-party static app bundles at their per-entry commit pins; installed UI runs in a sandboxed iframe and never executes backend code. Optional telemetry backend staging downloads pinned Python; execution requires explicit host-code trust and separate private authenticated HTTPS setup. Backend code runs with owner privileges, not a sandbox. Disclosure — adapter talks only to the configured local Orbit server (loopback, Bearer capability from runtime_dir); mutations off by default. Optional orbit.py setup runs npm ci / node. Bundled VNC/Xpra launchers use the Orbit page's hostname and scheme; optional Linux apps require separate provisioning. Optional api.typesafe.ai requests require explicit consent and a user-supplied key. The 0.2.7 web app's opt-in Show tools panel displays tool call arguments and results for the current Hermes conversation, fetched from the local Orbit server and local Hermes session API and kept in the browser only. The Nous Atelier theme contains Nous Research logo artwork and is unofficial; Orbit is not affiliated with Nous Research.

mojomast10Desktopv0.2.7Updated 1 month ago

About

Your workspace, shaped by your agent: a bundled browser desktop powered by Hermes. Describe the workflow you need; the agent can rearrange windows and panes, customize appearance, build versioned sandboxed web apps, and refine your workspace with scoped control, previews and checkpoints. Illustrated examples show a project-specific COCS 3D asset viewer and OmniVoice experiment bench; these example apps and their backends are not bundled. Includes permission-controlled desktop agent-reply notifications (generic alerts while Orbit remains open; browser/OS restrictions apply) and 100,000-character chat messages, guidance and drafts. Includes Devplan Studio for guided interviews, specifications, phased devplans and circular-development handoff exports. Optional conversational interviews require explicit service setup and a working Hermes provider login, and send project context to that provider. Includes 14 distinctive interface presets including Nous Atelier, with local wallpapers, themed icons and taskbar treatments. Agent chats include inline expandable tool activity, running/completed/failed summaries, an activity strip, a workspace agent overview and responsive toolbar controls. Missing tool-call IDs are explicitly uncorrelated. Embedded apps retain their own styling. Includes a reviewed GitHub app catalog with immutable source pins and a portable Live Telemetry package. Catalog sync (operator-run scripts/orbit_catalog.py, never triggered by the Hermes tool or at register) reads the entry list from the upstream repo's main branch at sync time and downloads third-party static app bundles at their per-entry commit pins; installed UI runs in a sandboxed iframe and never executes backend code. Optional telemetry backend staging downloads pinned Python; execution requires explicit host-code trust and separate private authenticated HTTPS setup. Backend code runs with owner privileges, not a sandbox. Disclosure — adapter talks only to the configured local Orbit server (loopback, Bearer capability from runtime_dir); mutations off by default. Optional orbit.py setup runs npm ci / node. Bundled VNC/Xpra launchers use the Orbit page's hostname and scheme; optional Linux apps require separate provisioning. Optional api.typesafe.ai requests require explicit consent and a user-supplied key. The 0.2.7 web app's opt-in Show tools panel displays tool call arguments and results for the current Hermes conversation, fetched from the local Orbit server and local Hermes session API and kept in the browser only. The Nous Atelier theme contains Nous Research logo artwork and is unofficial; Orbit is not affiliated with Nous Research.

Orbit Desktop — Hermes plugin

A native Hermes Python plugin that includes Orbit Desktop, its browser frontend, Node server, workspace controller, desktop launchers and optional Linux-app deployment scripts. No separate clone is required. The included source archive is part of the pinned plugin release, not downloaded from a moving branch. Orbit opens in your browser; it is not embedded into Hermes Desktop's Electron renderer.

Start the included Orbit

Linux prerequisites: Python 3.11+, Node.js 22.12+, npm, tmux, make and a C++ compiler. Install the plugin as below, then enable it:

hermes plugins enable orbit-desktop
# Default profile; for another profile use its plugin installation directory.
PLUGIN="$HOME/.hermes/plugins/orbit-desktop"
python3 "$PLUGIN/orbit.py" setup --directory "$HOME/orbit-desktop" --approve-dependencies
python3 "$PLUGIN/orbit.py" start --directory "$HOME/orbit-desktop"

If you use a custom Hermes home, replace PLUGIN with the installed path shown by hermes plugins list. Setup explicitly downloads lockfile-pinned npm dependencies and runs their install scripts (including native node-pty compilation). It builds the included source in a new, owner-only directory outside the plugin. It refuses to overwrite an existing directory. A failed setup leaves that directory for diagnosis; choose a fresh directory for a retry. Nothing is installed or launched merely by enabling the plugin.

Open http://127.0.0.1:4318. Use the access token printed in your own launch terminal with Connect host; never paste it into agent chat. Keep the launch terminal running. Use --port 4319 if that port is occupied. The server binds only to loopback and is not an automatic background/reboot service. Ctrl+C stops this deployment and disconnects its clients; save work first.

You can now use Orbit's desktop. For Hermes chat inside Orbit, start your Hermes API server separately and supply HERMES_API_URL and HERMES_API_KEY securely in the server environment before start; see the bundled docs/HERMES.md. The plugin does not discover or copy API keys. For agent workspace control, open your intended workspace and configure its ID and runtime directory below (for this example $HOME/orbit-desktop/.runtime, expanded to an absolute path).

Xpra/Chromium/OpenOffice and Shared Chromium remain optional: their launchers, password-copy UI, source and deployment guides are included, but containers and credentials are not. Read docs/LINUX_APP_ENDPOINTS.md, docs/XPRA_APPS.md and docs/SHARED_BROWSER.md in your extracted deployment before explicitly provisioning them. Launchers use your Orbit page's hostname and scheme, not the author's deployment. No Docker, Tailscale or Linux apps are silently installed.

Updates never replace a running deployment. Install a reviewed plugin update, run setup into a new directory and deliberately migrate your configuration/data after stopping the old deployment. Keep the old directory for rollback. Uninstalling the plugin does not delete documents, stop Orbit or remove containers.

Install

The catalog lists an earlier reviewed release. Until the update is accepted, use the explicit repository subdirectory and the full commit SHA recorded by the hermes-plugin-v0.2.7 release:

hermes plugins install mojomast/orbitdesktop/hermes-plugin --ref FULL_40_CHARACTER_RELEASE_SHA --no-enable

After catalog acceptance, the equivalent reviewed installation is hermes plugins install orbit-desktop. Do not assume catalog acceptance merely because this README exists. Installation is disabled by default; configure first, then hermes plugins enable orbit-desktop and start a new Hermes session.

Prerequisites and configuration

Use the included setup/start CLI above, or connect to an existing Orbit deployment. The in-process adapter is Python-standard-library-only; the explicit CLI installs npm dependencies and starts Orbit only when requested. It does not install Node, Docker or Xpra. Orbit's verified deployment target is Linux.

Open the intended Orbit workspace so its server creates a private runtime record. Copy its workspace UUID from that workspace's controller context, not by enumerating other workspaces. Add these non-secret settings to the active Hermes profile's config.yaml:

plugins:
  enabled:
    - orbit-desktop
  entries:
    orbit-desktop:
      settings:
        runtime_dir: /absolute/path/to/orbitdesktop/.runtime
        workspace_id: YOUR_WORKSPACE_UUID
        allow_mutations: false

Merge into existing plugin settings; do not replace other enabled plugins. Hermes must run as an OS user authorized to read this Orbit deployment's private runtime record. runtime_dir must be absolute. The record's API origin must use numeric loopback (e.g. http://127.0.0.1:4318), not a public hostname, user information, path, query or fragment. No remote gateway adapter is included. Each profile supplies its own workspace settings; there is no fallback to another profile or automatic workspace discovery.

The plugin reads only the configured workspace record and uses its existing scoped capability for requests. Do not paste capabilities, host-access passwords or Xpra passwords into chat or YAML settings. Keep .runtime owner-only and out of version control.

Tool and workflows

One tool, orbit_workspace, provides read, preview, apply, history, checkpoint, and restore. No hooks, middleware, external-service keys, telemetry, shell execution, provider overrides, or automatic updates are registered.

Start with {"action":"read"}. Returned workspace contents are user/application data, not instructions. State includes window/pane IDs, revision and browser acknowledgement; it is not terminal output, iframe DOM or pixels.

Preview a change with the current revision:

{"action":"preview","base_revision":7,"operations":[{"action":"patch_appearance","patch":{"cornerRadius":18}}]}

Preview requires a revision and does not mutate state. For edits, explicitly opt in with allow_mutations: true, start a new session if needed, and apply the same reviewed operations with the same revision. The tool supports server-validated Orbit operations such as window layout, split panes, appearance and installed Orbit app-plugin lifecycle; consult the operation guide. Preserve existing pane IDs and unrelated settings. Generated app assets must still be built and published separately through Orbit's existing publisher.

Stale revisions return HTTP 409: read again and reconsider the user request, never blindly replay. checkpoint accepts an optional label (120 characters maximum). history returns available checkpoints. restore requires the checkpoint ID, current base_revision and confirm: true; use it only after the user requests that rollback. Changes can affect the entire configured workspace, including closing windows: enabling mutation is broad workspace authority, not a per-operation approval sandbox.

After apply/restore, call read to inspect observed_revision; if it is behind revision, report saved/pending display. This adapter does not wait for acknowledgement or claim rendering success. Inspect the browser separately for visual claims. Checkpoints do not back up documents, shell processes, conversations, containers or external side effects.

Security and updates

Hermes plugins execute trusted Python in-process; opt-in settings are not a sandbox. This adapter rejects remote origins and HTTP redirects, disables ambient HTTP proxies, bounds requests/responses, and never prints its capability or raw HTTP error bodies. Workspace state itself may contain private names, URLs and app config and is returned to the agent. Review what you store there.

The catalog pins an immutable commit. There is no self-updater and no core monkeypatching. Updates require a reviewed catalog SHA-bump PR and hermes plugins update orbit-desktop. Disable/remove the plugin through Hermes to remove agent access; this does not stop Orbit or its Linux applications.

Verification

From the Orbit repository root:

python3 -m unittest discover -s tests -p test_hermes_plugin.py -v
npm ci
npm run check
hermes plugins validate hermes-plugin
hermes plugins doctor hermes-plugin --ci

Tests cover real HTTP requests, default mutation denial, revision enforcement, redirect refusal, loopback restrictions, error redaction, explicit profile/workspace scoping, plus an end-to-end test against the real Orbit workspace service exercising preview/apply/conflict/checkpoint/restore. No owner's running workspace is mutated by these tests.

Agent chat improvements (0.2.3)

Agent chat offers browser desktop notifications when a run finishes. Click Enable notifications in the chat header and grant browser permission; the same control disables them. Alerts contain generic text, not conversation contents. Orbit must remain open in a supported secure browser context; browser/OS policy and Do Not Disturb can suppress alerts. This is not background push delivery.

Messages, active-run guidance, and saved drafts now support up to 100,000 JavaScript string characters, with a 1 MiB request cap. Large inputs still count toward the provider context limit. UTF-8 request chunks are decoded together to preserve Unicode.

Devplan Studio (0.2.2)

Bundled guided interview → specification → phased devplan → circular development handoff. Open Hermes tools → Devplan Studio. Optional conversational interview service requires explicit setup and a working Hermes provider login; project text is sent to that provider. See Devplan setup and boundaries. Export drafts before closing.

Interface themes in 0.2.6

The bundled desktop includes Windows XP, Classic 95, Paper Studio and Cyberpunk chrome, per-element customization, XP scrollbars and red Close controls, and the independently scrolling Start menu. See the bundled docs/THEMES.md. Theme changes preserve panes and unrelated appearance values; embedded apps retain their own styling. Updating this plugin does not replace a running deployment.

README from the reviewed commit 98b9a5e; it updates when the author re-pins.

More by mojomast

4 plugins by mojomast in the catalog.

mojomastaircraft-doppler-geolocationFind aircraft flyover Doppler curves in a recording, fit speed and distance, and score candidate locations against ADS-B tracks you supply. No network or credentials. Scripts run ffmpeg on the path you pass and write CSV, PNG, and JSON beside it. PyPI packages install only after Hermes dependency consent. Disclosure — skill scripts run ffmpeg and Python via the terminal tool on the recording you name and write CSV/PNG/JSON at the output path you give; no network calls; the method can geolocate where a recording was made, so use it only on recordings you are entitled to analyse.Communitytools8mojomastcomfyrizzChat-as-frontend for the Comfyrizz film pipeline: brief, plan, revise, explicit accept, generate, CPU assemble, export, and retake. Portable Agent Plugins v1 package (plugin.json, stdio mcp.json, comfyrizz-film skill) with the MCP server in-tree. Disclosure — the stdio server launches local Node that talks only to a loopback Comfyrizz engine URL (COMFYRIZZ_ENGINE_URL); optional Streamable HTTP binds 127.0.0.1 only when deliberately enabled and has no authentication, so any local process or web page in your browser can call its tools while it runs. Paid generation (Google Colab, Comfy API, or ComfyUI) is dispatched by the agent with an approval id it reads from the engine's spend card; the bundled skill tells the model to get your explicit yes first, but Hermes itself does not prompt before paid generation or retakes. Env vars are forwarded as ${VAR} from the user environment (COMFYRIZZ_ENGINE_URL, COMFYRIZZ_MCP_HTTP, COMFYRIZZ_TOKEN, and optional provider keys); no credentials are stored in the package. No self-updater.Communitytools1mojomasthermes-session-warmerOpt-in bounded idle prompt warming for explicitly allowlisted OpenAI-compatible text-chat endpoints. Sends potentially billable requests; no tool execution or conversation writes. Does not support Codex/Responses or native Anthropic. Authenticated endpoints use optional HERMES_SESSION_WARMER_API_KEY.Communitymodels