@xlaunch/cli
v0.2.0-beta.3
Published
xlaunch CLI: profile boot, plugin management, and the browser UI alias
Readme
@xlaunch/cli
Xlaunch is an AI agent that runs on your own computer. Give it a job and it does the work: it reads and writes files, runs the shell, browses the web, hands parts of the job to other agents, and keeps working on a schedule while you are away. This package is the xlaunch command.
npm install -g @xlaunch/cli
xlaunch webxlaunch web starts the Web UI at http://127.0.0.1:3080 and opens it in your browser. On first run it asks for your Xlaunch Gateway address and key. Xlaunch needs Node.js 22.19 or newer. It is a product of Northlatch Labs LLC, released under the MIT licence.
For developers
The xlaunch command is the sole supported Node application launcher: profiles are ordered stacks of plugin-bundle patch layers under the user's own overrides. SDK and ACP are profiles, not separate public bins. The Python runtime wheel packages this same command; the SDK defaults to sdk, and the minimal example selects sdk-minimal. src/args.ts owns the command grammar, and src/bin.ts loads only the selected runner. Invalid commands, options from another mode, configuration errors, and boot failures exit nonzero.
Entry modes
| Command | Purpose |
|---|---|
| xlaunch --profile <name> | Boot the named profile under $XLAUNCH_HOME/profiles/<name>. |
| xlaunch --profile acp | Serve automation clients over ACP stdio until disconnect. |
| xlaunch --profile sdk | Serve SDK clients over JSON-RPC stdio until shutdown or disconnect. |
| xlaunch --profile sdk-minimal | Serve SDK clients with the standalone minimal agent tree. |
| xlaunch web | Alias of --profile web. |
| xlaunch plugin --profile <name> <pnpm args> | Manage a profile's plugins by forwarding to pnpm in the profile directory. |
The invoking directory is the default workspace root. The web, sdk, sdk-minimal, and acp profiles auto-initialize on first use from shipped templates; any other profile must be created through xlaunch plugin.
App arguments
The launcher parses only its own flags and hands everything after them to the booted profile, where any injected app plugin may parse the shared immutable snapshot (xlaunch-cmdline). The first token the launcher does not recognize starts the app's arguments:
xlaunch --profile web --port 8080 # --port belongs to the web app
xlaunch --profile tui --resume <id> # example, assuming the tui profile is installed; --resume belongs to the terminal app
xlaunch --profile sdk # the SDK JSON-RPC server reads its own flags after the launcher flags
xlaunch --profile web --help # the web app's flags, not the launcher's
xlaunch --help # the launcher's own helpProfiles
A profile directory holds a package.json (out-of-tree plugin dependencies plus the profile manifest xlaunch.profile with its ordered bundles list and patchReload lifecycle) and a cordis.patch.yml (the user's own patch layer). patchReload: live watches the profile and home-level patch files; startup applies them once.
The tree composes over an empty root:
- each bundle's patch in
xlaunch.profile.bundlesorder - then the profile's
cordis.patch.yml, then the home-level$XLAUNCH_HOME/cordis.patch.yml - then
--patchoverlays
Bundles named in xlaunch.profile.bundles resolve from the xlaunch installation first (@xlaunch/base, @xlaunch/web-app, @xlaunch/sdk-app, @xlaunch/sdk-minimal, @xlaunch/acp-app), then from the profile's own node_modules, where pnpm installs out-of-tree plugins.
Use --dump-default-config and --dump-config to inspect the composed tree without booting it.
The CLI behavior reference owns exact layer precedence, flags, shutdown behavior, deployment defaults, and source execution.
Optional overlays
config/examples/ ships opt-in overlays for GitHub review webhooks, session-local Schedule, memory MCP servers, and runtime Cordis tools. They are never part of a default profile; the user guides and developer practice guides own setup and safety instructions.
Development
Production runs require built package and frontend artifacts. From the repository root, run pnpm run build separately, then use pnpm xlaunch <args...> to run the TypeScript entry and forward every argument; the source-execution reference owns the module-resolution contract.
