Skip to content

feat(engines): openagents — install the launcher from openagents.org - #386

Merged
ralyodio merged 1 commit into
mainfrom
worktree-openagents-engine
Aug 13, 2026
Merged

feat(engines): openagents — install the launcher from openagents.org#386
ralyodio merged 1 commit into
mainfrom
worktree-openagents-engine

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

/install openagents and moshcode install openagents now run the vendor's own installer:

curl -fsSL https://openagents.org/install.sh | bash

What's in the entry

  • bin openagents — the package installs three identical shims (agn, openagents, agent-connector); the descriptive one is the safe pick, and the other two are aliases alongside oa and openagents.org.
  • agentArgs: [] — first entry here that isn't a coding agent. OpenAgents launches and supervises the engines around it, so it has nothing of its own to auto-approve, and a bare launch opens the dashboard is its agent list. /agents openagents and start openagents therefore land in the same place.
  • upgrade: openagents update — its own updater, which knows it was unpacked as a tarball under ~/.openagents rather than installed by npm -g.
  • binDirs — the installer unpacks to ~/.openagents/nodejs and only appends that to a shell rc, so PATH won't see it in the session that ran the install. Same bridge kimi and opencode already have.
  • Not in the ai() headless map — it answers no prompts itself, so ai() names it in the error instead of picking it.
  • No state patterns: the dashboard is a blessed TUI with no wording we've verified, and a guessed pattern is worse than the shared ones.

One caveat, documented in the README and in a comment: the installer ends by offering to pair the machine with a workspace and waits for an answer — but only when stderr is a terminal, and Enter skips it. moshcode install inherits the terminal, so that prompt is the operator's to answer.

Testing

node --test — 1664 pass, 0 fail, 229 skipped. test/engines.test.mjs gained openagents in both the reviewed-agent-args and launch-args tables, so its [] is asserted rather than assumed. Verified moshcode engines, moshcode install usage, and shell completion all list it, and that the resolved install argv is exactly the command above.

🤖 Generated with Claude Code

`/install openagents` (and `moshcode install openagents`) runs the vendor's
own installer, `curl -fsSL https://openagents.org/install.sh | bash`.

It is the first entry here that is not a coding agent: OpenAgents launches
and supervises the engines around it, so it has no approvals to bypass and
no yolo flag. A bare launch opens the dashboard, which is its agent list —
`/agents openagents` and `start openagents` land in the same place — and it
stays out of the ai() headless map because it answers no prompts itself.

The installer unpacks to ~/.openagents/nodejs and only appends that to a
shell rc, so binDirs bridges the session that just ran it, the same way
kimi and opencode do.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

97 finding(s)

HIGH/CRITICAL: 5 | MEDIUM: 41 | LOW: 51

Severity Rule Location
HIGH js-ssrf-outbound-request apps/pwa/public/sw.js:45
HIGH tls-verification-disabled apps/pwa/src/lib/moshpit-gateway.mjs:299
HIGH sh-remote-script-execution install.sh:79
HIGH sh-remote-script-execution install.sh:83
HIGH tls-verification-disabled src/dns.mjs:741
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:61
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:75
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:101
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:265
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:269
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:314
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:499
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:675
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:677
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:736
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:782
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:852
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:955
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:1063
MEDIUM sql-template-interpolation apps/pwa/src/moshpit.mjs:1199
MEDIUM js-unescaped-html-sink apps/pwa/src/routes/moshpit.mjs:1419
MEDIUM js-timing-unsafe-mac-compare apps/pwa/src/routes/settings-sync.mjs:192
MEDIUM js-dynamic-code-execution apps/pwa/test/apikey-mask.test.mjs:129
MEDIUM sql-template-interpolation apps/pwa/test/credits-webhook-event-match.test.mjs:111
MEDIUM sql-template-interpolation apps/pwa/test/credits-webhook-event-match.test.mjs:131
MEDIUM sql-template-interpolation apps/pwa/test/moshpit-terms.test.mjs:192
MEDIUM sql-string-concatenation src/cli-schema.mjs:128
MEDIUM sql-string-concatenation src/cli-schema.mjs:417
MEDIUM sql-string-concatenation src/cli-schema.mjs:543
MEDIUM js-timing-unsafe-mac-compare src/settings-sync.mjs:325
MEDIUM insecure-temp-file test/dns-disable-restore.test.mjs:93
MEDIUM insecure-temp-file test/dns-disable-restore.test.mjs:310
MEDIUM insecure-temp-file test/news.test.mjs:505
MEDIUM insecure-temp-file test/plugins.test.mjs:152
MEDIUM insecure-temp-file test/pty.test.mjs:28
MEDIUM insecure-temp-file test/pty.test.mjs:31
MEDIUM insecure-temp-file test/pty.test.mjs:40
MEDIUM insecure-temp-file test/pty.test.mjs:42
MEDIUM insecure-temp-file test/pty.test.mjs:47
MEDIUM insecure-temp-file test/pty.test.mjs:48
MEDIUM insecure-temp-file test/pty.test.mjs:49
MEDIUM insecure-temp-file test/tabs.test.mjs:8
MEDIUM insecure-temp-file test/tabs.test.mjs:13
MEDIUM insecure-temp-file test/tabs.test.mjs:14
MEDIUM insecure-temp-file test/tabs.test.mjs:22
MEDIUM insecure-temp-file test/trust.test.mjs:240
LOW secret-generic-credential apps/pwa/test/apikey-bearer-scheme.test.mjs:30
LOW secret-generic-credential apps/pwa/test/apikey-mask.test.mjs:38
LOW secret-generic-credential apps/pwa/test/apikey-reveal.test.mjs:35
LOW secret-generic-credential apps/pwa/test/approvals-context.test.mjs:28

…and 47 more. Full results in the Security tab.

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit df4d50e into main Aug 13, 2026
4 checks passed
@ralyodio
ralyodio deleted the worktree-openagents-engine branch August 13, 2026 14:17
@ralyodio ralyodio mentioned this pull request Aug 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant